(1)根据学生信息定义一个结构体类型,再定义一个该结构体类型的数组。
(2)定义一个input函数用于从键盘上输入10个学生的数据
(3)定义一个average函数用于求每个学生总成绩、平均成绩和所有学生的总平均成绩。
(4)定义一个maximum函数用于找出最高分的学生的数据。
(5)在主函数中输出每位学生的学号、姓名。4门课的成绩、总成绩和平均成绩,最后再输出最高分的学生的数据和总平均成绩。
个人认为写的比较好的程序:
#include <stdio.h>
struct student
{
char name[10];
int score[4];
int total;
float average;
};
//定义全局变量
struct student stus[5];
float a = 0;
void input();
void output();
float average(int );
void maximum();
int main(void)
{
input();
output();
//system("PAUSE");
return 0;
}
void input()
{
printf("please input\nNO.\tname\tscore1\tscore2\tscore3\tscore4\n");
for(int i=0; i<5; i++)
{
printf("%d\t", 101+i);
scanf("%s\t%d\t%d\t%d\t%d", &stus[i].name, &stus[i].score[0], &stus[i].score[1], &stus[i].score[2],
&stus[i].score[3]);
stus[i].total = stus[i].score[0] + stus[i].score[1] + stus[i].score[2] + stus[i].score[3];
stus[i].average = average(i);
//printf("%f", stus[i].average);
a += stus[i].average;
}
a /= 5;
}
float average(int i)
{
return ((float)stus[i].total/4);
}
void output()
{
printf("\n\nNO.\tname\tscore1\tscore2\tscore3\tscore4\ttotal\taverage\n");
for(int i=0; i<5; i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\t%6.2f\n", 101+i, stus[i].name, stus[i].score[0],
stus[i].score[1], stus[i].score[2], stus[i].score[3], stus[i].total, stus[i].average);
}
printf("The highest score:\n");
maximum();
printf("\nThe total average is : %6.2f\n", a);
}
void maximum()
{
int k=0;
for(int i=1; i<5; i++)
{
if(stus[k].average < stus[i].average)
k = i;
}
printf("%d\t%s\t%d\t%d\t%d\t%d\t%d\t%6.2f", 101+k, stus[k].name, stus[k].score[0], stus[k].score[1], stus[k].score[2], stus[k].score[3],
stus[k].total, stus[k].average);
}