pat 乙级 1004成绩排名
# include <stdio.h>
# include <string.h>
struct STU
{
char name[10];
char usname[12];
int num;
};
int main()
{
struct STU stu[5];
int n;
int i;
int max;
int min;
int a=0;
int b=0;
if(scanf("%d",&n)){};
if(n<=5){
for(i=0;i<n;i++){
if(scanf ("%s %s %d", stu[i].name, stu[i].usname, &stu[i].num)){};
};
max=min=stu[0].num;
for(i=1;i<n;i++){
if(stu[i].num>max)max=stu[i].num;
else if(stu[i].num<min)min=stu[i].num;
};
for(i=0;i<n;i++){
if(max==stu[i].num){
a=i;
};
if(min==stu[i].num){
b=i;
};
};
printf("%s %s\n", stu[a].name, stu[a].usname);
printf("%s %s\n", stu[b].name, stu[b].usname);
}else{};
return 0;
}
当数组为usname[10]时会发生越界,因为字符数字最后一个数组下标中存有\0。所以实际上数组的可使用范围为【0-9】结果中会多出一个Y。