C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序。由于刚刚学习这门语言,请指教

main()
{int x=1,y=1,z=10;
if(z<0)
if(y>0) x=3;
else x=5;
printf(''%d\t'',x);
if(z=y<0) x=3;
else if(y==0) x=5;
else x=7;
printf(''%d\t,x);
printf(''%d\t'');
}
分别输入什么 ???为什么??详细解释第一个输出的值。

 
//你的代码复制得很乱 完全看不懂,没几个人会回答,因为浪费时间,花了15分钟才整理好代码,看懂一些而已 之后的就懒得写了不懂的再问
int main(void) 
{
 int x=1, y=1, z=10;//定义三个数
 
 if(z<0) //此语句为第一句z = 10; 因为10大于0  不成立,不执行下列二三语句,跳转语句四
  if(y>0)////此语句为第二句属于上一句的if语句 由于上个语句不成立所以不执行,
   x=3;////此语句为第三句同上属于上一句的if语句 由于上个语句不成立所以x = 3没有执行,
  else//此语句为第四句 由于 第一句不成立,所以跳转到这句 
   x=5;//此语句为第五句 x = 5,现在x变量的值是5
  printf("%d\t",x);//此语句为第六句 printf 输出的是 5
  
  if(z=y<0)
   x=3;
  else if(y==0)
   x=5;
  else
   x=7;
  printf("%d\t",x);
  printf("%d\t");
  
  return 0;
}

追问

但是答案是1

追答

额,,,5的 printf()之前的都没有执行....

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-01
由于z=10,所以
if(z<0)
if(y>0) x=3;
else x=5;
这段不执行。 x初始为1,printf(''%d\t'',x);打印1.

z=y=1>0所以
else if(y==0) x=5;
不执行,进入到else x=7,打印出7.
其结果为1 7追问

如果改成z>0那么printf就是3吗??

追答

z=10,z>0,所以if(y>0) x=3 和else x=5 这个语句不会执行。直接执行printf(''%d\t'',x);

另外你程序printf(''%d\t,x) 后面又写了printf(''%d\t'');会在打印完1后打印一个2367460,所以建议你把最后的printf(''%d\t'')去掉。

如果改成if(z>0),那么if(y>0) x=3 被执行,则打印出3.

追问

Z>0已经是真了啊 为什吗不执行if(y>0) x=3;

追答

源程序不是z0)
if(y>0) x=3;
else x=5;
printf(''%d\t'',x);
则if(y>0) x=3被执行,然后执行printf("%d\t",x) 这是打印3.

看好题目。

追问

最后一句是我输错了 printf(''%d\t'',Z);Z应该输出多少??

追答

你的题目中写的z=0,程序中又赋予初值z=10,你确定一下z的值。

追问

z=10

追答

由于z=y<0 ,表达式为假,即为0,所以printf("%d\t",z); 打印z为0. 望采纳!

本回答被提问者采纳
第2个回答  2021-01-31
同学你好,我来回答一下哈,首先%d后的/t是转义符的意思哦,也就是说返回原来的值,和上面的语句就没有关系了,所以不管上面是什么只要没有赋值(比如z=y<0,因为y<0为假所以赋值z为0,在这里z因为赋值所以改变了初值),所以,最后第一个printf输出1然后第二三个是7 0
第3个回答  2018-11-20
你这个代码太不规范了,得看第一个if的范围是什么

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0 具体请看下边程序...
int main(void) { int x=1, y=1, z=10;\/\/定义三个数 if(z<0) \/\/此语句为第一句z = 10; 因为10大于0 不成立,不执行下列二三语句,跳转语句四 if(y>0)\/\/\/此语句为第二句属于上一句的if语句 由于上个语句不成立所以不执行, x=3;\/\/\/此语句为第三句同上属于上一句的if语句 由于上个语句不成立...

C语言中 main() {int x=1,y=1,z=0; if(z<0) if(y>0) x=3;
z=y<0是先判断y<0,此表达式值为0,即赋值z=0,然后表达式的值作为if判断条件,它是0,自然不成立了,于是往下执行if(y==0) 这里也不成立,再往下else执行了x=7,于是输出7了

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

...<stdio.h>main(){int x=1,y=1;int m n;m=n=1,
首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。代码运行结果如下图所示:程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一...

c语言中intx=1,y=1,!x||y――的值
首先x=1,为真 其次y=1,为真 x||y的意思是,如果有一个为真,那么都是真 因为x和y都是真,所以x||y都是真。但是这里有一个优先级的问题。!的意思是非,也就是说,如果一个真的值前面加一个!,那么他就是假,如果一个假的值前面加一个!,那么他就是真。 比如!1就是0,!0就是...

main() {int x=2,y=-1,z=2; if(x<y) if(y<0)z=0; else z+=1; prin...
z+=1;这是C里面的典型的摇摆问题,else和距离它最近的if进行匹配,它相当于:if(x<y){if(y<0)z=0;else z+=1;} 而且若像for和while循环,还有一些逻辑判断语句,若下面不带括号,它的作用于只是它紧跟着的唯一一条语句:比如:for(i=0;i<5;i++)printf("%d ",i+1);printf("$ ");...

...h> main() {int x,y,z; x=y=1; z=(++x)+(++y)+(x++); printf("%d...
z=(++x)+(++y)+(x++)我们拆开写,++x此时x=2 ++y此时y=2 x++运行时这个表达式已经是2了,运行结束后x=3 所以z = 2 + 2 + 2 = 6 所以结果是3,2,6

c语言输入x=1输出y=1;
include <stdio.h> int main(){ int x,y;printf("输入x:\\n");scanf("%d",&x);if(x>0)y=1;else if(x<0)y=-1;if(x==0)y=0;printf("y的值为:%d\\n",y);}

一道c语言if条件句的问题
else printf("%d",++y);printf ("%d\\n",x++);} 因为,if(x>y)判断语句下面的if相当是嵌套在第一个if里面,而else要与和它最近的if,也就是与if(y<z),保持一直,也就是说,整个程序可以理解为:include<stdio.h> main(){ int x=1,y=2,z=3;if(x>y){ if(y<z)printf("%d",...

int X=1, y=0;if(!x) y++; else if(x==0) if(
输入0.这个代码你可以这样看 if (!x) y=0;else if (x == 0) if (x) y+=2; else y+=3;这样你应该懂了,不懂再问

相似回答