问题:学生记录由学生,姓名,数学成绩、语文成绩、英语成绩、总成绩组成,班时有10名同学的数据已在主函数中放入score结构体数组中,编写函数fun,功能是,找出成绩最高的、最低的学生记录,通过形参返回主函数。
代码:
typedef struct Students{
char name[10];
int score_chinese;
int score_math;
int score_english;
float score_sum;
}S;
#include <stdio.h>
#include <string.h>
void fun1(S *p , S a[])
{
int i;
strcpy(p->name,a[0].name);
p->score_sum = a[0].score_sum;
for(i = 0 ; i < 10 ; i++){
if(p->score_sum > a[i].score_sum){
strcpy(p->name,a[i].name);
p->score_sum = a[i].score_sum;
}
}
}
void fun2(S *p , S a[])
{
int i;
strcpy(p->name,a[0].name);
p->score_sum = a[0].score_sum;
for(i = 0 ; i < 10 ; i++){
if(p->score_sum < a[i].score_sum){
strcpy(p->name,a[i].name);
p->score_sum = a[i].score_sum;
}
}
}
int main()
{
S score[10]={
{"张三",98,89,78},{"李四",67,66,56},{"王五",90,89,67},{"小明",100,68,83},{"李明",80,60,50},
{"小华",56,45,33},{"小红",90,99,88},{"丽丽",65,45,33},{"张明",89,55,66},{"李丽",88,67,55}
},*p , a , b;
p = score;
printf("name chinese math english sum\n");
for(int i = 0 ; i < 10 ; i++,p++){
score[i].score_sum = score[i].score_chinese+score[i].score_english+score[i].score_math;
printf("%s\t%d\t%d\t%d\t%g\n",p->name,p->score_chinese,p->score_math,p->score_english,p->score_sum);
}
fun1( &a , score);
printf("*******************\n");
printf("成绩最低学生姓名:%s , 总成绩为:%g \n",a.name,a.score_sum);
fun2( &b , score);
printf("*******************\n");
printf("成绩最高学生姓名:%s , 总成绩为:%g \n",b.name,b.score_sum);
}