注册 登录
编程论坛 C语言论坛

关于return不懂

facemei 发布于 2020-05-01 16:46, 1973 次点击
#include<stdio.h>
int m(int a)
{
    if(a<=999&&a>=100)
    {
        int b,c,d;
        b=a/100;
        c=a/10%10;
        d=a%10;
        if(b*b*b+c*c*c+d*d*d==a)
        {
            return(1);
        }
        else
        {
            return(0);
        }
    }
}
main()
{
    int i;
    printf("水仙数有:");
    for(i=100;i<=999;i++)
    {
        if(m(i)==1)
        {
            printf("%d\t",i);
        }
    }
}
为什么去掉else{return(0);} 之后会输出每一个数,而不只是水仙数?求大神教一下
8 回复
#2
facemei2020-05-01 16:51
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#3
forever742020-05-01 17:28
你不指定返回值,
它就瞎编一个当作返回值咯。
你觉得瞎编出来的整数正好是0的可能性有多大?
#4
facemei2020-05-01 17:32
回复 3楼 forever74
要是随便返回也不可能每次都返回1吧?
#5
forever742020-05-01 18:45
你可以调整下代码,再关闭掉优化试试。
不过我以为我们的目标是写鲁棒代码,对于充满偶然性的,或者说严格说来是错误的写法,不必较真。
错误道路千千万,躲开已知的错误就行,不必依次地踩一踩吧。
#6
炸天帮2020-05-02 08:40
return语句带括号吗
#7
forever742020-05-02 09:32
括号不是return带的,而是后面的表达式被强行加了括号。
#8
q30642197622020-05-02 09:59
回复 2楼 facemei
1111

[此贴子已经被作者于2020-5-2 12:22编辑过]

#9
q30642197622020-05-02 12:22
return后面可以不加括号,但是必须多一个空格。如return(0)变成return 0
然后格式为:return 返回值
在函数中,返回值就是当主函数调用这个函时,返回的值。
如:
int ShiLli()
{
int a=3;
int b=7;
c=a+b;
return c;   //c=7+3=10、返回c值
}
mian()
{
int d;
shili()=d   ///c的值给d
printf(%d,d);   ////输出c(d)的值
return 0;
}
输出:10

[此贴子已经被作者于2020-5-2 12:30编辑过]

1