| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1059 人关注过本帖
标题:错在哪里,看看!
只看楼主 加入收藏
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
快速回复:错在哪里,看看!
数据加载中...
 
   



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

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