教你夺冠


私信TA

用户名:835685327

访问量:156859

签 名:

相互交流 相互学习

等  级
排  名 15
经  验 22553
参赛次数 0
文章发表 84
年  龄 0
在职情况 学生
学  校 辣鸡施工大学
专  业

  自我简介:

努力刷题 熟能生巧!

花了很长时间才做出来,其实数据处理不难,麻烦的是符合输入输出的规范,存放输出数据的方式。写的有点繁琐,仅供大家参考~

参考代码如下:

#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 人评分

  评论区

  • «
  • »