啊哈磊_编程从这里起步

标题: 为什么下面这个程序运行后没有结果? [打印本页]

作者: 星辰幻影    时间: 2013-12-31 23:52
标题: 为什么下面这个程序运行后没有结果?
为什么下面这个程序运行后没有结果?
#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;
}



作者: 河蟹    时间: 2013-12-31 23:52
本帖最后由 河蟹 于 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
不知道LZ想要什么结果!没有输出结果很明显是没有符合IF条件的。
作者: 星辰幻影    时间: 2014-1-1 10:39
超神级 发表于 2014-1-1 09:53 不知道LZ想要什么结果!没有输出结果很明显是没有符合IF条件的。

可是第一次if就应该成立啊,a=b=c=d=e=f
作者: rosynirvana    时间: 2014-1-1 14:28
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
作者: 星辰幻影    时间: 2014-1-1 19:17
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 永远不成立的,所以没有输出

这段看不懂,求解?真值是什么?
作者: rosynirvana    时间: 2014-1-1 19:30
星辰幻影 发表于 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,这个明显是假的

作者: rosynirvana    时间: 2014-1-1 19:54
然后再推导一遍吧
在所有变量都相等的时候

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, 所以为假)




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2