目录
前言
在C语言中,主要有两种选择语句:if
语句和switch
语句。
下面是它们各自的基本语法和示例。
一、if语句
if语句:用来实现两个分支的选择结构。
1.if语句的一般形式
//1.没有else子句部分
if(表达式) 语句1
//2.有else子句部分
if(表达式){
语句1
}else{
语句2
}
if 语句基本形式是:if (表达式)语句,“表达式”值可以是任意合法的数值。
2.级联的if-else语句
示例:交电费,分阶段收费
#include<stdio.h>
int main() {
float x = 0.0;
float y = 0.0;
scanf_s("%f", &x);
if (x <= 100) y = x * 0.5;
else if (x > 100 && x <= 300) y = 100 * 0.5 + (x - 100) * 0.8;
else if (x > 300 && x <= 1000) y = 100 * 0.5 + 200 * 0.8 + (x - 300) * 1.2;
else y = 100 * 0.5 + 200 * 0.8 + 700 * 1.2 + (x - 1000) * 2;
//这里需要注意“&&”符号,区别于数学书写方式
printf("%f\n", y);
return 0;
}
3.嵌套的if-else语句
示例:找出三位数中的最大值?
#include<stdio.h>
int main() {
int a, b, c;
int max = 0;
scanf_s("%d%d%d", &a, &b, &c);
if (a > b) {
if (a > c) {
max = a;
}
else {
max = c;
}
}
else {
if (b > c) {
max = b;
}
else {
max = c;
}
}
printf("三位数中最大为%d", max);
return 0;
}
二、switch语句
switch语句:实现多分支选择结构。
其基本语句为:
switch(控制表达式)
{
case 常量:
语句;
break;
default:
语句;
break;
}
示例1:常用switch语句处理菜单命令。
#include<stdio.h>
int main() {
int type;
scanf_s("%d", &type);
switch (type) {
case 1:
printf("主人,请吩咐妲己");
break;
case 2:
printf("没有心,就不会受伤");
break;
case 3:
printf("知识就是力量");
break;
default:
printf("退出游戏");
break;
}
return 0;
}
switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。
示例2:(假设在示例1的基础上删除第2、3 个break)
三、关系、逻辑、条件运算符和表达式
1.关系运算符与关系表达式
例如:a>3是一个关系表达式,>是一个关系运算符。
> | >= | < | <= | == | != |
---|---|---|---|---|---|
大于 | 大于等于 | 小于 | 小于等于 | 等于 | 不等于 |
优先级相同(高) | 优先级相同(低) |
运算符优先级(算术运算符>关系运算符>赋值运算符)
例如:(1)c>a+b 等价于 c>(a+b) 算术运算符优先级高于关系运算符
(2)a>b==c 等价于 (a>b)==c 大于运算符优先级高于相等运算符
(3)a==b<c 等价于 a==(b<c) 小于运算符优先级高于相等运算符
(4)a=b>c 等价于 a=(b>c) 关系运算符优先级高于赋值运算符
2.逻辑运算符与逻辑关系式
运算符 | 含义 | 举例 | 说明 |
&& | 逻辑与(and) | a&&b | 全真则真,一假全假 |
|| | 逻辑或(or) | a||b | 一真全真,全假才假 |
! | 逻辑非(not) | !a | 假则为真,真则为假 |
运算符优先级(!>算术运算符>关系运算符>&&和||>赋值运算符)
3.条件运算符与条件表达式
条件运算符 | 举例 | 说明 |
表达式1?表达式2:表达式3 | (a>b)?a:b | 如果表达式1为真,取值表达式2;为假,取值表达式3 |
总结
以上对C语言的选择语句进行了基础性讲解,包括基础语法展示、示例展示和相关运算符。
后期需要搭配训练题加深对C语言的理解。