解题思路:(1)直接利用if-else的嵌套语句(2)利用级联的if-else语句(尤其是分段函数类型)
注意事项:嵌套/级联的if-else语句要注意 条件表达式 的书写方式。
例如:if(1<=x<10) 是否表示 ——“如果x大于等于1小于10” 答案:否,该语句只表示真或假(非0或0)
原因:计算机只能识别二进制,即0和1,1代表真,0代表假。以if(1<=x<10)为例,若我们输入11,那是否执行紧跟在该条件后面的语句呢,换句话说此 时的返回值是0还是1呢?答案:执行(换句话说:返回值是1)。当输入11时,先对 1<=11 做判断,判断结果为真,即返回值为1,再用该返回 值1同10比较,结果也为真,所以当输入11时,判断语句 if(1<=x<10)为真。
若要表示——“如果大于等于1小于10”呢?正确答案:if(1<=x&&x<10)
参考代码:
#include<stdio.h>
int main()
{
int x,f;
scanf("%d",&x);
if(x<1){
f=x;
}
else if(1<=x<10){
f=2*x-1;
}
else{
f=3*x-11;
}
printf("%d\n",f);
return 0;
}
只要输入一个大于等于1的数,永远只执行else-if(1<=x<10)后面的2*x-1
修正方法:将else-if(1<=x<10)改成if(1<=x&&x<10)即可
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复