• EDUCoder编程练习题解(循环二)


    编辑与调试    顺序结构    选择结构一    选择结构二    循环一     循环二    函数
    递归与嵌套函数     一维数组和二维数组     字符数组      指针一    指针二     结构体      文件

    循环二

    第1关:C循环-求平均成绩
    任务描述
    本关任务:编写一个程序,输入学生人数和每个人的成绩,计算平均成绩。
    ######注意:当输入的学生人数小于等于0时,输出平均成绩为0分!
    测试说明
    以下是测试样例:
    输入:3 90 70 80
    输出:the number of students:the scores:average=80.00
    输入:-1
    输出:the number of students:the scores:average=0.00
    输入:4 78.5 26 73.6 90.1
    输出:the number of students:the scores:average=67.05

    解题程序

    /* C循环-求平均成绩 */
    
    #include
    int main(void)
    {
        /*********Begin*********/
        int n, i;
        float sum = 0, score;
    
        scanf("%d", &n);
    
        if(n <= 0) {
            printf("the number of students:the scores:average=0.00\n");
        } else {
            for(i = 1; i <= n; i++) {
              scanf("%f", &score);
              sum += score;
            }
    
            printf("the number of students:the scores:average=%.2f\n", sum / n);
        }
    
    
        /*********End**********/
        return 0;
    }
    
    • 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

    第2关:C循环-求各位数字之积
    任务描述
    本关任务:计算正整数num的各位上的数字之积。
    例如:

    输入:2583 经过—-(2x5x8x3) 输出:240

    输入:102 经过—-(1x0x2) 输出:0

    输入:136 经过—-(1x3x6) 输出:18
    测试说明
    以下是测试样例:

    输入:120
    输出:0
    输入:314
    输出:12
    输入:1952
    输出:90

    解题程序

    /* C循环-求各位数字之积 */
    
    #include
    int main(void)
    {  
    	/*********Begin*********/
    	int n, p = 1;
    
        scanf("%d", &n);
    
        while(n) {
            p *= n % 10;
            n /= 10;
        }
    
        printf("%d\n", p);
    	  
    	/*********End**********/ 
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    第3关:C循环-求阶乘之和
    任务描述
    本关任务:编写一个程序,任意输入n,求S=1!+2!+…+n!。
    注意:n!表示n的阶乘。0的阶乘等于1,负数的阶乘等于0。
    提示:(n+1)!=n!(n+1)*
    例如:
    输入:10
    输出:4037913

    输入:7
    输出:5913

    输入:-1
    输出:0

    测试说明
    以下是测试样例:

    输入:10
    输出:4037913
    输入:1
    输出:1
    输入:-5
    输出:0

    解题程序

    /* C循环-求阶乘之和 */
    
    #include
    int main(void)
    {  
    	/*********Begin*********/
    	int n, t = 1, sum = 0, i;
    
        scanf("%d", &n);
    
        if(n > 0) {
            for(i = 1; i <= n; i++) {
                t *= i;
                sum += t;
            }
        }
    
        printf("%d\n", sum);
    	  
    	/*********End**********/ 
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    第4关:C循环-水仙花数
    任务描述
    本关任务:求出所有的水仙花数

    提示:所谓水仙花数是指一个三位数,其各位数字的立方和等于该数字本身。比如153是一个水仙花数,因为153=13+53+3^3。

    注意:本题不需要输入语句,由于网站限制要求一定要有输入输出示例,但同学们可以对输入部分忽略不计。
    例如:
    370就是一个水仙花数,因为370 = 3^3 +7^3 + 0^3

    测试说明
    以下是测试样例:

    输入: 1
    输出:153 370 371 407

    解题程序

    /* C循环-水仙花水花数 */
    
    #include
    int main(void)
    {
      /*********Begin*********/
      int i, a, b, c;
      for(i = 100; i <= 999; i++) {
          a = i / 100;
          b = i / 10 % 10;
          c = i % 10;
          if(a * a * a + b * b * b + c * c * c == i)
            printf("%d ", i);
      }
      printf("\n");
    
      /*********End**********/
       return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    第5关:C循环-寻找完数
    任务描述
    本关任务:一个数如果恰好等于它的因子之和,这个数就称为”完数”。 例如,6的因子为1、2、3,而6=1+2+3,因此6是”完数”。 编程序找出1000之内的所有完数。

    输入
    1000

    输出
    编程序找出1000之内的所有完数,每个完数占一行。

    测试说明
    输入:1000
    输出:
    6
    28
    496

    解题程序:

    /* 第5关:C循环-寻找完数 */
    
    #include
    int main(void)
    {  
        /*********Begin*********/
    	int i, j;
        for(i = 2; i <= 1000; i++) {
            int sum = 0;
            for(j = 1; j <= i / 2; j++)
                if(i % j == 0) sum += j;
            if(sum == i)
                printf("%d\n", sum);
        }
    	  
    	/*********End**********/ 
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    第6关:分数求和
    任务描述
    本关任务:编写程序计算 1 - 1/2 + 1/3 - 1/4 + … +1/99 - 1/100 的值,并显示出来(保留结果为小数点后三位)。

    测试说明
    平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。

    解题程序:

    /* 第6关:分数求和 */
    
    #include
    
    #define N 100
    
    int main(void)
    {  
    	/*********Begin*********/
        int i, sign = 1;
        float sum = 0;
    
    	for(i = 1; i <= N; i++)
            sum += sign * 1.0 / i, sign = -sign;
    
        printf("%.3f\n", sum);   
    	  
    	/*********End**********/ 
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    编辑与调试    顺序结构    选择结构一    选择结构二    循环一     循环二    函数
    递归与嵌套函数     一维数组和二维数组     字符数组      指针一    指针二     结构体      文件

  • 相关阅读:
    昇思25天学习打卡营第15天 | Vision Transformer图像分类
    离职原因千万不要这样说!
    【Linux】安装配置解决Centos&MobaXterm的使用及Linux常用命令&命令模式
    系列十二、Redis的主从复制
    k8s部署python3项目
    精神分裂型患者大脑结构和功能连接的改变
    leetcode:1974. 使用特殊打字机键入单词的最少时间(python3解法)
    生成式模型和判别式模型
    FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
    将自己的代码发布成可以pip安装的包
  • 原文地址:https://blog.csdn.net/tigerisland45/article/details/128085162