2301_80117317 2023-11-16 19:18 采纳率: 0%
浏览 11

大一c语言数组练习题总是出错误结果

大一c语言数组练习题,我觉得写的没毛病,但是结果就是不对,球球帮忙看一看。
【问题描述】输入一个整数的数组,按从前到后次序进行分组,每组包含5个数,剩余不足5个数自成一组。分别对每组数计算其平均值。
【输入形式】首先输入数组个数n,再分别输入n个数组元素,数据之间用空格隔开。数组元素不超过50个。
【输出形式】输出求出的若干个平均值,每个数据之间用空格隔开,平均值用double表示,保留两位小数。
【样例输入】8 7 6 5 1 12 4 5 11
【样例输出】6.20 6.67

#include<stdio.h>
int main()
{
    int n,i,r,sum=0,k=0;
    double aver=0;
    scanf("%d ",&n);
    int a[n];
    r=n%5;
    for(i=0;i<n;i++)
    {
        scanf("%d ",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        if(i+1>=5&&(i+1)%5==0)
        {
            sum=a[i+1]+a[i]+a[i-1]+a[i-2]+a[i-3];
            aver=sum/5;
            printf("%.2lf ",aver);
        }
        if(i==n-r)
        {
            sum+=a[i];
            k++;
            aver=sum/k;
            printf("%.2lf ",aver);
        }
    }
    return 0;
}
    


img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-16 22:13
    关注

    【以下回答由 GPT 生成】

    代码存在一些逻辑错误和小错误导致结果不正确
    
    **问题1** 输入格式错误
    - 原因 `scanf` 函数中输入格式设置错误应该去掉空格
    - 解决方案 `scanf("%d ",&n);` 修改为 `scanf("%d",&n);`。
    
    **问题2** 循环逻辑错误
    - 原因在第一个循环中没有正确地将数组元素存入数组中会导致后面的计算出错
    - 解决方案将第一个循环中的 `scanf("%d ",&a[i]);` 修改为 `scanf("%d",&a[i]);`。
    
    **问题3** 平均值计算错误
    - 原因在计算平均值时使用了整数相除结果会取整导致结果不准确
    - 解决方案将计算平均值的公式修改为 `aver=(double)sum/5;`  `aver=(double)sum/k;`,将结果转换为 `double` 类型
    
    **问题4** 循环条件错误
    - 原因在第二个循环中判断条件不准确导致最后一组数的平均值计算错误
    - 解决方案 `if(i==n-r)` 修改为 `if(i>=n-r)`,同时修改 `sum+=a[i];`  `sum+=a[i]; k++;`。
    
    修改后的代码如下
    
    ```c
    #include<stdio.h>
    int main()
    {
        int n,i,r,sum=0,k=0;
        double aver=0;
        scanf("%d",&n);
        int a[n];
        r=n%5;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n;i++)
        {
            if(i+1>=5 && (i+1)%5==0)
            {
                sum=a[i]+a[i-1]+a[i-2]+a[i-3]+a[i-4];
                aver=(double)sum/5;
                printf("%.2lf ",aver);
            }
            if(i>=n-r)
            {
                sum+=a[i];
                k++;
                aver=(double)sum/k;
                printf("%.2lf ",aver);
            }
        }
        return 0;
    }
    

    希望这些修改能够帮助你得到正确的结果。如果问题还存在,请随时询问。 ```



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月16日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题