C语言入门题

#include<stdio.h>
void main()
{int x=1,y=-1,z=2;
if(x<y)
{
if(y<0)
z=0;
}
else
z+=1;
printf("%d\n",z);
} 答案是2 但我在编译器上结果是3 百度别人说只执行printf 为什么啊 那个else 为什么不执行 求大神解答在线等

首先说明一下,这道题目的答案却是是 3。

我在编译器运行了一下你的代码:

接下来分析一下这个题目的流程:

1、在if(x < y)这个判断条件中,x==1, y==-1,条件是不成立的,所以走else分支。

2、在else分支中,z==2,现在 z+=1之后, z==3。

3、在最后一步printf中打印最终结果z == 3。

如果以上回答对你有帮助,请采纳下,谢谢。

追问

能不能在帮我看下这个题有以下程序:
#include<stdio.h>
main()
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
程序的运行结果是______。

A.331
B.41
C.2
D.1
正确答案

D 为什么不执行else

追答

if - else在没有与{ }结合时,else会选择离它最近的哪个if结合。 所以你这个题目的else是与第二个if(离它最近)结合的。

加上对齐方式如下图:

因为第一个if(x > y)不成立, 所以它里面的if - else不会执行的。

现在明白了吗?

追问

感谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-10
按条件会进入else,并且程序执行结果是3.
不知道你是从哪里得到的答案说是2的。
最好的检验办法是直接上机编程,编译,运行,看结果。
可以在windows,linux平台下都验证一下追问

有以下程序:
#include<stdio.h>
main()
int x=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
程序的运行结果是______。

A.331
B.41
C.2
D.1
正确答案

D 和这个类似为什么不执行else

追答

你把代码整理一下就明白了。如下:

#include<stdio.h>

main()
{
    int x=1,y=2,z=3;

    if(x>y)
    {
        if(y<z)
        {
            printf("%d",++z);
        }
        else
        {
            printf("%d",++y);
        }
    }

    printf("%d\n",x++);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网