在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断。实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两种或多种操作选择其一。
4.1选择结构和条件判断
例:定义一个函数,如果饿了吃饭。如果不饿不吃饭。
1 #include <stdio.h> 2 int main() 3 { 4 int a; 5 printf("请输入一个数 0或1 ,0代表不饿,1代表饿了\n"); 6 scanf("%d",%a); 7 if(a!=0||a!=1) 8 printf("输入错误\n"); 9 if(a==1) 10 printf("饿了,吃饭。。。\n"); 11 else 12 printf("不饿,不吃饭。。。\n"); 13 return 0; 14 }
1 若输入0则,输出“不饿,不吃饭。。。” 2 若输入1则,输出“饿了,吃饭。。。” 3 若输出其他值,输出”输入错误“
C语言有两种选择语句:(1)if语句,用来实现两个分支的选择结构;(2)switch语句,用来实现多分支的选择结构。
4.2 用if语句实现选择结构
4.2.1 用if语句处理选择结构举例
例:实现两个变量的交换
1 #include <stdio.h> 2 int main() 3 { 4 int a,b,temp; 5 printf("请输入两个数a b\n"); 6 scanf("%d%d",a,b); 7 printf("你输入的值a=%d,b=%d\n",a,b); 8 printf("正在交换两个数的位置\n"); 9 temp = a; 10 a = b; 11 b = temp; 12 printf("交换后的值a=%d,b=%d\n",a,b); 13 return 0; 14 }
1 若输入1,2;则输出: 2 { 3 请输入两个数a b 4 你输入的值a=1,b=2 5 正在交换两个数的位置 6 交换后的值a=2,b=1 7 }
4.2.2 if语句的一般形式
if语句的一般形式如下:
if(表达式) 语句1
[else 语句2]
if语句中的“表达式”可以使关系表达式、逻辑表达式,甚至是数值表达式。
关系表达式就是两个数值进行比较的式子。
根据if语句的一般形式,if语句可以写成不同的形式,最常用的优以下3中形式:
(1)if(表达式)
语句1[复合语句] (没有else子句部分)
(2)if(表达式) (有else子句部分)
语句1[复合语句]
else
语句2[复合语句]
(3)if(表达式1) 语句1[复合语句] (在else部分又嵌套了多层的if语句)
else if(表达式2) 语句2[复合语句]
else if(表达式3) 语句3[复合语句]
… …
else if(表达式m) 语句m[复合语句]
else 语句m+1[复合语句]
注意:复合语句应当用花括号括起来。{} 花括号括起来的多条语句称为复合语句。
4.3 关系运算符和关系表达式
在C语言中,比较符(或称比较运算符)称为关系运算符。所谓“关系运算”就是“比较运算”,将两个数值进行比较,判断其比较的结果是否符合给定的条件。
4.3.1 关系运算符机器优先次序
C语言提供6中关系运算符:
①< (小于)
②<= (小于或等于)
③> (大于)
④>= (大于或等于)
⑤== (等于)
⑥!= (不等于)
①②③④优先级相同(高),⑤⑥优先级相同(低)
关于优先次序:
(1)前四种关系运算符(< <= > >=)的优先级相同,后2种也相同。前4种高于后2种。
(2)关系运算符的优先级低于算术运算符
(3)关系运算符的优先级高于赋值运算符
4.3.2 关系表达式
用关系运算符将两个数值或数值表达式连接起来的式子,称关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。
在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”。更准确来说,是“!0”代表真,“0”代表假。
4.4 逻辑运算符和逻辑表达式
4.4.1 逻辑运算符及其优先次序
有3中逻辑运算符:与(AND) 或(OR) 非(