重拾C,一天一点点_5


switch(表达式){
    case 整型常量表达式:语句序列
    case 整型常量表达式:语句序列
    default:语句序列
}

while(表达式)
    语句

for(表达式1; 表达式2; 表达式3)
    语句
表达式1与表达式3通常是赋值表达式或函数调用;表达式2是关系表达式。这3个组成部分任意部分都可省略,但分号必须保留。如果在for语句中省略表达式1与表达式3,它就退化成了while循环语句。如再省略表达式2,则认为其值永远为真,即成了死循环。
for(;;){
}

 1 #include <stdio.h>
 2 #include <ctype.h>
 3 int atoi1(char s[]);
 4 int atoi2(char s[]);
 5 
 6 main(){
 7     printf("%d\n", atoi2("+111"));        //111
 8     printf("%d\n", atoi2("-111"));        //-111
 9     printf("%d\n", atoi2("    -111"));    //-111
10     
11     printf("%d\n", atoi1("999"));         //999
12     printf("%d\n", atoi1("-999"));         //999
13     return 0;
14 }
15 
16 /***将s转换为整数 版本1***/
17 int atoi1(char s[]){
18     int i;
19     int n = 0;
20     for(i=0; s[i]!='\0'; i++){
21         if((s[i] >= '0') && (s[i] <= '9'))
22         n = n * 10 + s[i] - '0';
23     }
24     return n;
25 }
26 
27 /***将s转换为整数 版本1的升级版***/
28 int atoi2(char s[]){
29     int i, n, sign;
30     //跳过空白符 
31     for(i=0; isspace(s[i]); i++)
32         ;
33     sign = (s[i] == '-') ? -1 : 1;
34     //跳过符号 
35     if(s[i] == '+' || s[i] == '-')
36         i++;
37     for(n=0; isdigit(s[i]); i++){
38         n = 10 * n + (s[i] - '0');
39     }
40     return sign * n;
41 }
View Code

//shell排序算法

 1 #include <stdio.h>
 2 void shellsort(int v[], int n);
 3 
 4 main(){
 5     int arr[] = {1,4,5,10,6,99,7,8,2,9,0,1};
 6     shellsort(arr,12);
 7     
 8     int k;
 9     for(k=0; k<12; k++){
10         printf("%d,", arr[k]);        //0,1,1,2,4,5,6,7,8,9,10,99
11     }
12     return 0;
13 }
14 
15 /*****shellsort,按递增顺序对v[0]...v[n-1]排序*****/ 
16 void shellsort(int v[], int n){
17     int gap, i, j, temp;
18     for(gap=n/2; gap>0; gap/=2){
19         for(i=gap; i<n; i++){
20             for(j=i-gap; j>=0&&v[j]>v[j+gap]; j-=gap){
21                 temp = v[j];
22                 v[j] = v[j+gap];
23                 v[j+gap] = temp;
24             }
25         }
26     }
27 }
View Code

//反转字符串,不产生新串

 1 #include <stdio.h>
 2 #include <string.h>
 3 void reverse(char s[]);
 4 
 5 main(){
 6     char s[] = "abcdefg";
 7     reverse(s);
 8     printf("%s", s);        //gfedcba
 9     return 0;
10 }
11 /*******反转字符串*********/
12 void reverse(char s[]){
13     int c,i,l;
14     for(i=0, l=strlen(s)-1; i<l; i++,l--){
15         c = s[i];
16         s[i] = s[l];
17         s[l] = c;
18     }
19 }
View Code

do
    语句
while(表达式);

1 #include <stdio.h>
2 main(){
3     int i = 10;
4     do{
5         printf("%i\n",i);
6     }while((--i) > 0);    //注意后面的分号
7     return 0;
8 }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM