
弱弱的问下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("#");
}
}
}为什么这题结果是*# 而不是%#??? 展开
#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("#");
}
}
}为什么这题结果是*# 而不是%#??? 展开
2个回答
展开全部
全部是考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
第一题:
#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
展开全部
楼主的问题来源是对于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.
完毕。
第一题,首先要知道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.
完毕。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询