以下是使用结构体数据类型编程,运行后出现错误,请问该怎么修改?

某班有20名学生,每名学生的数据包括学号、姓名、3门课程的成绩。从
键盘输入20名学生数据,并打印出3门课程总平均成绩,以及最高分的学生的数据(包括
学号、姓名、3门课成绩、平均成绩)。使用结构体数据类型编程。
#include<stdio.h>
struct grade
{
int sub1;
int sub2;
int sub3;
};
struct data
{
int num;
char name[20];
struct grade subject;
}stu[20],*p;
int main()
{
int i,j,average;
for(i=0;i<20;i++)
{
printf("\n Enter all data of student(%d):\n",i+1);
scanf("%d,&s,%d,%d,%d",&stu[i].num,stu[i].name,&stu[i].subject.sub1,&stu[i].subject.sub2,&stu[i].subject.sub3);
}
for(i=0;i<20;i++)
{
printf("stu[%d]GPA:%d",i+1,(stu[i].subject.sub1+stu[i].subject.sub2+stu[i].subject.sub3)/3);
}
j=(stu[0].subject.sub1+stu[0].subject.sub2+stu[0].subject.sub3)/3;
for(i=0,p=&stu[0];i<20;i++)
{
average=(stu[i].subject.sub1+stu[i].subject.sub2+stu[i].subject.sub3)/3;
if(average>j)
{
j=(stu[i].subject.sub1+stu[i].subject.sub2+stu[i].subject.sub3)/3;
p=&stu[i];
}
}
printf("num:%d,name:%s,grade:%d,%d,%d,average:%d",(*p).num,(*p).name,(*p).subject.sub1,(*p).subject.sub2,(*p).subject.sub3,j);
return 0;
}
哪里出错了

森林海
浏览 194回答 1
1回答

偶然的你

C++的结构体成员默认是私有的,所以不能直接访问,可以struct grade{int sub1;int sub2;int sub3;};struct data{int num;char name[20];struct grade subject;}stu[20],*p;这个改为struct grade{public:int sub1;int sub2;int sub3;};struct data{public:int num;char name[20];struct grade subject;}stu[20],*p;
打开App,查看更多内容
随时随地看视频慕课网APP