标题:这个程序用bool变量为设么运行错误?
取消只看楼主
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
结帖率:93.75%
已结贴  问题点数:50 回复次数:10 
这个程序用bool变量为设么运行错误?
这是一个求完数的程序
先给大家一个正确的程序,但是为什么改成bool变量后运行错误呢?
程序代码:
#include <iostream>
using namespace std;
int perfect(int);       //改为bool perfect(int);
int main()
{
    int number;
    cout<<"此程序将输出1000之内的所有完数:"<<endl;
    for(number=1;number<=10;number++)
    {  perfect(number);    //改为if(perfect(number)) cout<<number;
         
    }
return 0;

}
int perfect(int m )
{   
    int i;
    int t=0;
    for(i=1;i<m;i++)
    {  
            if(m%i==0)
            t=t+i;
    }                                        //为什么用bool变量就错了呢?,例如,若t==m,return true,然后在主函数中修改一下
    if(t==m)
    cout<<m<<endl;
    return 0;
}
    

程序的运行结果
改为bool变量后运行结果
为什么会出现这种情况呢?求解
搜索更多相关主题的帖子: number color 
2012-08-23 22:31
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
我知道我错在哪儿了,return true,与return false 必须成对出现。。。。还有,我昨天晚上就离开了早了点,你们就聊这么欢。。。。
2012-08-24 13:22
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 2楼 zklhp
bool变量中 return true与return false必须成对出现吗?如果不是,为什么这道题必须都写上?
2012-08-24 21:47
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 29楼 zklhp
。。。。。那为什么要是把return false 写上,这道题就运行错误啦???
2012-08-24 21:50
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 30楼 跳跳鱼
打错了,是不写 return false 就错了?
2012-08-24 21:51
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 32楼 zklhp
不写return false 结果就变成这样了

不信你试试?
2012-08-24 21:55
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 34楼 zklhp
所以说为了保险起见,还是都写上好喽?
你在看看下边这个求素数的程序,我要是再加上一个 return true 就会多一个错误的值
程序代码:
#include <iostream>
#include <cmath>
using namespace std;
bool su(int );
int main()
{ int j;
for(j=1;j<=10;j++)
{
    if(su(j))
     cout<<j<<endl;
}
return 0;
}
bool su( int n)
{
    if(n==1) return 0;
    for(int i=2;i<=sqrt(n);i++)
    
        if(n%i==0)
            return false;    
                    else return true;
}

这是结果
2012-08-24 22:03
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
以下是引用zklhp在2012-8-24 22:05:33的发言:

for(int i=2;i<=sqrt(n);i++)
{
        if(n%i==0)
            return false;   
                    else return true;
}

括号括起来也没用,我试了
2012-08-24 22:08
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 39楼 zklhp
不太明白,能详细解释一下吗?谢谢
2012-08-24 22:15
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
得分:0 
回复 43楼 zklhp
恩恩,我知道了,关于这道题bool变量,我想了很久都不太明白,今天终于搞清楚了,呵呵!
2012-08-24 22:23



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




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

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