标题:错在哪里,看看!
只看楼主
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
结帖率:100%
 问题点数:0 回复次数:10 
错在哪里,看看!
这是一个简单的数组程序:
我设置了两个数组name[50]和num[50]分别用来存放学生的 姓名学号
用void input_data()和void search(string x)两个函数分别用来  获取数据 和 数据查询
程序代码:
#include <iostream>
#include <string>
using namespace std;
int n;
string name[50],num[50];
int main()
{
    void input_data();
    void search(string);
    string find_name;
    cout<<"please input the number of class:"<<endl;
    cin>>n;
    input_data();
    cout<<"please input name you  want:";
    cin>>find_name;
    search(find_name);
    return 0;
}

void input_data()
{
    int i;
    for(i=0;i<n;i++)
    {
        cout<<"please input name and number of student"<<i+1<<": ";
        cin>>name[i]>>num[i];
    }
}
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x)
            cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
        flag=true;
                  break;
    }
    if(flag==false)
        cout<<"can not find name"<<endl;
}


问题就处在break上,不管我输入什么,它总是查询不到!如图:连"can not find name"都不输出!

这说明程序自动跳出了,于是我  注释了break
程序可以查询:


但是我如果查询了我没有输入的数据,程序不输出:  "can not find name"如图:



能不能告诉我这是为什么呢?万分感谢!

[[it] 本帖最后由 Soul寂 于 2008-10-26 21:48 编辑 [/it]]
搜索更多相关主题的帖子: void 数据 include search please 
2008-10-26 21:40
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
得分:0 
为什么这里不能有break呢?
2008-10-26 21:44
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
得分:0 
不会吧!我把search函数改了下,正常:
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x){
            cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
            flag=true;
        }
         break;
    }
    if(!flag)
        cout<<"can not find name"<<endl;
}
2008-10-26 21:55
newyj
Rank: 2
等 级:新手上路
威 望:3
帖 子:542
专家分:0
注 册:2008-1-4
得分:0 
if(name[i]==x)
{
  cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
  flag=true;
  break;
}
2008-10-26 21:58
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
得分:0 
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x){
            cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
            flag=true;
            break;
       }
    }
    if(!flag)
        cout<<"can not find name"<<endl;
}
2008-10-26 22:04
zxwangyun
Rank: 4
来 自:云南
等 级:业余侠客
威 望:1
帖 子:232
专家分:299
注 册:2008-10-17
得分:0 
刚打错了,不好意思啦!
2008-10-26 22:04
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
得分:0 
回复3L:
你好像改错了吧!你看:

b ,本来存在的,看是确查询不到!!!
2008-10-26 22:06
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
得分:0 
回复 6# zxwangyun 的帖子
这是我的函数:
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x)
           cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
           flag=true;
           break;
    }
    if(flag==false)
        cout<<"can not find name"<<endl;
}
这是你的函数:
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x){
            cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
            flag=true;
            break;
       }
    }
    if(!flag)
        cout<<"can not find name"<<endl;
}
好像就是把if(flag==false)改成if(!flag),  能告诉我为什么这样改? 万分感谢!
2008-10-26 22:16
Soul寂
Rank: 1
等 级:新手上路
帖 子:117
专家分:1
注 册:2008-9-29
得分:0 
晕!
知道错误了,我居然少了一个括号!!!真实粗心啊!!!

谢谢帮助我的兄弟!
2008-10-26 22:33
keanbin
Rank: 1
等 级:新手上路
威 望:1
帖 子:26
专家分:0
注 册:2007-10-11
得分:0 
[bo][un]Soul寂[/un] 在 2008-10-26 22:16 的发言:[/bo]

这是我的函数:
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i


你的第一个程序和第二个程序的if语句不同啊  第一个没有花挂号。
我觉得不是if(flag==false)的问题,因为我把你的程序编译了一下,只是把花括号加上去就可以了。代码如下:
#include <iostream>
#include <string>
using namespace std;
int n;
string name[50],num[50];
int main()
{
    void input_data();
    void search(string);
    string find_name;
    cout<<"please input the number of class:"<<endl;
    cin>>n;
    input_data();
    cout<<"please input name you  want:";
    cin>>find_name;
    search(find_name);
    return 0;
}

void input_data()
{
    int i;
    for(i=0;i<n;i++)
    {
        cout<<"please input name and number of student"<<i+1<<": ";
        cin>>name[i]>>num[i];
    }
}
void search(string x)
{
    int i;
    bool flag=false;
    for(i=0;i<n;i++)
    {
        if(name[i]==x)
        {                                        //加的花括号
            cout<<name[i]<<"  has been found,his number is:"<<num[i]<<endl;
            flag=true;        
            break;
        }                                         //加的花括号
    }
    if(flag==false)
        cout<<"can not find name"<<endl;
}
运行的结果见附件:

1.JPG (23.14 KB)


2.JPG (27.93 KB)
2008-10-26 22:51



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




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

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