题解与感想
一开始的想法就是用结构体来解决,但是当时不清楚对结构体中某一元素构成的数组排序后原结构体怎么表示,后来想想,不需要排序啊,只需要找出最大最小值即可,记录下来,直接print完事。
#include"stdio.h"
struct student
{
/*为什么保存10个字符串需要11个空间?
ANS:字符串要多1个用来存放’\0’(结束标识符)
*/
char name[11];
char id[11];
int score;
};
int main()
{
int n;
scanf("%d",&n);
struct student stu[n];
for(int i=0;i<n;i++)
{ scanf("%s %s %d",&stu[i].name,&stu[i].id,&stu[i].score);
}
int max=0,min=0;
for(int i=1;i<n;i++)
{ if(stu[i].score<stu[min].score){min=i; continue;}
/* 已经是最大值了自然不可能是最小值了,直接跳出本次循环 */
if(stu[i].score>stu[max].score){max=i;}
}
printf("%s %s\n",stu[max].name,stu[max].id);
printf("%s %s",stu[min].name,stu[min].id);
return 0;
}
网友评论