回 帖 发 新 帖 刷新版面

主题:为什么不执行函数呢??请高手看看??好急!!谢谢看看!

为什么不执行函数呢??
不调用str(int &n)后面的??我要输出的是:153=1^3+5^3+3^3。这样类型的水仙花数啊!!
怎么高手呢??加分啊??看看哪里错了??
#include<iostream>
using namespace std;
int str(int &n)
{
    int i,j,k;
    {
        i=n/100;
        j=(n/10)%10;
        k=n%10;
    }
    if(n==i*i*i+j*j*j+k*k*k)
        return 1;
        return n;
}
int main()
{  
    int a;
    for(a=100;a<=999;a++)
    {
    
    if(str(a))
        cout<<a<<"\t";
    }
    cout<<endl;
        return 0;
}

回复列表 (共6个回复)

沙发

if(n==i*i*i+j*j*j+k*k*k)
        return 1;
        return n;

这里return n;
应该为return 0;吧,

板凳

不是这个原因a!

3 楼

把你的return n改成return 0之后可以得到正确的结果,尝试在main函数的return 0前面加个暂停语句吧

4 楼


为什么return n不行,要return 0;不是要返回n吗???谢谢请解释下:

5 楼

因为在if语句里面把非0的数都当“真”处理,所以你要是return n的话,和return 1对if来说木有区别

6 楼

if(n==i*i*i+j*j*j+k*k*k)
        return 1;
        return n;
if后面紧跟着return 1 说明是真,而这个return n其实都是真的,那么两个都是真的话,那么相当于返回的都是正确的,
其实这个return n是缺少了else
完整的是
if()
return 1;
else
return 0;
此时如果为零,那么在main函数里面就是判断了 ,其实,,在mian函数里也就是直接退出一个i的小循环了

我来回复

您尚未登录,请登录后再回复。点此登录或注册