那位帮帮忙!简单的程序编写!谢谢了!
1、用结构体类型编写程序,实现输入一个学生的数学和英语成绩,然后计算并输出其平均成绩。2、5名学生,每个学生的数据包含:学号、姓名、三门课成绩。要求编写函数input,用来输入5个学生的数据记录。
3、已知某班有10名学生,每个学生的数据包含:学号、姓名、数学、英语、计算机成绩。要求求出每个同学的平均分,并输出平均分最高的学生的记录。用结构体数组实现。
/* 3、已知某班有10名学生,每个学生的数据包含:学号、姓名、数学、英语、计算机成绩。 要求求出每个同学的平均分,并输出平均分最高的学生的记录。用结构体数组实现。 */ #include <stdio.h> #include <stdlib.h> #define STU_NUMBER 3 #define MAX_NAME_SIZE 20 #define AVG_SCORE(x) (((x).avg) = (((x).math) + ((x).english) + ((x).computer)) / 3) #define OUTPUT_SCORE(x) printf("%.1f\t%.1f\t%.1f\t%.1f\n", \ ((x).math), ((x).english), ((x).computer), ((x).avg)) typedef struct tagSCORE { // 成绩 float math; // 数学 float english; // 英语 float computer; // 计算机 float avg; // 平均值 }SCORE; typedef struct tagSTUDENT { // 学生 int id; // 学号 char name[MAX_NAME_SIZE]; // 姓名 SCORE score; // 成绩 }STUDENT; static STUDENT stu[STU_NUMBER]; static const char *pszInputTip = "依次输入学号、姓名、数学(成绩)、英语(成绩)、计算机(成绩)\n\ 参考范例:\n\ 1 ZhangSan 90.0 65.5 74.6\n\ 开始输入:\n"; static const char *pszOutputTip = "学号\t姓名\t数学\t英语\t计算机\t平均\n"; int stu_input(STUDENT *ptr_stu); int stu_output(STUDENT *ptr_stu); int score_input(SCORE *ptr_score); int main(int argc, char *argv[]) { printf(pszInputTip); stu_input(stu); printf(pszOutputTip); stu_output(stu); system("pause"); return 0; } int stu_input(STUDENT *stu) { int i = 0; for (i = 0; i < STU_NUMBER; i++) { scanf("%d%s", &stu[i].id, stu[i].name); score_input(&(stu[i].score)); } return 0; } int stu_output(STUDENT *stu) { int i = 0; for (i = 0; i < STU_NUMBER; i++) { printf("%d\t%s\t", stu[i].id, stu[i].name); OUTPUT_SCORE(stu[i].score); } return 0; } int score_input(SCORE *ptr_score) { scanf("%f%f%f", &(ptr_score->math), &(ptr_score->english), &(ptr_score->computer)); AVG_SCORE(*ptr_score); return 0; }