输入2个学生的学号、姓名、语文成绩,要求求出2个学生的平均成绩,以及最高分的学生的数据(包括学号、姓名、语文成绩)
一个实现,供参考:
#include <stdio.h>
#define N 2
struct stu{ //学生信息结构
int id; //学号
char name[20]; //姓名
float chinese; //语文成绩
};
int main(void){
struct stu s[N]; //定义存放学生信息的结构数组
int i=0;
//获取学生信息输入
while(i<N){
printf("请输入第%d个学生的信息(学号,姓名,语文成绩):\n",i+1);
scanf("%d%s%f",&s[i].id,s[i].name,&s[i].chinese);
i++;
}
i=0;
float avg=0; //总平均分
float max=0; //最高分
int maxIndex; //最高分对应的学生数组下标
while(i<N){ //遍历学生信息结构数组
// printf("1\n");
avg += s[i].chinese; //把每个数组里每个学生的语文成绩累加到平均分变量中,等退出循环再进行下一步计算
if(s[i].chinese>max){ //如果当前数组里的语文成绩,则更新最高分及对应的下标
// printf("2\n");
max=s[i].chinese;
maxIndex=i;
}
i++;
}
avg/=N; //把累加的语文成绩除以学生人数即总的语文成绩平均分
// printf("3\n");
//打印结果
printf("%d个学生的平均成绩为:%.2f.\n",N,avg);
printf("最高分学生的信息为:学号:%d 姓名:%s 语文成绩:%.1f.\n ", s[maxIndex].id,s[maxIndex].name,s[maxIndex].chinese);
return 0;
}