请各位高手帮我检查一下下面的C 语言哪儿有问题.输出的结果很乱.

来源:百度知道 编辑:UC知道 时间:2024/06/14 19:58:04
编制一个求平均值的函数,试利用该函数分别求出某班每个学生3门课程的平均分,以及每门课程全班的平均分。要求输入不少于5名学生的姓名和成绩。
# include<stdio.h>
# include<math.h>
void main()
{
int x,y;
char name[50][10];
float score1[50],score2[50],score3[50],sub1,sub2,sub3,average[50];
printf("please input'y'\n");
scanf("%d",&y);
for (x=0;x<y;x++)
{printf("please input name and score\n");
scanf("%s,%f,%f,%f",&name[x],&score1[x],&score2[x],&score3[x]);
average[x]=(score1[x]+score2[x]+score3[x])/3;
sub1+=score1[x];sub2+=score2[x];sub3+=score3[x];}
sub1=sub1/y;sub2=sub2/y;sub3=sub3/y;
printf("\n");
for (x=0;x<y;x++){printf("%f %f %f %f %s\n",score1[x],score2[x],score3[x],average[x],name[x]);}
printf("%f %f %f",sub1,sub2,sub3);
}

sub1、sub2、sub3在进行
sub1+=语句之前应该进行初始化
sub1=0;
sub2=0;
sub3=0;

第一个问题:

正如楼上的所说:sub1、sub1、sub3在应用前应该初始化为0.0。

第二个问题:

scanf("%s,%f,%f,%f",&name[x],&score1[x],&score2[x],&score3[x]);
这句有问题,你的输入全部理解为char保存到name[50][10]里了。
一种改法:
scanf("%s",&name[x]);
scanf("%f,%f,%f",&score1[x],&score2[x],&score3[x]);

就可以得到正确结果了。