搜索
查看: 2523|回复: 7
打印 上一主题 下一主题

大家来看看这段代码那错了!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-22 19:28:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
这是一个关于水仙花数的代码,运行后什么都不显示!求大神解释!

沙发
发表于 2013-1-22 21:21:07 | 只看该作者
上代码吧- -图片不好调试
板凳
发表于 2013-1-23 17:46:13 | 只看该作者
错误是出在if那里吗?

如果我没记错的话高级语言里的"=="和"-+*/"都是同一级运算符号来的哟.有些比较傻的编译器是不会先解决2边的算式的.

建议把if里的数学运算分离出来看看吧
地板
 楼主| 发表于 2013-1-23 22:15:05 | 只看该作者
[mw_shl_code=c,true]#include <stdio.h>
#include <math.h>
int main()
{       
    int a,i,j,k,m,n;
    for(a=100;a<1000;a++)
                {
                        i=a/100;
            j=a/10%10;
            k=a%10;
            m=i*100+j*10+k;
            n=i*i+j*j+k*k;
            if(m==n)
                                {
                                        printf("%d",a);
                }
        }
        sleep(5000);
        return 0;
}
[/mw_shl_code]
5#
 楼主| 发表于 2013-1-23 22:15:36 | 只看该作者
xoscan 发表于 2013-1-23 22:15
[mw_shl_code=c,true]#include
#include
int main()

还是没解决了!
6#
发表于 2013-1-27 11:48:04 | 只看该作者
你的错误很明显,i*100+l*10+k==i*i+l*l+k*k是个不等式.
应该是i*100+l*10+k==i*i*i+l*l*l+k*k*k
你试下
#include <stdio.h>
int main()
{
        int a,i,j,k,l;
    for(a=100;a<1000;a++)
    {
    i=a/100;
    j=a/10;
    l=j%10;
    k=a%10;
    if(i*100+l*10+k==i*i*i+l*l*l+k*k*k)
    {
    printf("%d\n",a);
    }
    }
    printf("\n");
        sleep(5000);
        return 0;
}
你就可以得到你要的结果
啦,


你还可以写成.#include <stdio.h>
int main()
{
        int a,i,j,k;
    for(a=100;a<1000;a++)
    {
    i=a/100;
    j=a/10%10;
    k=a%10;
    if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
    {
    printf("%d\n",a);
    }
    }
    printf("\n");
        sleep(5000);
        return 0;
}
这样更简洁.............

评分

参与人数 1啊哈币 +5 收起 理由
李掌柜 + 5 赞一个!

查看全部评分

7#
发表于 2013-1-27 17:47:35 | 只看该作者
范围有错啊,a的有效值是10000,10001等数字。。。你的a达不到10000
8#
发表于 2013-7-22 17:16:55 | 只看该作者
貌似sleep又错了。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表