原题链接:[编程入门]结构体之成绩统计2
解题思路:
注意事项:
参考代码:
#include <stdio.h> #include <stdlib.h> typedef struct students{ char *id; char *name; int score[3]; }St; St * initSt(){ int i,j; St *temp=(St *)malloc(sizeof(St)); if(temp==NULL){ return NULL; } char sr1[100]; scanf("%s",&sr1); temp->id=(char *)malloc(strlen(sr1)+1); if(temp->id==NULL){ return NULL; } strcpy(temp->id, sr1); char sr2[100]; scanf("%s",&sr2); temp->name=(char *)malloc(strlen(sr2)+1); if(temp->name==NULL){ return NULL; } strcpy(temp->name, sr2); int sr3[3]; for(i=0;i<3;i++){ scanf("%d",&sr3[i]); } temp->score[3]=(int *)malloc(sizeof(sr3)*3); if(temp->score==NULL){ return NULL; } for(i=0;i<3;i++){ temp->score[i]=sr3[i]; } return temp; } void printStu(St *stu) { printf("%s %s %d %d %d\n", stu->id, stu->name, stu->score[0], stu->score[1] ,stu->score[2]); } void freeStu(St *stu) { if (stu == NULL) return; free(stu->id); free(stu->name); free(stu); } int main (){ int i,j,n,a=0,b=0,c=0,max=0,z=0; scanf("%d",&n); St *test[n]; St *test1; test1=test[0]; for (i=0;i<n;i++){ test[i]=initSt(); } //2 打印 for (i = 0; i < n; i++) { a+=test[i]->score[0]; b+=test[i]->score[1]; c+=test[i]->score[2]; for(j=0;j<3;j++){ max+=test[i]->score[j]; } if(max>z){ z=max; max=0; test1=test[i]; } } printf("%d %d %d\n",a/n,b/n,c/n); printStu(test1); //3 释放 for (i = 0; i < n; i++) { freeStu(test[i]); } return 0; }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复