要求:
http://codeup.cn/problem.php?cid=100000576&pid=2
说明:
一开始定义的二维数组过大,导致报运行错误,改小了就通过了= =
代码:
#include <stdio.h>
struct studentrecord{
int num;
char studentname[100];
char gender[100];
int old;
}student[1010];
int selectrecord[10000];
//这个二维数组的作用是来记录学号,输出时保证前面的0不会被省去
char str[10000][100];
int main(){
int N,M;
while(scanf("%d",&N) != EOF){
for(int i = 0;i <N;i++){
getchar();
//把学号记录到二维数组中,再用sscanf转到结构体学号中
scanf("%s %s %s %d",&(str[i]),&(student[i].studentname),&(student[i].gender),&(student[i].old));
sscanf(str[i],"%d",&(student[i].num));
}
getchar();
scanf("%d",&M);
for(int i = 0;i <M;i++){
getchar();
scanf("%d",&selectrecord[i]);
}
for(int i = 0;i <M;i++){
int signal = 0;
for(int j = 0;j <N;j++){
//比较的时候用数字形式比较,输出时用字符串输出
if(selectrecord[i] == student[j].num){
printf("%s %s %s %d\n",str[j] ,student[j].studentname,student[j].gender,student[j].old);
signal++;
}
}
if(signal == 0){
printf("No Answer!\n");
}
}
}
return 0;
}