更如. 2022-01-07 23:11 采纳率: 66.7%
浏览 52
已结题

你好,请问代码运行结果不正确是什么问题呢

/* 编写一个程序, 提示用户输入 3 组数, 每组数包含 5 个 double 类型的数(假
设用户都正确地响应, 不会输入非数值数据)。该程序应完成下列任务。
a.把用户输入的数据储存在 3×5 的数组中
b.计算每组(5 个)数据的平均值
c.计算所有数据的平均值
d.找出这 15 个数据中的最大值*/
#include<stdio.h>
int main()
{
int i,j;
//double a[5],b[5],c[5];
double alt[3][5];
double sum[3] = { 0,0,0 },sum_alt=0;
double aver[3],aver_alt;
//double aver_a, aver_b, aver_c, aver_alt;
printf("please input three groups number which have five numbers:\n");
for (i = 0; i < 3; i++)
{printf("the NO.%d group is:\n", i+1);
for(j=0;j<5;j++)
scanf_s("%lf", &alt[i][j]);
}//超过两行加括号
//alt[3][5] = a[1] + a[2] + a[3];
for (i = 0; i < 3; i++)
for (j = 0; j < 5; j++)
sum[i] = sum[i] + alt[i][j];
for (i = 0; i < 3; i++)
{
aver[i] = sum[i] / 3;
sum_alt = sum_alt + sum[i];
printf("the NO.%d average is %5.2lf\n", i+1, aver[i]);
}
aver_alt = sum_alt / 3;
printf("the altogher average is %5.2lf", aver_alt);//sum_alt / 3);
return 0;
}

  • 写回答

3条回答 默认 最新

  • 关注

    (1)aver[i] = sum[i] / 3; 这里应该是除以5,不是除以3
    (2)你没有求最大值。
    (3)aver_alt = sum_alt / 3; //这里除以15,不是除以3
    代码修改如下:

    #include<stdio.h>
    int main()
    {
        int i,j;
        //double a[5],b[5],c[5];
        double alt[3][5];
        double sum[3] = { 0,0,0 },sum_alt=0;
        double aver[3],aver_alt;
        double maxv;
        //double aver_a, aver_b, aver_c, aver_alt;
        printf("please input three groups number which have five numbers:\n");
        for (i = 0; i < 3; i++)
        {
            printf("the NO.%d group is:\n", i+1);
            for(j=0;j<5;j++)
            {
                scanf_s("%lf", &alt[i][j]);
                //求最大值
                if(i==0 && j==0)
                    maxv = alt[i][j];
                else
                {
                    if(alt[i][j]>maxv)
                        maxv = alt[i][j];
                }
            }
        }//超过两行加括号
        //alt[3][5] = a[1] + a[2] + a[3];
        for (i = 0; i < 3; i++)
            for (j = 0; j < 5; j++)
                sum[i] = sum[i] + alt[i][j];
        for (i = 0; i < 3; i++)
        {
            aver[i] = sum[i] / 5; //这里是除以5
            sum_alt = sum_alt + sum[i];
            printf("the NO.%d average is %5.2lf\n", i+1, aver[i]);
        }
        aver_alt = sum_alt / 15; //这里除以15
        printf("the altogher average is %5.2lf\n", aver_alt);//sum_alt / 3);
    
        //显示最大值
        printf("max=%g\n",maxv);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月7日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。