这里仅仅提供Up的一个思路吧,本题的可塑性很强,解法多了去了d=====( ̄▽ ̄*)b
- 使用了一个结构式数组,其实可以看成一个既有字符串和整数的三维数组。
- 其实用long long的一个三维数组应该就能解决问题,但是如果把前后【】里数字的位置搞错了,后果不堪设想
-
“ getchar(); ”的使用对于“回车接%s”无疑是有了很大的帮助。要知道,%s可是连回车都能读的进去的。假使做两个输入,第二个输入是输入一个字符串,在前一个输入完成后敲击的回车键也会被%s直接读入,后果相当可怕!!!
附源码:
#include <stdio.h>
int main( int argc, char const *argv[] )
{
struct sj {
char zkh[20];
int sj, kj;
}num[1000];
int n1, n2, i, j;
int check[1000] = {0};
scanf("%d", &n1);
getchar();
for ( i = 0 ; i < n1 ; i++ )
{
scanf("%s %d %d", num[i].zkh, &num[i].sj, &num[i].kj);
}
scanf("%d", &n2);
for ( i = 0 ; i < n2 ; i++ )
{
scanf("%d", &check[i]);
}
for ( i = 0 ; i < n2 ; i++ )
{
for ( j = 0 ; j < n1 ; j++ )
{
if ( num[j].sj == check[i] )
{
printf("%s %d\n", num[j].zkh, num[j].kj);
}
}
}
return 0;
}