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

为什么下面这个程序运行后没有结果?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-12-31 23:52:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
为什么下面这个程序运行后没有结果?
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c,d,e,f;
    for(a=1;a<=6;a++)
        for(b=1;b<=6;b++)
                     for(c=1;c<=6;c++)
                        for(d=1;d<=6;d++)
                                for(e=1;e<=6;e++)
                                        for(f=1;f<=6;f++)
                                                if(a+b+c==c+d+e==e+f+a)  
                                                        printf("%d%d%d%d%d%d",a,b,c,d,e,f);
        system("pause");
        return 0;
}


最佳答案

查看完整内容

if语句不成立,改成if(a+b+c==c+d+e&&c+d+e==e+f+a)就行了,然后printf("%d%d%d%d%d%d\n",a,b,c,d,e,f);中记得加入\n进行换行,这样看结果时就比较清晰了
楼主新帖
楼主热帖
沙发
发表于 2013-12-31 23:52:17 | 只看该作者
本帖最后由 河蟹 于 2014-1-1 13:51 编辑

if语句不成立,改成if(a+b+c==c+d+e&&c+d+e==e+f+a)就行了,然后printf("%d%d%d%d%d%d\n",a,b,c,d,e,f);中记得加入\n进行换行,这样看结果时就比较清晰了
板凳
发表于 2014-1-1 09:53:45 | 只看该作者
不知道LZ想要什么结果!没有输出结果很明显是没有符合IF条件的。
地板
 楼主| 发表于 2014-1-1 10:39:13 来自手机 | 只看该作者
超神级 发表于 2014-1-1 09:53 不知道LZ想要什么结果!没有输出结果很明显是没有符合IF条件的。

可是第一次if就应该成立啊,a=b=c=d=e=f
5#
发表于 2014-1-1 14:28:14 | 只看该作者
a+b+c==c+d+e==e+f+a
在6个变量都是1的时候
a+b+c == 3
c+d+e == 3
(a+b+c == c+d+e)为真,真值转化为整形后是1
1 == e+f+a 永远不成立的,所以没有输出

你要的是 a+b+c == c+d+e && c+d+e == e+f+a
6#
 楼主| 发表于 2014-1-1 19:17:44 | 只看该作者
rosynirvana 发表于 2014-1-1 14:28
a+b+c==c+d+e==e+f+a
在6个变量都是1的时候
a+b+c == 3

在6个变量都是1的时候
a+b+c == 3
c+d+e == 3
(a+b+c == c+d+e)为真,真值转化为整形后是1
1 == e+f+a 永远不成立的,所以没有输出

这段看不懂,求解?真值是什么?
7#
发表于 2014-1-1 19:30:02 | 只看该作者
星辰幻影 发表于 2014-1-1 19:17
在6个变量都是1的时候
a+b+c == 3
c+d+e == 3

用通俗的语言来说,表达式是有值的
用 == 进行比较的表达式,那么有两种可能的值,真或者假
3 >= 3是真
3 >= 2就是假
3 == 3是真
3 == 2就是假

3 == 3是真,真会被转换为1
3 == 3 == 3进行求值,那么先对左边的求值,左边是 3 == 3,上面已经说了,这个是1
然后得到的是 1 == 3,这个明显是假的
8#
发表于 2014-1-1 19:54:02 | 只看该作者
然后再推导一遍吧
在所有变量都相等的时候

a+b+c==c+d+e==e+f+a
(a+b+c == c+d+e) == e+f+a
1 == e+f+a
(e+f+a >= 3, 所以为假)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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