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。