C语言编程,从键盘输入10个学生的成绩,试统计出他们的成绩总和及平均值,怎么操作?

 我来答
__Bruce_Wang__
2017-12-29 · TA获得超过667个赞
知道小有建树答主
回答量:419
采纳率:25%
帮助的人:334万
展开全部
#include <stdio.h>

#define MAX 10

struct student {
char no[10];
char name[10];
float score[3];
}stu[MAX];

float ave_course[3] = {0};
float ave_student[MAX] = {0};

int max_ave_i = 0; // 存储平均分最高的学生索引
int max_course_i[3] = {0}; //存储单科分数,最高的学生索引

// 录入学生成绩
void input(int n) {
int i;
for(i=0; i<n; i++) {
scanf("%s %s", stu[i].no,stu[i].name);
scanf("%f %f %f", &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
}
}

// 计算平均成绩
void average(int n){
int i,j;
float max_ave = 0.0f;
float max_course[3] = {0};

// 计算每门课的平均成绩
for(i=0; i<n; i++) {
for(j=0; j<3; j++) {
ave_course[j] += stu[i].score[j];

if(max_course[j]<stu[i].score[j]){
max_course[j]<stu[i].score[j];
max_course_i[j] = i;
}
}
}

for(j=0; j<3; j++) {
ave_course[j] /= n;
}

// 计算每个学生的平均成绩
for(i=0; i<n; i++) {
for(j=0; j<3; j++) {
ave_student[i] += stu[i].score[j];
}
ave_student[i] /= 3;
if(max_ave < ave_student[i]) {
max_ave = ave_student[i];
max_ave_i = i;
}
}
}

void main () {
int i,j;

printf("请输入学生的学号 姓名 语文 数学 英语");
input(MAX);

average(MAX);
printf("\n课程的平均成绩是: %6.2f %6.2f %6.2f\n",ave_course[0],ave_course[1],ave_course[2]);

printf("\n学生的平均成绩是: \n");
for(i=0; i<MAX; i++) {
printf(" %s %s %6.2f\n", stu[i].no, stu[i].name, ave_student[i]);
}

printf("平均分,最高的学生:\n");
printf(" 学号=%s, 姓名=%s, 平均分=%6.2f:\n", stu[max_ave_i].no, stu[max_ave_i].name, ave_student[max_ave_i]);

printf("语文,最高分的学生:\n");
i=max_course_i[0];
printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name, stu[i].score[0]);

printf("数学,最高分的学生:\n");
i=max_course_i[1];
printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name, stu[i].score[1]);

printf("英语,最高分的学生:\n");
i=max_course_i[2];
printf(" 学号=%s, 姓名=%s, 成绩=%6.2f:\n", stu[i].no, stu[i].name, stu[i].score[2]);

getchar();
getchar();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式