• C语言期末复习题(上)


    1. 输入两个正整数,m和n,求其最大公约数和最小公倍数。

    test01() {
        int m, n;
        int gy = 0, gb = 0;
        printf("请输入输入两个正整数:(m,y)\n");
        scanf("%d,%d", &m, &n);;
        for (gy = m; gy >= 1; --gy) {
            if (m % gy == 0 && n % gy == 0)
                break;
        }
        gb = m * n / gy;
        printf("%d,%d的最小公倍数为:%d,最大公约数为:%d", m, n, gb, gy);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. 输入一个正整数n,计算下列算式的前n项之和。s=1-1/3+1/5-1/7+…

    test02() {
        int b, flag, i, n;//b分母,flag正负号标志
        double item, sum;//item项数
        printf("请输入计算到第几项的和n的值:\n");
        scanf("%d", &n);
        b = 1;
        flag = 1;
        sum = 0;
        for (i = 1; i <= n; i++, b += 2) {
            item = flag * (1.0 / b);//1.0为分子
            sum = sum + item;
            flag *= -1;//改变每项的正负
        }
        printf("Sum=%.2f\n", sum);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3. 为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法

    居民应交水费y(元)与月用水量x(吨)的函数关系式如下(设x≥0)。
    y= x/3 0≤x≤15
    y= 2.5x-10.5 x>15
    输入用户的月用水量x(吨),计算并输出该用户应支付的水费y(元)(保留2位小数)。

    float x;
        float y;
        printf("请输入月用水量\n");
        scanf("%f", &x);
        if (x >= 0 && x <= 15) {
            y = x / 3;
        } else if (x > 15.0) {
            y = 2.5 * x - 10.5;
        } else {
            printf("您输入的数据有误请重新检查");
            return 0;
        }
        printf("该用户应该支付的水费%.2f元", y);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4. 要求用switch语句编程设计一个简单的计算器程序

    要求根据用户从键盘输入的表达式
    操作数1 运算符op 操作数2
    计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。

    test04(float x, char op, float y) {
        float z;
        switch (op) {
            case '+':
                z = x + y;
                printf("%f + %f = %.2f\n", x, y, z);
                break;
            case '-':
                z = x - y;
                printf("%f - %f = %.2f\n", x, y, z);
                break;
            case '*':
                z = x * y;
                printf("%f * %f = %.2f\n", x, y, z);
                break;
            case '/':
                if (y == 0) {
                    printf("被除数不能为0");
                } else {
                    z = x / y;
                    printf("%f / %f = %.2f\n", x, y, z);
                }
                break;
            default:
                printf("输出正确的运算符!\n");
        }
    }
    
    
    main() {
        float x, y;
        char op;
        printf("Please enter the expression:\n");
        scanf("%f%c%f", &x, &op, &y);
        getchar();
        test04(x, op, y);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    5. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前10项之和。

    test05() {
        int i;
        double temp[10], x[10] = {2}, y[10] = {1}, sum = 0;
        for (i = 0; i < 10; ++i) {
            temp[i] = x[i] / y[i];
            if (i < 9) {
                x[i + 1] = x[i] + y[i];
                y[i + 1] = x[i];
            }
        }
        for (i = 0; i < 10; ++i) {
            printf("%.0f/%.0f\t", x[i], y[i]);
            sum += temp[i];
        }
        printf("\n%.2f", sum);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    6. 给定10个整数,求最大值。

    test06() {
        int arr[10];
        printf("输入十个整数 Enter输入下一个\n");
        for (int i = 0; i < 10; ++i) {
            scanf("%d", &arr[i]);
        }
        int len = sizeof(arr) / sizeof(arr[0]);
        for (int i = 0; i < len; ++i) {
            for (int j = 0; j < len - i - 1; ++j) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        printf("最大的数为%d",arr[9]);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    7. 输入4个整数,要求按由大到小的顺序输出

    test07() {
        int arr[4];
        for (int i = 0; i < 4; ++i) {
            scanf("%d", &arr[i]);
        }
        int len = sizeof(arr) / sizeof(arr[0]);
        for (int i = 0; i < len; ++i) {
            for (int j = 0; j < len - i - 1; ++j) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for (int i = len - 1; i >= 0; --i) {
            printf("%d ", arr[i]);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    8. 求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。

    例如:2+22+222+2222+22222(n=5),n由键盘输入。

    test08() {
        int a, n;
        printf("请输入原始的数字和输入要相加的个数\n");
        scanf("%d %d", &a, &n);
        int temp = 0;
        int sum = 0;
        for (int i = 0; i < n; i++) {
            temp += a * pow(10, i);
            sum += temp;
        }
        printf("%d\n", sum);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    9. 求1!+2!+3!+4!+5!+…+10!要求利用递归函数完成

    int factorial(int n) {
        if (n == 1) {
            return 1;
        }
        return n * factorial(n - 1);
    }
    test09() {
        int sum=0;
        for (int i = 1; i <= 10; ++i) {
            sum+=factorial(i);
        }
        printf("%d",sum);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    10. 打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=13+53+33

    test10() {
        for (int i = 1; i <= 999; ++i) {
            int a = i / 100;
            int b = i % 100 / 10;
            int c = i % 10;
            if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) {
                printf("%d\n", i);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    11. 一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时共经过多少米?第10次反弹多高?

    test11(){
        double total_m = 100.0;
        double total_sum = 0.0;
        for (int i = 0; i < 10; i++)
        {
            total_sum += total_m;
            total_m /= 2;
            total_sum += total_m;
        }
        total_sum -= total_m;
        printf("小球总共经历%lf米, 第10次反弹%lf米\n", total_sum, total_m);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    12. 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

    test12() {
        int i;
    
        int x = 1;
    
        for (i = 9; i >= 1; i--) {
    
            x = (x + 1) * 2;
    
        }
        printf("第一天共摘了桃子为:%d", x);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    13. 求100之内的素数

    test13() {
        int num = 2;
        while (num <= 100) {
            int flag = 1;
            int i = 2;
            while (i < num) {
                if (num % i == 0) {
                    flag = 0;
                    break;
                }
                i++;
            }
            if (flag) {
                printf("素数为:%d\t", num);
            }
            num++;
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    nexus创建Maven私服图文教程
    智能AI系统ChatGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型
    五、数学建模之层次分析法
    研究生学姐给计算机专业萌新的10个建议
    线程的三种创建方式
    04-Redis哨兵高可用架构
    axios入门
    Android绘图学习(一)
    Spring02之面向切面【进阶版】
    java毕业设计智慧问诊系统Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/qq_51495235/article/details/127620855