弱弱的问下C语言题

一题#include<stdio.h>main(){inta=100;if(a>100)printf("%d\n",a>100);elseprintf("%d\n",a<... 一题
#include<stdio.h>
main()
{int a=100;
if(a>100)printf("%d\n",a>100);
else printf("%d\n",a<=100);
}为什么这道题结果是1???

二题
#include<stdio.h>
main()
{int a=2,b=-1,c=2;
if(a<b)
if(b<0)c=0;
else c+=1;
printf("%d\n",c);
}为什么这题结果不是3 而是2?

三题
#include<stdio.h>
main()
{int x,y,z;
x=0;y=2;z=3;
switch(x)
{case 0:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;
}
case 1:switch(z)
{case 1:printf("$");
case 2:printf("*");break;
default:printf("#");
}
}
}为什么这题结果是*# 而不是%#???
展开
 我来答
湛江大城小事
2010-09-06 · TA获得超过417个赞
知道小有建树答主
回答量:592
采纳率:0%
帮助的人:337万
展开全部
全部是考int 和 bool型的理解
第一题:
#include<stdio.h>
main()
{
int a=100;
if(a>100)
printf("%d\n",a>100);
else printf("%d\n",a<=100);//执行这句,a<=100成立为真所以值是1
}

第二题:
else总是跟最靠近它的if成对
#include<stdio.h>
main()
{int a=2,b=-1,c=2;
if(a<b)//大括号里面的根本就没执行,所以c=2
{
if(b<0)c=0;
else c+=1;
}
printf("%d\n",c);
}

第三题:
y==2 的值为1
fcgzfcgz
2010-09-06 · TA获得超过239个赞
知道答主
回答量:59
采纳率:0%
帮助的人:67.7万
展开全部
楼主的问题来源是对于if,else,else if 分支语句判断以及if括号内判定有点模糊。

第一题,首先要知道if括号内判断的方式,实质上if后跟着的括号内语句最终是一个值,这个值只有1或者0,如果括号内语句为真,则值为1,否则为0;
if(a>100)printf("%d\n",a>100);
else printf("%d\n",a<=100); 由于a值被赋予100,所以if条件内显然为假,
于是这条语句实质上是if(0);
else和if配对,由于if为假,于是else后语句执行,这里要注意输出函数,和if条件判断一样,输出函数的后半部分实质上最终也件是一个值,如果后部分是一跳语句,则输出的是语句的返回值,a<=100;这条语句是真,其返回值为1,所以最终输出的是1。

第二题比较好理解一些,if和else的使用,在没有{}符号改变代码的从属关系的情况下,else总是和前面一个没有配对的if进行配对,对于第二题的程序,实质上else是和if(b<0)这条if语句配对,所以自然不会执行c加一的指令,输出结果为2.题目中的程序实质上和以下程序相同:
#include<stdio.h>
main()
{int a=2,b=-1,c=2;
if(a<b)
{
if(b<0)c=0;
else c+=1;
}
printf("%d\n",c);
}
要想让else和if(a<b)配对,通过改变从属关系如下即可:
#include<stdio.h>
main()
{int a=2,b=-1,c=2;
if(a<b)
{
if(b<0)c=0;

else c+=1;
printf("%d\n",c);
}
这样的结果就是3了

第三题,和第一题有类似的地方,由于 y==2 这个判断语句为真,这是判断语句,不是赋值语句,返回值为1,于是switch语句自然进入case 1 语句执行,至于后半部分楼主应该没有问题。

总体上说,楼主记得凡是在switch,if,else if之类的条件判断型指令后面括号中的条件,实质上必然是返回一个值,而与括号内的语句复杂程度无关,特别的在if后面的括号内返回值只有0,1两种可能,同样,凡是在需要一个值的地方出现语句,必然也只会返回一个值,如果是判断语句,则这个值必然是是与否,即0和1.

完毕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式