• 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

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

  • 相关阅读:
    java毕业设计旧衣物捐赠系统(附源码、数据库)
    无框折叠玻璃隔断,上下轨道自由折叠门,集美丽与实用一体,开启空间最大化
    【HTML】HTML网页设计---海贼王动漫前端设计
    EMC测试项目
    GIT无效的源路径/URL
    函数计算|如何使用层解决依赖包问题?
    Springboot 手动分页查询,分批批量插入数据
    最长公共子序列
    C#,人工智能,机器人路径规划(Robotics Pathfinding)DStarLite(D* Lite Algorithm)优化算法与C#源程序
    华为新设备升级示例
  • 原文地址:https://blog.csdn.net/tigerisland45/article/details/128085162