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

如题所述

#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();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-18
#include<stdio.h>
void main()
{
int num;
float arry[10],sum;
for(num=0;num<10;num++)
{
printf("请输入第%d个学生的成绩:");
scanf("%f",&arry[num]);
sum=0;
sum=sum+arry[num];
printf("\n");
}
printf("十个学生的总成绩为:%4f\n他们的平均成绩是:%4f\n",sum,sum/10);
}
差不多就是这样了,你用VC6.0的平台试一下,这些东西是比较简单的,好好看看谭浩强的那本C语言吧
第2个回答  2012-11-18
#include <stdio.h>
void main()
{
int i,sum;
int a[10];
float average;
sum =0;
printf("please input the score.\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
sum += a[i];
}
average = (float)(sum/10.0);
printf("总分=%d,平均分=%f\n",sum,average);
}

VC6.0下调试通过。
第3个回答  2012-11-18
不知道楼主是否要输入输出提示,我写上去了。
#include<stdio.h>
int main(void)
{
int i;
double mark,sum=0,average;
printf("Enter mark:\n");
for(i=1;i<=10;i++)
{
scanf("%lf",&mark);
sum=sum+mark;
}
average=sum/10;
printf("Sum is %.2f\n",sum);
printf("Average is %.2f\n",average);
return 0;
}
相似回答