#include<string>
using namespace std;
struct student{
int id;
string name[5];
int chinese;
int math;
int english;
double average;
}stu[5];
int main( )
{
int i,n,j;
int sum[3];
int ave[3];
struct student s1;
printf("输入 n:");
scanf("%d",&n);
printf("输入学生学号、姓名、成绩\n");
for(i=1;i<=n;i++){
printf("No.%d:",i);
scanf("% d% s% d% d% d",&s1.id,&s1.name,&s1.chinese,&s1.math,&s1.english);
s1.average=(s1.math+s1.english+s1.chinese)/3.0;
printf(" 三科平均成绩:%lf\n",s1.average);
};
for(j = 0;j < n;j++) {
sum[0] += stu[j].chinese;
sum[1] += stu[j].math;
sum[2] += stu[j].english;
ave[0] = sum[0] / 3;
ave[1] = sum[1] / 3;
ave[2] = sum[2] / 3;
}
printf("语文平均分;%d;数学平均分:%d;英语平均分:%d",ave[0],ave[1],ave[2]);
return 0;
}```
运行结果:

错误比较多:
string name[5];---这不对啊,名字为啥用string数组啊? string name或者 char name[20]就可以了
scanf("% d% s% d% d% d",&s1.id,&s1.name,&s1.chinese,&s1.math,&s1.english);
改成
scanf("%d%s%d%d%d",&s1.id,s1.name,&s1.chinese,&s1.math,&s1.english);
#include<string>
using namespace std;
struct student{
int id;
char name[20];
int chinese;
int math;
int english;
double average;
}stu[5];
int main( )
{
int i,n,j;
int sum[3] = {0};
float ave[3] = {0};
printf("输入 n:");
scanf("%d",&n);
printf("输入学生学号、姓名、成绩\n");
for(i=1;i<=n;i++){
printf("No.%d:",i);
scanf("%d%s%d%d%d",&stu[i-1].id,&stu[i-1].name,&stu[i-1].chinese,&stu[i-1].math,&stu[i-1].english);
stu[i-1].average=(stu[i-1].math+stu[i-1].english+stu[i-1].chinese)/3.0;
printf(" 三科平均成绩:%lf\n",stu[i-1].average);
};
for(j = 0;j < n;j++) {
sum[0] += stu[j].chinese;
sum[1] += stu[j].math;
sum[2] += stu[j].english;
}
ave[0] = sum[0] / 3.0;
ave[1] = sum[1] / 3.0;
ave[2] = sum[2] / 3.0;
printf("语文平均分;%.1f;数学平均分:%.1f;英语平均分:%.1f",ave[0],ave[1],ave[2]);
return 0;
}
scanf("%d %s %d %d %d", &s1.id, &s1.name, &s1.chinese, &s1.math, &s1.english);
而且num数组没有初始化,导致算出来的值不对
而且你中间一直用的是s1,就没对stu数组赋值,所以最后也跑不出平均分来
建议自己修改一下
提问中的图片发不出来/(ㄒoㄒ)/~~
运行结果是这样的:
n:5 \学生学号、姓名、成绩 sf. 23, 34, 35 三科平均成绩5742088。0000 No.2::三科平均成绩5742088。0000 No.3三科平均成绩5742088。0000No.4:三科平均成绩5742088。0000 No.5:三科平均成绩5742088。0000语文平均分,2162645;数学平均分:1416948;英语平均分,1416917 fsraxtafter 19. 98 secondsdsw th rturn value 按任 意 继续.