花了很长时间才做出来,其实数据处理不难,麻烦的是符合输入输出的规范,存放输出数据的方式。写的有点繁琐,仅供大家参考~
参考代码如下:
#include <stdio.h> int main() { //1 定义一个数组,存放该数列的全部元素 int arr[100]; int i; for (i = 0; i < 100; i++) { arr[i] = 2 + i * 2; } //2 定义一个二维数组存放结果,方便最后输出打印,假设输入不超过10组。 int res[10][100] = { 0 }; //先将数组所有元素初始化为0 int r = 0; //定义一个下标表示该数组的组数,方便存放结果和打印输出 //3 处理输入的每组数据,碰到文件尾结束输入 int n, m; while (scanf("%d %d", &n, &m) != EOF) { int sumindex = 0; //对于每组输入,处理该数列中的元素的下标都初始为0 int sum = 0; //每处理m个数时的总和 int tmp[100]; //存放该组结果的临时数组 int tmpindex = 0; //该临时数组的下标 //以下是主要的计算数据过程 while (n >= m) { for (i = 0; i < m; i++) { sum += arr[sumindex++]; } tmp[tmpindex++] = sum / m; sum = 0; n = n - m; } if (n != 0) //若n!=0,则说明还有最后几个数没有处理 { for (i = 0; i < n; i++) { sum += arr[sumindex++]; } tmp[tmpindex++] = sum / n; } //将获得的该组的结果拷贝进结果数组res中 for (i = 0; i < tmpindex; i++) { res[r][i] = tmp[i]; } r++; //存放完成之后组数+1 } //4 将获得的r组结果全部输出 int j, k; for (j = 0; j < r; j++) { for (k = 0; res[j][k] != 0; k++) { printf("%d ", res[j][k]); } printf("\n"); } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题11.11 (C语言代码)浏览:768 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:691 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:628 |
C二级辅导-同因查找 (C语言代码)浏览:579 |
C语言训练-大、小写问题 (C语言代码)浏览:724 |
Wu-求圆的面积 (C++代码)浏览:1883 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:774 |
打印十字图 (C语言代码)浏览:2701 |
sizeof的大作用 (C语言代码)浏览:1448 |
字符串比较 (C语言代码)浏览:680 |