zoukankan      html  css  js  c++  java
  • 重拾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
    ", atoi2("+111"));        //111
     8     printf("%d
    ", atoi2("-111"));        //-111
     9     printf("%d
    ", atoi2("    -111"));    //-111
    10     
    11     printf("%d
    ", atoi1("999"));         //999
    12     printf("%d
    ", 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]!=''; 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
    ",i);
    6     }while((--i) > 0);    //注意后面的分号
    7     return 0;
    8 }

  • 相关阅读:
    获取linux内核的配置项(包含模块module)_转
    PPP或PPPOE身份验证PAP和CHAP
    iptables用法
    谁能当IBM公司的CEO?
    雷军失势小米痛哭_小米总喜欢花小钱办大事,然后就总是办不好事
    高并发TCP连接数目问题
    Linux定时任务Crontab命令详解_转
    树莓派3B+首次登陆通过网络
    tar包解压后用户名改变
    一些软件设计的原则_转
  • 原文地址:https://www.cnblogs.com/lltong/p/3378701.html
Copyright © 2011-2022 走看看