PAT刷题记录-12.31
乙级1036 成绩排名问题
即输出成绩最好和最不好的学生学号和姓名,思路非常简单明了,难点在于输入和输出的字符串格式,即如果使用字符串输入的话,不能在一个scanf里同时输入三个字符串,必须分开,在编程过程中要特别注意变量的初始问题。在使用vs编程过程中,出现了输出不完全的问题,但是提交代码是OK的,可能是vs编译器有bug。
#include “stdio.h”
#include “string.h”
int main()
{
typedef struct stud {
char name[12];
char num[12];
int grade;
};
int max=0, min=0;
int idmax=0, idmin=0;
int n;
struct stud student[105];
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%s", student[i].name, 10);
scanf("%s", student[i].num, 10);
scanf("%d\n", &student[i].grade);
if (max < student[i].grade)
{
max = student[i].grade;
idmax = i;
}
}
min = student[1].grade;
idmin = 1;
//printf("%d", student[1].grade);
for (int i = 1; i <= n; i++)
if (min > student[i].grade)
{
min = student[i].grade;
idmin = i;
}
//printf("%d %d\n", student[idmax].grade, student[idmin].grade);
printf("%s %s\n", student[idmax].name, student[idmax].num);
printf("%s %s\n", student[idmin].name, student[idmin].num);
}