C语言之条件分支结构
2015-05-27 17:57
246 查看
1.运算符:
1.关系运算符:
在C语言中,非0(非零)表示真(对),0(零)表示假(错)。
2.逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!) ;
int a = 10, b = 20, c =30;
a > b && b> c //正确写法
a > b > c //错误写法
逻辑运算短路状况:
u 与运算时,表达式1&&表达式2,如果表达式1为假,表达式2不再执行
u 或运算时,表达式1||表达式2,如果表达式1为真,表达式2不再执行
3.运算符优先级:
2.程序分支:
if分支:
l if分支语句
格式:if(表达式){分支语句}
规则:当表达式成立时,执行分支语句;表达式不成立时,不执行分支语句
l if..else分支语句
格式:if(表达式)
{分支语句1}
else{分支语句2}
规则:当表达式成立时,执行分支语句1;表达式不成立时,执行分支语句2(属于2选1的情况)
l if..elseif..else分支语句
格式:if(表达式1){分支语句1}
else if(表达式2){分支语句2}
else{分支语句3}
规则:当表达式1成立时,执行分支语句1;表达式2成立时,执行分支语句2,否则执行表达式3;此为多选一多情况。且需要一层一层比较,直到表达式成立或整个条件分支语句结束。
三目运算(三元运算):
公式:表达式1?表达式2:表达式3;
当表达式1成立时,获得表达式2的结果;
当表达式1不成立时,获得表达式3的结果。
例如:a > b ? c : d;
switch..case:
switch(整型表达式)
{
case 数值1:
语句1;
break;
case数值2:
语句2;
break;
}
switch(整型表达式)
{
//多条件判断,与if的逻辑或一样
case:数值1:
case:数值2:
break;
}
等同于
if(表达式1 ||
表达式2){};
从表达式获得值后,直接匹配到相应到数值执行代码,而不需要一层一层的判断(跟if..elseif..else的区别),这样代码执行效率高。
注意:
l 整型表达式必须是整型(包含字符型,因为字符型本质就是整型)。
l break不要忘记。
l switch..case可以用if..elseif ..else替换,但if..elseif..else不一定可以用switch..case
替换。
易错点:
问题1:(编译器造成)
float height;
printf(“请输入身高:”);
scanf(“%f”,&height);
if(height > 0 && height <= 1.20)
{
printf(“不用购票\n”);//代码块1
}
else
{
printf(“输入有误!\n”);//代码块2
}
PS:这时输入1.2,不会执行代码块1,而执行代码块2(本应该执行代码块1的)。
原因:
float的精度不够高,会出现误差,得到到值是1.200005,会大于1.2,所以不在if
条件的范围内。
解决方法:
把float height
改为 double height;(double的精度会比float的精度高,不会出现误差,可以等到值1.200000),尽量用double类型来定义数值。
1.关系运算符:
在C语言中,非0(非零)表示真(对),0(零)表示假(错)。
运算符 | 含义 | 示例 |
< | 小于 | i< j |
> | 大于 | i>j |
<= | 小于等于 | i <= 12 |
>= | 大于等于 | i >= 12 |
== | 等于 | i == 12 |
!= | 不等于 | i != 12 |
int a = 10, b = 20, c =30;
a > b && b> c //正确写法
a > b > c //错误写法
逻辑运算短路状况:
u 与运算时,表达式1&&表达式2,如果表达式1为假,表达式2不再执行
u 或运算时,表达式1||表达式2,如果表达式1为真,表达式2不再执行
3.运算符优先级:
运算符 | 结合性 |
() | 从左到右 |
一元运算符,包括一元 -, ++, --, ! | 从右到左 |
*,/,% | 从左到右 |
+,二元 - | 从左到右 |
<, <=, >, >= | 从左到右 |
==, != | 从左到右 |
&& | 从左到右 |
|| | 从左到右 |
+=, -=, *=, /=, = | 从右到左 |
if分支:
l if分支语句
格式:if(表达式){分支语句}
规则:当表达式成立时,执行分支语句;表达式不成立时,不执行分支语句
l if..else分支语句
格式:if(表达式)
{分支语句1}
else{分支语句2}
规则:当表达式成立时,执行分支语句1;表达式不成立时,执行分支语句2(属于2选1的情况)
l if..elseif..else分支语句
格式:if(表达式1){分支语句1}
else if(表达式2){分支语句2}
else{分支语句3}
规则:当表达式1成立时,执行分支语句1;表达式2成立时,执行分支语句2,否则执行表达式3;此为多选一多情况。且需要一层一层比较,直到表达式成立或整个条件分支语句结束。
三目运算(三元运算):
公式:表达式1?表达式2:表达式3;
当表达式1成立时,获得表达式2的结果;
当表达式1不成立时,获得表达式3的结果。
例如:a > b ? c : d;
switch..case:
switch(整型表达式)
{
case 数值1:
语句1;
break;
case数值2:
语句2;
break;
}
switch(整型表达式)
{
//多条件判断,与if的逻辑或一样
case:数值1:
case:数值2:
break;
}
等同于
if(表达式1 ||
表达式2){};
从表达式获得值后,直接匹配到相应到数值执行代码,而不需要一层一层的判断(跟if..elseif..else的区别),这样代码执行效率高。
注意:
l 整型表达式必须是整型(包含字符型,因为字符型本质就是整型)。
l break不要忘记。
l switch..case可以用if..elseif ..else替换,但if..elseif..else不一定可以用switch..case
替换。
易错点:
问题1:(编译器造成)
float height;
printf(“请输入身高:”);
scanf(“%f”,&height);
if(height > 0 && height <= 1.20)
{
printf(“不用购票\n”);//代码块1
}
else
{
printf(“输入有误!\n”);//代码块2
}
PS:这时输入1.2,不会执行代码块1,而执行代码块2(本应该执行代码块1的)。
原因:
float的精度不够高,会出现误差,得到到值是1.200005,会大于1.2,所以不在if
条件的范围内。
解决方法:
把float height
改为 double height;(double的精度会比float的精度高,不会出现误差,可以等到值1.200000),尽量用double类型来定义数值。
相关文章推荐
- c语言学习第三课:条件分支结构
- C语言随堂笔记---条件分支结构
- ASP入门教程-多分支条件选择结构
- 《C语言及程序设计》实践项目——分支结构程序设计体验
- PHP学习笔记——PHP单路分支和双路分支,else if多项条件分支结构;
- JAVA if条件语句,switch多分支结构,与逻辑运算符
- 条件分支结构(switch-case)(if-else if-else) 2011.05.09
- 第1周 C语言及程序设计初步 例程-2 用switch语句实现多分支结构
- C语言之选择分支结构的应用
- C语言分支循环结构
- c语言:求三个数中的最大值(双分支结构)
- 条件分支结构的两种表现方式
- 《C语言及程序设计》实践参考——单分支结构流程图-大值
- 第一周《C语言及程序设计》实践项目23 用if语句实现分支结构
- C语言小白(3)——分支结构if语句
- 条件结构(分支结构)/循环结构
- C语言--分支结构
- 条件分支结构
- 《C语言及程序设计》实践参考——双分支结构流程图-大值
- C语言中分支结构及循环结构的简单介绍