标题:帮我看一下这个电话簿查找电话程序错在哪,c++的
只看楼主
简Greensoul
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-11-13
结帖率:80%
已结贴  问题点数:20 回复次数:9 
帮我看一下这个电话簿查找电话程序错在哪,c++的
#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);
    }
}
搜索更多相关主题的帖子: 电话 contact include double 
2011-12-03 21:04
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
得分:5 
我随便看了一下,发现很明显的三处错误:
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);
    }
   
}
2011-12-04 11:54
hxcet
Rank: 4
等 级:业余侠客
帖 子:78
专家分:229
注 册:2011-11-15
得分:4 
把库函数改为#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;
   
}
2011-12-05 22:54
简Greensoul
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-11-13
得分:0 
回复 2楼 我是菜鸟C
谢谢!如果查找不道,要输出“查无此人”,这一句我不知道要放在哪好,能不能帮我看看?麻烦你了!
2011-12-05 23:42
简Greensoul
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-11-13
得分:0 
回复 3楼 hxcet
谢谢!
2011-12-05 23:43
jj7412530
Rank: 2
等 级:论坛游民
帖 子:19
专家分:40
注 册:2011-9-20
得分:0 
二楼是最基本的想法也是正确的
2011-12-06 00:30
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:7 
#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;

}

我们都在路上。。。。。
2011-12-06 11:22
我是菜鸟C
Rank: 4
等 级:业余侠客
帖 子:74
专家分:200
注 册:2011-3-27
得分:4 
回复 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;
2011-12-06 18:44
简Greensoul
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-11-13
得分:0 
回复 8楼 我是菜鸟C
谢谢!我明白了!
2011-12-07 15:53
简Greensoul
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-11-13
得分:0 
回复 7楼 hellovfp
谢谢!
2011-12-07 15:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356884-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051070 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved