美文网首页
C语言学习笔记

C语言学习笔记

作者: Aladdim | 来源:发表于2019-11-15 21:01 被阅读0次

    C语言练习题:循环部分(20题)\color{#4285f4}{更}\color{#ea4335}{丰}\color{#fbbc05}{富}\color{#4285f4}{的}\color{#34a853}{资}\color{#ea4335}{源}

    \color{#00ff83}{Aladdin}

    1.求一正整数限定内所有素数

    \color{#6633FF} { ---- 每天进步一点点,努力改变自己---- }

    /*
        __author__ = 'xiaofeizhang'
        函数作用:求一正整数限定内所有素数 
    */
    
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main(void){
        int num;
        bool isprime = true;
        printf("请输入一个正整数:");
        scanf("%d", &num);
        if(num==0 || num==1){
            printf("%d不是素数", num);
            exit(0);
        }
        
        for (int j=2; j<=num; j++){
            for (int i=2; i<=sqrt(j); i++){
                if (j%i == 0){
                    isprime = false;    
                    break; 
                }
                else{
                    isprime = true;
                }           
            }
            if  (isprime == true){
                printf("%d是素数\n", j);
            }
        }
                
        return 0;
    } 
    
    /*
    请输入一个正整数:100
    2是素数
    3是素数
    5是素数
    7是素数
    11是素数
    13是素数
    17是素数
    19是素数
    23是素数
    29是素数
    31是素数
    37是素数
    41是素数
    43是素数
    47是素数
    53是素数
    59是素数
    61是素数
    67是素数
    71是素数
    73是素数
    79是素数
    83是素数
    89是素数
    97是素数
    
    --------------------------------
    Process exited after 1.651 seconds with return value 0
    请按任意键继续. . .
    */ 
    
    

    2.求一正整数的各个位数显示,并求和

    /*
        __author__ = 'xiaofeizhang'
        函数作用:正整数的各个位数显示,并求和  ``
    */
    
    #include <stdio.h>
    int main(void){
        int num, num_copy, sum=0;
        printf("请输入一个正整数:");
        scanf("%d", &num);
        num_copy = num;
        while(num){
            printf("%d\n", num%10);
            sum += num%10;
            num /= 10;
        }
        printf("%d的各位求和为:%d", num_copy, sum); 
        return 0;
    } 
    
    /*
    请输入一个正整数:123
    3
    2
    1
    123的各位求和为:6
    --------------------------------
    Process exited after 1.567 seconds with return value 0
    请按任意键继续. . .
    */
    

    3.迭代求值

    /*
        __author__ = 'xiaofeizhang'
        函数作用:迭代求值 
    */
    #include <stdio.h>
    int main(void){
        int max, i=0, sum=0, j=0;
        printf("请输入本次迭代的最大值:");
        scanf("%d", &max);
        for(;i<=max; ){
            sum +=i;
            i=i+2;
            j++;
        }
        printf("%d之内的偶数叠加的值为:%d\n", max, sum);
        printf("迭代了%d次", j);    
        return 0;
        } 
    
    /*
    请输入本次迭代的最大值:12
    12之内的偶数叠加的值为:42
    迭代了7次
    --------------------------------
    Process exited after 3.905 seconds with return value 0
    请按任意键继续. . .
    */ 
    

    4.设定次数,猜数字

    /*
        __author__ = 'xiaofeizhang'
        函数作用:有奖竞猜 
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int main(void){
        int num, symbol, max=5;
        srand(time(NULL));
        num = rand()%100+1;
        printf("预设值的结果为:%d\n", num);
        printf("有奖竞猜下:");
        scanf("%d", &symbol);
        for(int i=1; i<=max; i++){
            if (symbol!=num){
                if (symbol>num){
                    printf("小伙子,猜大啦\n");
                    printf("再猜一次:");
                    scanf("%d", &symbol); 
                }
                else{
                    printf("小伙子,猜小啦\n");
                    printf("再猜一次:");
                    scanf("%d", &symbol);
                }
                if (i==max-1){
                    printf("非常抱歉,小伙子,不行呀,在加油吧");    
                }
            }
            else{
                printf("哎呦,不错仅仅花费了%d次,就猜到是%d", i, num);
                break; 
            }
        }
        return 0;   
    } 
    
    /*
    预设值的结果为:81
    有奖竞猜下:31
    小伙子,猜小啦
    再猜一次:53
    小伙子,猜小啦
    再猜一次:70
    小伙子,猜小啦
    再猜一次:81
    哎呦,不错仅仅花费了4次,就猜到是81
    --------------------------------
    Process exited after 19.45 seconds with return value 0
    请按任意键继续. . .
    
    */
    
    

    5.设定次数10次,猜数字

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(void){
        int num, symbol, max=1;
        srand(time(NULL));
        num = rand()%100+1;
        printf("请输入你本次猜的值为:");
        scanf("%d", &symbol);
        while (num!=symbol){
            if (symbol>num){
                printf("小伙子,猜大啦\n");
                printf("再猜一次:");
                scanf("%d", &symbol); 
            }
            else{
                printf("小伙子,猜小啦\n");
                printf("再猜一次:");
                scanf("%d", &symbol); 
            }
            max++;
            } 
        printf("哎呦不错哟,仅仅用了%d次,就猜到我心中的%d了", max, num);
        return 0;
    }
    

    6.实现捐款到10万元,并求得每人平均捐款值

    /* 
        __author__ = 'xiaofeizhang'
        函数作用:实现捐款到10万元,并求得每人平均捐款值 
     */
    #include <stdio.h>
    #include <conio.h>
    int main(){
      float num,total=0,ave;
      int i;
      for(i=1;i<=1000;i++){
        printf("请输入捐款金额:");
        scanf("%f",&num);
        total=total+num;
        if(total>=100000)
          break; 
      }
      ave=total/i;
      printf("捐款人数为:%d,平均捐款数目:%f",i,ave);
      getch();
      return 0;
    }  
    
    /*
    请输入捐款金额:1000
    请输入捐款金额:1230
    请输入捐款金额:3210
    请输入捐款金额:123333
    捐款人数为:4,平均捐款数目:32193.250000
    */ 
    

    7.while循环,实现叠加

    /*
        __author__ = 'xiaofeizhang'
        函数作用:while循环,实现叠加 
    */
    
    #include <stdio.h>
    int main(void){
        int i=0, n, sum=0;
        printf("请输入你想计算叠加数到:");
        scanf("%d", &n);
        while (i<=n){
            sum += i;
            i++;
        }
        printf("%d之内的叠加运算的结果为:%d", n, sum);
        return 0;
    }
    
    /*
    请输入你想计算叠加数到:12
    12之内的叠加运算的结果为:78
    --------------------------------
    Process exited after 4.607 seconds with return value 0
    请按任意键继续. . .
    */
    

    8.计算一个公式

    /*
        __author__ = 'xiaofeizhang'
        函数作用:计算一个公式 
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    int main(void){
        int i, n;
        double result=1;
        
        printf("请输入参数(1-100): ");
        scanf("%d", &n);
        if (n==0){
            printf("本次没包含0在内"); 
            exit(0);
        }
        if (n==1){
            printf("本次计算的结果为:1");
            exit(0); 
        }
        for (i=2; i<=n; i++){
            result = 1.0/(1+result);
        }
        printf("本次计算的结果为:%f", result); 
        return 0;
    }
    
    /*
    请输入参数(1-100): 31
    本次计算的结果为:0.618034
    --------------------------------
    Process exited after 2.53 seconds with return value 0
    请按任意键继续. . .
    
    */
    

    9.斐波那契数列40项

    /*
        __author__ = 'xiaofeizhang'
        函数作用: 斐波那契数列40项 
    */
    
    #include <stdio.h> 
    int main(void){
        int f1=1, f2=1, f3;
        printf("%12d%12d", f1, f2);
        for (int i=3; i<=40; i++){
            f3 = f1+f2;
            f1 = f2;
            f2 = f3;
            printf("%12d", f3);
            if (i%5==0){
                printf("\n");    
            }
        }
        return 0;
    }
    
    /*
               1           1           2           3           5
               8          13          21          34          55
              89         144         233         377         610
             987        1597        2584        4181        6765
           10946       17711       28657       46368       75025
          121393      196418      317811      514229      832040
         1346269     2178309     3524578     5702887     9227465
        14930352    24157817    39088169    63245986   102334155
    
    --------------------------------
    Process exited after 0.02965 seconds with return value 0
    请按任意键继续. . .
    */
    

    10.计算一数的阶乘

    /*
        __author__ = 'xiaofeizhang'
        函数作用: 计算一数的阶乘 
    */
    
    #include <stdio.h>
    int main(void){
        int i,n,result=1;
        printf("说想算多少以内的阶乘:");
        scanf("%d", &n);
        if (n==0){
            printf("0的阶乘为1"); 
        }
        else{
            for (i=1;i<=n;i++){
                result *=i;
            }
            printf("%d的阶乘为:%d", n, result); 
        }
        return 0;
    } 
    
    /*
    说想算多少以内的阶乘:12
    12的阶乘为:479001600
    --------------------------------
    Process exited after 2.506 seconds with return value 0
    请按任意键继续. . .
    
    */
    

    11.计算两个年份之间平年的年数,并输出

    /*
        __author__ = 'xiaofeizhang'
        函数作用:计算两个年份之间平年的年数,并输出 
    */ 
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void){
        int year_min, year_max;
        printf("请输入起始年份:");
        scanf("%d", &year_min);
        printf("请输入终止年份:");
        scanf("%d", &year_max);
        if (year_min>year_max){
            printf("小伙子,算数不好,要好好学呀");
            exit(0);
        }
        for (int i=year_min; i<=year_max; i++){
            if ((i%4==0&&i%100!=0) || (i%400==0)){
                continue;
            }
            else{
                printf("%d是平年\n", i);
            }
        } 
        return 0;
    }
    
    /*
    请输入起始年份:1984
    请输入终止年份:2018
    1985是平年
    1986是平年
    1987是平年
    1989是平年
    1990是平年
    1991是平年
    1993是平年
    1994是平年
    1995是平年
    1997是平年
    1998是平年
    1999是平年
    2001是平年
    2002是平年
    2003是平年
    2005是平年
    2006是平年
    2007是平年
    2009是平年
    2010是平年
    2011是平年
    2013是平年
    2014是平年
    2015是平年
    2017是平年
    2018是平年
    
    --------------------------------
    Process exited after 6.785 seconds with return value 0
    请按任意键继续. . .
    */ 
    

    12.计算一公式

    /*
        __author__ = 'xiaofeizhang'
        函数作用:计算一公式 
    */ 
    
    #include <stdio.h>
    #include <stdlib.h>
    int main(void){
        int m;
        double result=1;
        printf("说,这次想算多少以内的算法1-100: ");
        scanf("%d", &m);
        if (m==0){
            printf("它不在基本的计算中哟");
            exit(0); 
        }
        if (m==1){
            printf("本次计算的结果为:1");
            exit(0); 
        }
        for (int i=2; i<=m; i++){
            result = result - 1.0/(i*i);
        }
        printf("本次计算的结果为:%f", result);
        return 0; 
    } 
    /*
    说,这次想算多少以内的算法1-100: 20
    本次计算的结果为:0.403837
    --------------------------------
    Process exited after 2.763 seconds with return value 0
    请按任意键继续. . .
    
    */
    

    13.do···while实现奇数叠加

    /*
        __author__ = 'xiaofeizhang'
        函数作用:do···while实现奇数叠加 
    */ 
    #include <stdio.h>
    int main(void){
        int i=1, n, sum=0;
        printf("请输入你想计算叠加数到:");
        scanf("%d", &n);
        do {
            sum += i;
            i=i+2;
        }while(i<=n); 
        printf("%d 之内的奇数叠加运算的结果为:%d", n, sum);
        return 0;
    }
    
    /*
    请输入你想计算叠加数到:31
    31 之内的奇数叠加运算的结果为:256
    --------------------------------
    Process exited after 3.213 seconds with return value 0
    请按任意键继续. . .
    */
    

    14.求各项求和的和

    /*
    __author__ = 'xiaofeizhang'
    函数作用:求各项求和的和 
    */
    #include <stdio.h>
    int main(void){
        int n, sum_part=0;
        double sum=0;
        printf("请输入n的取值:");
        scanf("%d", &n);
        for (int i=1; i<=n; i++){
            for (int j=1; j<=i; j++){
                sum_part += j;
            }
            sum += 1.0/sum_part;
            sum_part = 0;       
        }
        printf("和为:%f", sum);   
        return 0;
    }
    
    
    /*
    请输入n的取值:4
    和为:1.600000
    --------------------------------
    Process exited after 8.868 seconds with return value 0
    请按任意键继续. . .
    
    */
    

    15.求解 3x+5y+7z=100的所有非负数整数解

    /*
        __author__ = 'xiaofeizhang'
        函数作用:求解 3x+5y+7z=100的所有非负数整数解 
    */ 
    
    #include <stdio.h>
    int main(void){
        int x, y, z, sum;
        for (x=1; x<=33; x++){
            for(y=1; y<=20; y++){
                for (z=1; z<=14; z++){
                    sum = 3*x+5*y+7*z;
                    if (sum == 100){
                        printf("解为:%d, %d, %d\n", x, y, z);
                    }
                }
            }
        }
        return 0;
    } 
    
    /*
    解为:1, 4, 11
    解为:1, 11, 6
    解为:1, 18, 1
    解为:2, 2, 12
    解为:2, 9, 7
    解为:2, 16, 2
    解为:3, 7, 8
    解为:3, 14, 3
    解为:4, 5, 9
    解为:4, 12, 4
    解为:5, 3, 10
    解为:5, 10, 5
    解为:6, 1, 11
    解为:6, 8, 6
    解为:6, 15, 1
    解为:7, 6, 7
    解为:7, 13, 2
    解为:8, 4, 8
    解为:8, 11, 3
    解为:9, 2, 9
    解为:9, 9, 4
    解为:10, 7, 5
    解为:11, 5, 6
    解为:11, 12, 1
    解为:12, 3, 7
    解为:12, 10, 2
    解为:13, 1, 8
    解为:13, 8, 3
    解为:14, 6, 4
    解为:15, 4, 5
    解为:16, 2, 6
    解为:16, 9, 1
    解为:17, 7, 2
    解为:18, 5, 3
    解为:19, 3, 4
    解为:20, 1, 5
    解为:21, 6, 1
    解为:22, 4, 2
    解为:23, 2, 3
    解为:26, 3, 1
    解为:27, 1, 2
    
    --------------------------------
    Process exited after 0.8456 seconds with return value 0
    请按任意键继续. . .
    */
    

    16.求两个数的最大公约数

    
    /*
    __author__ = 'xiaofeizhang'
    函数功能:求两个整数的最大公约数和最小公倍数(枚举法,辗转消除法,更相减损法) 
    */
    
    #include <stdio.h>
    int main(void){
         
        int m, n, t, minimum_common_multiple;
        printf("请输入第一参数, 第二个参数:");
        scanf("%d, %d", &m, &n);
        minimum_common_multiple = m*n;
        // m中放小的整数,n中放大的整数
        if(m>n){
            t = m;
            m = n;
            n = t;
        }
        
    // %%%%%%%%%%%%%%%%%%%%%%%%   
        // 枚举法
        for(int i=m; i>=1; i--){
            if(n%i==0 && m%i==0){
                printf("枚举法\n");
                printf("%d和%d的最小公倍数数为:%d\n",  m, n, minimum_common_multiple/i);
                printf("%d和%d的最大公约数为:%d\n",  m, n, i);
                printf("\n");
                break;
            }
        } 
        
        // 辗转消除法
        int x, y, tmp;
        
        x = m;
        y = n;
        tmp = 1;
        while(tmp){
            tmp = y%x;
            if (tmp==0){
                printf("辗转消除法\n");
                printf("%d和%d的最小公倍数数为:%d\n",  m, n, minimum_common_multiple/x);
                printf("%d和%d的最大公约数为:%d\n",  m, n, x);
                printf("\n");
            }
            else {
                y = x;
                x = tmp;
            } 
        }
        
        // 更相减损法
        int w, z, a;
        w = m;
        z = n;
        a = 1;
        while(a){
            a = w%z;
            if (a==0){
                printf("更相减损法\n");
                printf("%d和%d的最小公倍数数为:%d\n",  m, n, minimum_common_multiple/z);
                printf("%d和%d的最大公约数为:%d\n",  m, n, z);
                printf("\n");
            }
            else {
                w = z;
                z = a;
            } 
        }
        
        
        return 0;
    }  
    
    /*
    请输入第一参数, 第二个参数:99,120
    枚举法
    99和120的最小公倍数数为:3960
    99和120的最大公约数为:3
    
    辗转消除法
    99和120的最小公倍数数为:3960
    99和120的最大公约数为:3
    
    更相减损法
    99和120的最小公倍数数为:3960
    99和120的最大公约数为:3
    
    
    --------------------------------
    Process exited after 10.33 seconds with return value 0
    请按任意键继续. . .
    
    */
    
    

    17.求一正整数限定内所有素数

    /*
        __author__ = 'xiaofeizhang'
        函数作用:求一正整数限定内所有素数 
    */
    
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    
    int main(void){
        int num;
        bool isprime = true;
        printf("请输入一个正整数:");
        scanf("%d", &num);
        if(num==0 || num==1){
            printf("%d不是素数", num);
            exit(0);
        }
        
        for (int j=2; j<=num; j++){
            for (int i=2; i<=sqrt(j); i++){
                if (j%i == 0){
                    isprime = false;    
                    break; 
                }
                else{
                    isprime = true;
                }           
            }
            if  (isprime == true){
                printf("%d是素数\n", j);
            }
        }
                
        return 0;
    } 
    
    /*
    请输入一个正整数:100
    2是素数
    3是素数
    5是素数
    7是素数
    11是素数
    13是素数
    17是素数
    19是素数
    23是素数
    29是素数
    31是素数
    37是素数
    41是素数
    43是素数
    47是素数
    53是素数
    59是素数
    61是素数
    67是素数
    71是素数
    73是素数
    79是素数
    83是素数
    89是素数
    97是素数
    
    --------------------------------
    Process exited after 1.651 seconds with return value 0
    请按任意键继续. . .
    */ 
    

    18.数列12,22,32,···,202的和

    /*
    __author__ = 'xiaofeizhang'
    函数功能:求数列12,22,32,···,202的和 三种方法(for,while,do···while) 
    */
    
    #include <stdio.h>
    int main(void){
        // for循环 
        int i, sum_for=0;
        for (i=1; i<=20; i++){
            sum_for += 10*i+2;
        }
        printf("for循环求法\n"); 
        printf("数列12,22,32,···,202的和为:%d\n", sum_for);
        printf("\n");
        
        // while循环
        int j=1,  sum_while = 0;
        while(j<=20){
            sum_while += 10*j+2;
            j++; 
        }
        printf("while循环求法\n"); 
        printf("数列12,22,32,···,202的和为:%d\n", sum_while);
        printf("\n");
        
        // do···while循环
        int k=1, sum_do_while = 0;
        do {
            sum_do_while += 10*k+2;
            k++;
        }while(k<=20);
        printf("do···`while循环求法\n"); 
        printf("数列12,22,32,···,202的和为:%d\n", sum_do_while);
    
        return 0;
    }
    
    /*
    for循环求法
    数列12,22,32,···,202的和为:2140
    
    while循环求法
    数列12,22,32,···,202的和为:2140
    
    do···`while循环求法
    数列12,22,32,···,202的和为:2140
    
    --------------------------------
    Process exited after 0.556 seconds with return value 0
    请按任意键继续. . .
    */
    

    19.100-1000之间的水仙花数

    /*
    __author__ = 'xiaofeizhang'
    函数作用:100-1000之间的水仙花数 
    */
    #include <stdio.h>
    int main(void){
        int i, j, k, m, n;
        for (i=100; i<1000; i++){
            j = i/100; // 百分位 
            k = i%100/10; // 十分位 
            m = i%10;  // 个位 
            if (i == j*j*j+k*k*k+m*m*m){
                printf("%d是水仙花数\n", i);
            }
            
        }
        return 0;
    }
    
    /*
    153是水仙花数
    370是水仙花数
    371是水仙花数
    407是水仙花数
    
    --------------------------------
    Process exited after 0.4438 seconds with return value 0
    请按任意键继续. . .
    
    */
    

    20.模拟实现:学生成绩管理系统

    /*
    __author__ = 'xiaofeizhang'
    函数作用:模拟实现:学生成绩管理系统 
    */
    
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    
    int main(void){
        int choice;
        while(1){
            system("cls");
            printf("\t\t\t*********学生成绩管理系统***********\n");
            printf("\t\t\t*     1. 从文件读取学生的成绩      *\n");
            printf("\t\t\t*     2. 添加学生的成绩            *\n");
            printf("\t\t\t*     3. 显示学生的成绩            *\n");
            printf("\t\t\t*     4. 按照姓名查找学生的成绩    *\n");
            printf("\t\t\t*     5. 按照姓名学生的成绩        *\n");
            printf("\t\t\t*     6. 统计学生的总成绩和平均成绩*\n");
            printf("\t\t\t*     7. 统计学生的人数            *\n");
            printf("\t\t\t*     8. 给学生成绩排名            *\n");
            printf("\t\t\t*     9. 保存学生的成绩            *\n");
            printf("\t\t\t*     0. 退出                      *\n");
            
            printf("请输入选项:0-9: ");
            scanf("%d", &choice);
            switch (choice){
                case 0: 
                    printf("谢谢使用\n");
                    exit(0);
                case 1:
                    printf("从文件读取学生的成绩\n");
                    break;
                case 2:
                    printf("添加学生的成绩\n");
                    break;
                case 3:
                    printf("显示学生的成绩\n");
                    break;
                case 4:
                    printf("按照姓名查找学生的成绩\n");
                    break;
                case 5:
                    printf("按照姓名学生的成绩\n");
                    break;
                case 6:
                    printf("统计学生的总成绩和平均成绩\n");
                    break;
                case 7:
                    printf("统计学生的人数\n");
                    break;
                case 8:
                    printf("给学生成绩排名\n");
                    break;
                case 9:
                    printf("保存学生的成绩\n");
                    break;
                default:
                    printf("\n输入不对\n");
                    break; 
            } 
        printf("按任意键继续...\n");
        getch();
        }
        return 0;
    } 
    
    /*
                          
    
                            *********学生成绩管理系统***********
                            *     1. 从文件读取学生的成绩      *
                            *     2. 添加学生的成绩            *
                            *     3. 显示学生的成绩            *
                            *     4. 按照姓名查找学生的成绩    *
                            *     5. 按照姓名学生的成绩        *
                            *     6. 统计学生的总成绩和平均成绩*
                            *     7. 统计学生的人数            *
                            *     8. 给学生成绩排名            *
                            *     9. 保存学生的成绩            *
                            *     0. 退出                      *
    请输入选项:0-9: 3
    显示学生的成绩
    按任意键继续...
    
    */ 
    
    

    相关文章

      网友评论

          本文标题:C语言学习笔记

          本文链接:https://www.haomeiwen.com/subject/rbzsictx.html