解题思路:
设计学生对象的结构体变量,将全局结构体数组做为函数形参,完成函数之间数据的传递。
注意事项:
在输入ID和NAME时,由于其为字符串数组,所以不需要使用取地址运算符&
参考代码:
#include<stdio.h>
typedef struct
{
unsigned char stu_id[10];
unsigned char stu_name[10];
int score1;
int score2;
int score3;
}STUDENT;
/*信息输入函数*/
void input(const int N,STUDENT StuArray[])
{
int i;
for(i=0;i<N;i++)
{
scanf("%s %s %d %d %d",StuArray[i].stu_id,StuArray[i].stu_name\
,&StuArray[i].score1,&StuArray[i].score2,&StuArray[i].score3);
}
}
/*信息输出函数*/
void PrintStuIdNameScore(const int N,STUDENT StuArray[])
{
int AverageVslue1,AverageVslue2,AverageVslue3;
int Maxtemp,MaxScore = StuArray[0].score1+StuArray[0].score2+StuArray[0].score3;
int MaxNumber = 0;
for(int i=0;i<N;i++)
{
AverageVslue1 += StuArray[i].score1;
AverageVslue2 += StuArray[i].score2;
AverageVslue3 += StuArray[i].score3;
Maxtemp = StuArray[i].score1+StuArray[i].score2+StuArray[i].score3;
if(Maxtemp>MaxScore)
{
MaxScore = Maxtemp;
MaxNumber = i;
}
}
printf("%d %d %d\n",AverageVslue1/N,AverageVslue2/N,AverageVslue3/N);
printf("%s %s %d %d %d\n",StuArray[MaxNumber].stu_id,\
StuArray[MaxNumber].stu_name,StuArray[MaxNumber].score1,\
StuArray[MaxNumber].score2,StuArray[MaxNumber].score3);
}
int main()
{
int num;
scanf("%d",&num);
STUDENT MyStudent[num];
input(num,MyStudent);
PrintStuIdNameScore(num,MyStudent);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复