注册 登录
编程论坛 C语言论坛

大佬们帮帮忙,看一下这个题目

第五先生 发布于 2020-09-04 15:39, 2104 次点击
【问题描述】

录入 n 个学生的成绩,并查询。

【输入形式】

第一行输入包括 n、 m(1<=n<=5000,1<=m<=10,000)两个数字。
接下来 n 行,每行包含姓名和成绩,姓名用字符串表示(全大写字母,长度不超过10);成绩为不超过 100 的非负整数。
接下来 m 行,每行包括一个姓名。

【输出形式】

输出 m 行,如果查询的学生不存在,输出”not,exist!”,否则输出学生的成绩。

【样例输入】

5 3

TOM 95

ROBERT 34

ALICE 89

WEWI 65

GRACE 90

ROBERT

GRACE

POPO

【样例输出】

34

90

not exist!

【样例说明】

【评分标准】

数据存储采用结构体。  
3 回复
#2
第五先生2020-09-04 16:14
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu
{char name[20];
 int score;
}a[50],t;

int main()
{
    int i,m,n;
    char num[20];
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++)
    scanf("%s%d",a[i].name,&a[i].score);
    for(i=0;i<n;i++)
    {
      scanf("%s",&num[i]);
       for(i=0;i<m;i++)
      {
         if(strcmp(num,a[i].name)==0)
         {
           printf("%d\n",a[i].score);
         }
         else
           printf("not exist!\n");
      }
    }
    return 0;
}
不知道哪里错了
#3
rjsp2020-09-04 16:42
程序代码:
#include <stdio.h>
#include <string.h>

struct stu
{
    char name[11];
    unsigned score;
};

int main( void )
{
    unsigned n, m;
    scanf( "%u%u", &n, &m );

    struct stu a[5000];
    for( unsigned i=0; i!=n; ++i )
        scanf( "%s%u", a[i].name, &a[i].score );

    for( unsigned j=0; j!=m; ++j )
    {
        char name[11];
        scanf( "%s", name );

        unsigned i;
        for( i=0; i!=n && strcmp(name,a[i].name)!=0; ++i );

        if( i != n )
            printf( "%u\n", a[i].score );
        else
            puts( "not exist!" );
    }
}
#4
第五先生2020-09-04 17:23
回复 3楼 rjsp
for循环出错了
1