注册 登录
编程论坛 C语言论坛

下面这个程序中哪个步骤是错误的

黑暗骑士5D 发布于 2019-11-25 19:48, 2842 次点击
以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序执行后的运行结果不正确,调试中发现有一条语句在程序中的位置不正确,这条语句是哪一条?(  )

#include <stdio.h>
int main()
{
    int n,k;
    float score,sum,ave;
    sum=0.0;
    for(n=1; n<=10; n++)
    {
        for(k=1; k<=4; k++)
        {
            scanf("%f", &score);
            sum+=score;
        }
        ave=sum/4.0;
        printf("第%d位学生的平均分是%f\n",n,ave);
    }
    return 0;
}
8 回复
#2
c鳌白2019-11-25 20:35
ave未初始化
#3
forever742019-11-25 20:51
sum=0.0;
#4
bcbbcclbbc2019-11-25 22:42
回复 2楼 c鳌白
有些变量不一定需要初始化,使用或输出之前赋个值就好了;         
ave=sum/4.0;

sum为四门课程的总成绩。因为每个学生的成绩不同,所以需要在每次循环前初始化      
sum=0;
#5
葵青2019-11-25 23:27
#include <stdio.h>
int main()
{
    int n,k;
    double score,ave,sum=0.0;
    for(n=1; n<=10; n++)
    {
        for(k=1; k<=4; k++)
        {
            scanf("%lf", &score);
            sum+=score;
        }
        ave=sum/4.0;
        printf("第%d位学生的平均分是%lf\n",n,ave);
    }
    return 0;
}
#6
wangxinbozj2019-12-02 21:12

#include <stdio.h>
 int main()
 {
     int n,k;
     float score,sum,ave;
     for(n=1; n<=10; n++)
     {
         sum=0.0;
         for(k=1; k<=4; k++)
         {
             scanf("%f", &score);
             sum+=score;
         }
         ave=sum/4.0;
         printf("第%d位学生的平均分是%f\n",n,ave);
     }
     return 0;
 }


sum=0;语句需要放到第一个for语句里。
#7
rjsp2019-12-03 08:59
为什么不按照C标准建议的那样 ------ 不将局部标识名污染到外界 ------ 规规矩矩地写代码?

程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned i=0; i!=10; ++i )
    {
        double sum = 0.0;
        for( unsigned j=0; j!=4; ++j )
        {
            double score;
            scanf( "%lf", &score );
            sum += score;
        }

        double avg = sum/4.0;
        printf( "第%u位学生的平均分是%f\n", i+1, avg );
    }
}

#8
forever742019-12-03 12:46
r版您定义avg的位置是++范儿。
#9
rjsp2019-12-03 13:34
以下是引用forever74在2019-12-3 12:46:30的发言:

r版您定义avg的位置是++范儿。

不是啊,是标准C语言的语法。
可以在 https:// 上测试一下,记得选择C语言(默认是C++语言)
1