ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

学生成绩统计(利用结构体

2026/9/20 18:45:17 拓冰建站 浏览量
学生成绩统计(利用结构体

实验内容:试编写一个程序完成:有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
实验要求:(1)要求用一个input函数输入5个学生数据;应一个average函数求平均分;用max函数求出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。(2)输入事先已编好的程序,并运行该程序。分析运行结果是否正确。

#include<stdio.h>
#define N 5
struct student
{char num[6];char name[8];float score[3];float avr;
}stu[N];
int main()
{int i,j,maxi;float sum,max,average;//max当前最好成绩,maxi当前最好成绩的下标序号,sum第i个学生的总成绩 //输入数据for(i=0;i<N;i++){printf("input scores of students %d:\n",i+1);printf("NO.:");scanf("%s",stu[i].num);printf("name:");scanf("%s",stu[i].name);for(j=0;j<3;j++){printf("score %d:",j+1);scanf("%f",&stu[i].score[j]);}}//计算average=0;max=0;maxi=0;for(i=0;i<N;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];//计算第i个学生的总分 stu[i].avr=sum/3.0;//计算第i个学生的平均分 average+=stu[i].avr;if(sum>max)//找最高分 {max=sum;maxi=i;}//i=0时,sum为总分,max=0,当sum大时max=sum。 //将该学生的下标存在maxi }average/=N;//a除以n=a//输出printf("NO. name score1 score2 score3 average\n");for(i=0;i<N;i++){printf("%5s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%9.2f",stu[i].score[j]);printf("%8.2f\n",stu[i].avr);} printf("average=%5.2f\n",average);printf("The highest score is: student %s,%s\n",stu[maxi].num,stu[maxi].name);printf("his scores are: %6.2f,%6.2f,%6.2f,average:%5.2f.\n",stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);return 0;
}