2994 - 【设计型】第12章:结构体和共同体 实验题 学生成绩管理系统(9)
时间限制 : 1 秒
内存限制 : 128 MB
某班有不超过30人(具体人数有键盘输入)参加期末考试,最多不会超过6门(具体门数由键盘输入)。参考例12.7,定义数据类型,用结构体数组做函数参数,编程实现:录入每个学生的学号、姓名、和各科考试成绩,按照姓名查询学生的成绩。(要求用子函数解决)
题目输入
输入学生数n;
输入课程数m;
输入学生的学号、姓名、成绩;
输入姓名。
题目输出
输出提示;
输出学生的学号,姓名,成绩,总分,平均分。中间用空格间隔。
输入/输出样例
输入格式
2 3 20130143 Anna 78 87 87 20130144 Bob 97 97 97 Anna
输出格式
Input the name you want to search 20130143 Anna 78 87 87 252 84
C语言解答
#include<stdio.h> #include<string.h> #define max_len 10 #define stu_num 30 #define course_num 6 typedef struct student { long num; char name[max_len]; float score[course_num]; float sum; float aver; }STU; void ReadScore(STU stu[],int n,int m) { int i,j; char ch; for(i=0;i<n;i++) { scanf("%ld",&stu[i].num); scanf("%s",stu[i].name); for(j=0;j<m;j++) { scanf("%f",&stu[i].score[j]); } } } void aver_sum(STU stu[],int n,int m) { int i,j; for(i=0;i<n;i++) { stu[i].sum=0; for(j=0;j<m;j++) {stu[i].sum=stu[i].sum+stu[i].score[j]; } stu[i].aver=stu[i].sum/m; } } void searchname (STU stu[],int n,int m) { char x[max_len]; int i,j; printf("Input the name you want to search\n"); scanf("%s",x); for(i=0;i<n;i++) { if(strcmp(stu[i].name,x)==0) { printf("%ld %s ",stu[i].num,stu[i].name); for(j=0;j<m;j++) { printf("%.0f ",stu[i].score[j]); } printf("%.0f %.0f\n",stu[i].sum,stu[i].aver); } } } int main() { int n=0,m=0; STU stu[stu_num]; scanf("%d",&n); scanf("%d",&m); ReadScore(stu,n,m); aver_sum(stu,n,m); searchname(stu,n,m); return 0; }