注册 登录
编程论坛 C++教室

帮我看一下这个电话簿查找电话程序错在哪,c++的

简Greensoul 发布于 2011-12-03 21:04, 856 次点击
#include<iostream>
#include<cstring>
using namespace std;
struct Telrec
{
    char name[20];
    double telnumb;
};
int main()
{
    struct Telrec contact[10]={
        {"Linda",123456},
        {"John",126463},
        {"Jane",79883},
        {"Susan",976597},
        {"Paul",966589},
        {"Peter",996080},
        {"Steven",869790},
        {"Becky",585790},
        {"Shirey",689879},
        {"Lily",585767}
    };
struct Telrec * p ;
p=contact ;
    char searcname;
    cout<<"请输入要查找的姓名:";
    cin>>searcname;
    for(int i=0;i<10;i++)
    {
        if(p[i].name==searcname)
            cout<<p[i].telnumb;
        else return(NULL);
    }
}
9 回复
#2
我是菜鸟C2011-12-04 11:54
我随便看了一下,发现很明显的三处错误:
1,searcname是要输入一个字符串,所以你不能用一个char表示,要某用字符数组,要某用字符串。
2,在for循环里面那个else不能要,因为如果第一次查找不成功的话,你直接return掉了  后面的肯定是查不到的。
3,就是if判断了,一定要明白字符数组的比较不是简单的==就ok了,需要用到for循环遍历字符数组的a[i],来每个做比较,要某用strcmp()这个库函数!
#include<iostream>
#include<string>
using namespace std;
struct Telrec
{
    char name[20];
    double telnumb;
};
int main()
{
    struct Telrec contact[10]={
        {"Linda",123456},
        {"John",126463},
        {"Jane",79883},
        {"Susan",976597},
        {"Paul",966589},
        {"Peter",996080},
        {"Steven",869790},
        {"Becky",585790},
        {"Shirey",689879},
        {"Lily",585767}
    };
struct Telrec * p ;
p=contact ;
char searcname[20] ={'\0'};
    cout<<"请输入要查找的姓名:";
    cin>>searcname;
    for(int i=0;i<10;i++)
    {
        //if(p[i].name==searcname)
        if(strcmp(p[i].name,searcname)==0){
            cout<<p[i].telnumb;
            break;
        }
        //else return(NULL);
    }
   
}
#3
hxcet2011-12-05 22:54
把库函数改为#include<string>;还有把char searname;改成string searname;最后把else部分也要去掉。
#include<iostream>
//#include<cstring>
#include<string>
using namespace std;
struct Telrec
{
    char name[20];
    double telnumb;
};
int main()
{
    Telrec contact[10]={
        {"Linda",123456},
        {"John",126463},
        {"Jane",79883},
        {"Susan",976597},
        {"Paul",966589},
        {"Peter",996080},
        {"Steven",869790},
        {"Becky",585790},
        {"Shirey",689879},
        {"Lily",585767}
    };
struct Telrec * p ;
p=contact ;
//char searcname;
string searcname;
    cout<<"请输入要查找的姓名:";
    cin>>searcname;
    for(int i=0;i<10;i++)
    {
        if(p[i].name==searcname){
            cout<<p[i].telnumb;
            break;
        }
        //else return(NULL);
    }
    return 0;
   
}
#4
简Greensoul2011-12-05 23:42
回复 2楼 我是菜鸟C
谢谢!如果查找不道,要输出“查无此人”,这一句我不知道要放在哪好,能不能帮我看看?麻烦你了!
#5
简Greensoul2011-12-05 23:43
回复 3楼 hxcet
谢谢!
#6
jj74125302011-12-06 00:30
二楼是最基本的想法也是正确的
#7
hellovfp2011-12-06 11:22
#include<iostream>
//#include<cstring>
#include<string>
using namespace std;
struct Telrec
{
    char name[20];
    double telnumb;
};
int main()
{
    Telrec contact[10]=
    {
        {"Linda",123456},
        {"John",126463},
        {"Jane",79883},
        {"Susan",976597},
        {"Paul",966589},
        {"Peter",996080},
        {"Steven",869790},
        {"Becky",585790},
        {"Shirey",689879},
        {"Lily",585767}
    };
    struct Telrec * p ;
    int i;
    p=contact ;
//char searcname;
    string searcname;
    cout<<"请输入要查找的姓名:";
    cin>>searcname;
    for(i=0; i<10; i++)
    {
        if(p[i].name==searcname)
        {
            cout<<p[i].telnumb;
            break;
        }
        //else return(NULL);
    }
    if(i == 10) cout << "查无此人" << endl;
    return 0;

}
#8
我是菜鸟C2011-12-06 18:44
回复 4楼 简Greensoul
    int i =0;
    for( i=0;i<10;i++)
    {
        //if(p[i].name==searcname)
        if(strcmp(p[i].name,searcname)==0){
            cout<<p[i].telnumb;
            break;
        }
        //else return(NULL);
    }
    if(i=10) cout<<"查无此人"<<endl;
#9
简Greensoul2011-12-07 15:53
回复 8楼 我是菜鸟C
谢谢!我明白了!
#10
简Greensoul2011-12-07 15:53
回复 7楼 hellovfp
谢谢!
1