19.以下程序的输出结果是 main( ) {int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1;

如题所述

结果是Z=2;
分析:关键是看else与哪个if配对;由于else最靠近第二个if,所以是与第二个if配对的(就近原则),也就是第一个if没有else,从整个程序来说,先判断第一个if语句,因为x>y,所以不执行第一个if里面的所有语句(也就是不执行这两个语句:if(y<0) z=0; else z+=1;),也就是z没有变,依旧是2,
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-22
main( )
{
int x=2,y=-1,z=2;
if(x<y)
if(y<0)
z=0;
else
z+=1;
}
因为刚开始你给Z赋值的是2 ,然后在实现else语句,Z自加1,所以如果输出的是z的话好像是3吧!
第2个回答  2011-10-22
main( )
{
int x=2,y=-1,z=2;
if(x<y)
if(y<0)
z=0;
else
z+=1;
}
这样比较清楚。
如果输出Z的话,就是2.本回答被网友采纳
第3个回答  2011-10-22
你的问题就是在else到底和谁配对,,,告诉你吧:。。。。“else总是跟它最接近的if配对”。。。 受人以鱼还不如授之以渔。。。。。
第4个回答  2011-10-22
以下程序的输出结果是 main( )
{
int x=2,y=-1,z=2;
if(x<y)
if(y<0)
z=0;
else z+=1;
x=2,y=-1,z=3

...{int x=2,y=-1,z=2; if(x<y) if(y<0) z=0; else z+=1;
也就是第一个if没有else,从整个程序来说,先判断第一个if语句,因为x>y,所以不执行第一个if里面的所有语句(也就是不执行这两个语句:if(y<0) z=0; else z+=1;),也就是z没有变,依旧是2,

main() { int x=2,y=-1,z=2; if(x<y) if(y<0) z=0
main(){ int x=2,y=-1,z=2;if(x<y){ if(y<0) z=0;else z+=1;} printf("%d\\n",z);} 这个程序的else z+=1是与if(y<0) z=0配对的,像上面这样,既然x<y都不成立,里面的if else都不会执行,z的值不变

main() {int x=2,y=-1,z=2; if(x<y) if(y<0)z=0; else z+=1; prin...
嗯,这个结果就是2,给你举个例子!if(x<y)if(y<0)z=0;else z+=1;这是C里面的典型的摇摆问题,else和距离它最近的if进行匹配,它相当于:if(x<y){if(y<0)z=0;else z+=1;} 而且若像for和while循环,还有一些逻辑判断语句,若下面不带括号,它的作用于只是它紧跟着的唯一一条语句:...

以下程序的输出结果是( )。 main() { int x=2,y=-1,z=2;
if(x<y)的判断已经不会执行,后面的else是接上面那个不会执行的if,所以z的值不变,输出2

main(){int x= 2,y=-1,z=2;
main(){intx=2,y=-1,z=2;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\\n",z);}A)3B)2C)1D)0... main(){int x= 2,y=-1,z=2;if (x<y) if(y<0) z= 0; else z+ =1; printf("%d\\n",z);} A)3 B )2 C)1 D) 0 展开 ...

...main() int x=2,y-1,z=2;if(x<y) if(y<0) z=0 else z)+=1 prin...
include"stdio.h"void main(){int x=2,y=1,z=2;if(x<y)if(y<0)z=0;else z+=1;printf("%d\\n",z);} 程序是这样的话,结果是2 因为else在没有括号标志的情况下是与紧接着它的上一个if匹配,这个程序里,第一个if不符合就执行输出语句了。

#include main() { int x=2,y= -1,z=5;
include <stdio.h> main(){ int x=2,y= -1,z=5;If{(x<y)If{(y<0)} z=0;} else z=z+1;printf(“%d\\n”,z);} 因为else与最近的if是搭配用的,而第一个if不成立导致第二个if不执行,第二个if不执行,也就导致else也不执行了咯,所以直接printf,z值不变 ...

...main() { int x=1, y=2, z=3; if(x>y) if(y<z) printf("%d", ++...
结果是1 if(y<x)不成立,不执行下面。直接执行else printf(“%d,x++),所以结果为1

以下程序的输出结果是 main() {int a=100,x=10,y=20,ok1=5,ok2=0...
if是条件,if()里面是判别,当里面为真,也就是值为1的话就执行,否则不执行,你ok1=5,那么在条件语句里值就为1,(真)如果为0的话就是假!!!是逻辑非,ok1=5(在if里就是1,意为真),!ok1意思就是ok1=0(在if里就是假)所以不执行!!!结果应该是-1 ...

以下程序片段( ) 。 main ( ) { int x=0,y=0,z=0; if (x=y+z) print...
答案是B 因为C语言中"="是赋值号;if(x=y+z)是计算出y+z的值然后赋值给x,这个式子是永远成立的,所以会输出***;如果说要改错的话,应该改为if(x==y+z),构成逻辑表达式后,才符合程序设计的初衷。

相似回答