1.有10个学生,每个学生的数据包括学好、姓名、4门课的成绩、总成绩和平均成绩。从键盘输入10个学生的数据(包括学好、姓名以及4门课的成绩),要求打印出每位学生的学号、姓名、4门课的成绩、总成绩和平均成绩,最后打印出来最高分的学生的数据(包括学号、姓名、4门课的成绩、总成绩和平均成绩)以及4门课的总平均成绩。具体要求:
(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); }