回 帖 发 新 帖 刷新版面

主题:简单电话簿,求解??

简单电话薄
题目描述
现代生活离不开电话,联系人太多,人们往往记不住那么多电话号码,因此,电话薄应运而生。
输入
第一行一个整数n,表示电话薄中记录的条数。其后的n行,每行有3个数据,第一个为联系人的姓名(不超过50个英文字符),第二个位联系人的手机号码(不超过20位数字),第三个位联系人的QQ号(不超过20位数字)。接下来的一行中有一个整数k,表示要查找k次联系人的信息。其下的k行,每行有一个待查人的姓名。 
输出
输出每个待查联系人的信息。每个联系人的输出单独占一行。如果没有该联系人的信息,则输出“not found!”。 
样例输入
4
张三 13812345678 345678
李四 13507310731 55667788
王五 13073107310 123456789
赵六 13967896789 987654321
5
张六
张三
李四
王五
赵六
样例输出
not found!
张三 13812345678 345678
李四 13507310731 55667788
王五 13073107310 123456789
赵六 13967896789 987654321


我的代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int n,i,j,k;
    char tel[50][20],q[50][20];
    char a[50][50],c[50][50];
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%s",a[i]);
        scanf("%s",tel[i]);
        scanf("%s",q[i]);
    }
    scanf("%d",&k);
    for(i=0; i<k; i++)
        scanf("%s",c[i]);
    for(i=0; i<k; i++)
    {
        for(j=0; j<n; j++)
        {
            if(strcmp(c[i],a[j])==0)
            {
                printf("%s ",a[j]);
                printf("%s ",tel[j]);
                printf("%s\n",q[j]);
                break;
            }
            if(j==n)
            printf("not found!\n");
        }
    }
    return 0;
}
少了个“not found!”,请高手帮忙看一下到底哪里错了,谢谢!

[email]null[/email][email]null[/email]

回复列表 (共6个回复)

沙发

在for中怎么可能有j==n?

板凳


#include<stdio.h>
#include<string.h>
struct user
{
    char name[20];
    char num[10];
};
int main()
{
    int n=5,i=0,j;
    char temp1[20],temp2[20];
    struct user user[5];
    while(n)
    {
        scanf("%s",user[i].name);
        scanf("%s",user[i].num);
        i++;
        n--;
    }
    for(i=0;i<4;i++)
    {
        for(j=i+1;j<5;j++)
        {
            if(strcmp(user[i].name,user[j].name)>0)
            {
                strcpy(temp1,user[i].name);
                strcpy(user[i].name,user[j].name);
                strcpy(user[j].name,temp1);
                strcpy(temp2,user[i].num);
                strcpy(user[i].num,user[j].num);
                strcpy(user[j].num,temp2);
            }
        }
    }
    for(i=0;i<4;i++)
    {
        printf("%s\n%s\n",user[i].name,user[i].num);
    }
    printf("%s\n%s",user[4].name,user[4].num);

return 0;
}

3 楼


兄弟不会也是农大的吧。下面是我编的代码,不过提交不知道哪里错了,讨论讨论

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Phonebook
{
    char name[51],pho[21],qq[21];
};
int main()
{
    struct Phonebook a[1000];
    char t[51];
    int i,n,m,j;
    scanf("%d\n",&n);
    for(i=0; i<n; i++)
        scanf("%s%s%s",a[i].name,a[i].pho,a[i].qq);
    scanf("%d\n",&m);
    for(i=0; i<m; i++)
    {
        gets(t);
        for(j=0; j<=n; j++)
        {
            if(strcmp(a[j].name,t)==0)
            {
                printf("%s %s %s\n",a[j].name,a[j].pho,a[j].qq);
                break;
            }
            else if(j>=n)
                printf("not found!\n");
        }
    }
    return 0;
}

4 楼

你是神,这也能够猜出我是农大的…

5 楼


题目一模一样啊

6 楼

我也是农大

我来回复

您尚未登录,请登录后再回复。点此登录或注册