满意答案
zjmsq
2013.12.25
采纳率:55% 等级:11
已帮助:5399人
你的程序有两个问题:
一个是学号的储存,一个是学生总分的储存,学号只是一个号码,并不能以数组的形式储存,而你的程序中用来储存学号的是int name[10],这是不正确的。
另一个,你虽然在结构中定义了sum来储存总分,但并没有在主函数的语句中给stu[i].sum进行任何形式的赋值,且计算sum总分的for循环少了括号。当for循环执行的语句超过或等于两句时,需要用括号括起来。
修改后如下:
struct student
{
int num; //将num[10]改成num来储存学号,因为学号一般只是一个数字
char name[10];
float sco[2];
float aver;
float sum;
};
main()
{
struct student stu[3];
int i,j;
float max,sum,aver;
for(i=0;i<3;i++)
{
scanf("%d%s",&stu[i].num,stu[i].name);
sum=0;
for(j=0;j<2;j++)
{ //此处增加了花括号
scanf("%f",&stu[i].sco[j]);
sum=sum+stu[i].sco[j];
}
stu[i].sum=sum; //此处将总分存入了结构中存总分的变量中
stu[i].aver=sum/2;
}
max=stu[0].aver;
for(i=0;i<3;i++)
if(stu[i].aver>max) max=stu[i].aver;
printf("%d%s",stu[i].num,stu[i].name);
printf("%f",stu[i].sum);
}
11分享举报