原题链接:偶数求和
花了很长时间才做出来,其实数据处理不难,麻烦的是符合输入输出的规范,存放输出数据的方式。写的有点繁琐,仅供大家参考~
参考代码如下:
#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语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复