• C语言程序设计_zju——记录2


    1 判断

    1.1 分段函数,级联的if-else if

    1.2 分段函数,不写成级联的if-else if

    2 循环

    如果没有循环

    2.1 for、do-while、while使用场景

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int x;
     6     int ret = 0;
     7 
     8     scanf("%d", &x);
     9     int t = x;
    10     while ( x > 1 ) {
    11         x /= 2;
    12         ret ++;
    13     }
    14     printf("log2 of %d is %d.", t, ret);
    15 
    16     return 0;
    17 }
    log2x.c

    2.2 算平均数

       

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int sum = 0;
     6     int count = 0;
     7     int number;
     8 
     9     scanf("%d", &number);
    10     while ( number != -1 ) {
    11         sum += number;
    12         count ++;
    13         scanf("%d", &number);
    14     }
    15 
    16     double dsum = sum;
    17     printf("The average is %f.
    ", dsum / count);
    18 
    19     return 0;
    20 }

    2.3 猜数字游戏

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <time.h>
     4 
     5 int main()
     6 {
     7     srand(time(0));
     8     int a = rand();
     9     
    10     printf("%d
    ", a%100);
    11 
    12     return 0;
    13 }
    rand.c

      

     

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int number = rand()%100+1;
     6     int count = 0;
     7     int a = 0;
     8     printf("我已经想好了一个1到100之间的数。");
     9     do {
    10         printf("请猜这个1到100之间数:");
    11         scanf("%d", &a);
    12         if ( a > number ) {
    13             printf("你猜的数大了。");
    14         } else if ( a < number ) {
    15             printf("你猜的数小了。");
    16         }
    17         count ++;
    18     } while (a != number);
    19     printf("太好了,你用了%d次就猜到了答案。
    ", count);
    20 
    21     return 0;
    22 }

    2.4 整数逆序

      

    2.4.1 整数逆序去除零

     

      

    2.4.2 整数逆序不去零

     

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int x;
     6     scanf("%d", &x);
     7     int digit;
     8     int ret = 0;
     9 
    10     while ( x> 0 ) {
    11         digit = x%10;
    12         printf("%d", digit);
    13         ret = ret*10 + digit;
    14         // printf("x=%d,digit=%d,ret=%d
    ", x, digit, ret);
    15         x /= 10;
    16     }
    17     // printf("%d", ret);
    18     
    19     return 0;
    20 }

    2.5 整数分解

    输入:

    1200

    输出:

    0 0 1 2

    #include <stdio.h>
    
    int main()
    {
        int x;
        scanf("%d", &x);
    
        int mask = 1;
        int t = x;
        while ( t>9 ) {
            t /= 10;
            mask *=10;
        } 
        printf("x=%d, mask=%d
    ", x, mask);
        do {
            int d = x / mask;
            printf("%d", d);
            if ( mask > 9 ) {
                printf(" ");
            }
            x %= mask;
            mask /= 10;
        } while ( mask > 0 );
        printf("
    ");
    
        return 0;
    }
    separate.c

    2.6 求最大公约数

    2.6.1 枚举法

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int a,b;
     6     int min;
     7     
     8     scanf("%d %d", &a, &b);
     9     if ( a<b ) {
    10         min = a;
    11     } else {
    12         min = b;
    13     }
    14     int ret = 0;
    15     int i;
    16     for ( i = 1; i < min; i++ ) {
    17         if ( a%i == 0 ) {
    18             if ( b%i == 0 ) {
    19                 ret = i;
    20             }
    21         }
    22     }
    23     printf("%d和%d的最大公约数是%d.
    ", a, b, ret);
    24     
    25     return 0;
    26 }
    gcd_iterate.c

    2.6.2 辗转相除法

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int a,b;
     6     int t;
     7     
     8     scanf("%d %d", &a, &b);
     9     int origa = a;
    10     int origb = b;
    11     while ( b != 0 ) {
    12         t = a%b;
    13         a = b;
    14         b = t;
    15     }
    16     printf("%d和%d的最大公约数是%d.
    ", origa, origb, a);
    17     
    18     return 0;
    19 }
    gcd.c

    2.7 分式求和

    #include <stdio.h>
    
    int main()
    {
        int n;
        int i;
        double ret=0.0;
    
        scanf("%d", &n);
        for ( i=1; i<=n; i++ ) {
            ret += 1.0/i;
        }
        printf("%f
    ", ret);
    
        return 0;
    }
    sumup.c
    #include <stdio.h>
    
    int main()
    {
        int n;
        int i;
        double ret=0.0;
        int sign = 1;
    
        scanf("%d", &n);
        for ( i=1; i<=n; i++ ) {
            ret += 1.0*sign/i;
            sign = -sign;
        }
        printf("%f
    ", ret);
    
        return 0;
    }
    sumupdn.c

     sum+=1.0/i; 除号两边,1.0是浮点数,整形的i也会变成浮点数。

    3 break,continue

    1
     
    以下代码段的输出是:
    int sum = 0;
    for ( int i=0; i<10; i++ ) {
        if ( i%2 ) continue;
        sum += i;
    }
    printf("%d ", sum);
     
    正确答案:20
    2
     
    以下代码段的输出是:
    int sum = 0;
    for ( int i=0; i<10; i++ ) {
        if ( i%2 ) break;
        sum += i;
    }
    printf("%d ", sum);
     
    正确答案:0

    参考资料

    程序设计入门——C语言_浙江大学_中国大学MOOC(慕课) http://www.icourse163.org/course/ZJU-199001

     
  • 相关阅读:
    uva111 History Grading
    UVA 10100Longest Match
    UVA 147Dollars
    归并排序模板
    找礼物(find)
    水流(water)dfs
    细菌(disease) 位运算
    单词接龙
    关于jquery的each遍历,return只终止当前循环,不好使的解决办法
    jquery中ajax回调函数使用this
  • 原文地址:https://www.cnblogs.com/gleamer/p/c2.html
Copyright © 2020-2023  润新知