#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;
}```
运行结果:

c++问题:功能: 班级成绩表的程序实现 输入:输入n个学生的:学号,姓名,语文,数学,英语成绩 输出n个学生的三科(语数英)平均成绩,班级单科平均成绩。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
CSDN专家-link 2021-09-07 13:21关注错误比较多:
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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 2无用