选择结构与条件判断
C语言有两种选择语句:
if语句实现两个分支的选择结构。
switch语句用来实现多分支的选择结构。
if语句
if语句:
//格式:
if(表达式) {
满足表达式执行语句;
} else if(表达式) {
满足表达式执行语句;
} else if(表达式) {
满足表达式执行语句;
}
...
else {
满足表达式执行语句;
}
常见表达式类型:
关系式,逻辑式,数值表达式
//关系表达式:由关系运算符构成的表达式
if(12>11) //为真则执行 if,else if 括号住的语句
//逻辑表达式:由逻辑运算(! && ||)符构成的表达式
if(!1)
if(1||0)
if(1&&0)
//数值表达式:只要是非0都判断为真
if(1)
关系运算符
运算符优先级:
- 算术运算符(+ - * /)>关系运算符(> < != ==…)>赋值运算符(=)
- 关系运算符中 == !=优先级比其他低
逻辑运算符
a | b | !a | !b | a&&b | a||b |
---|---|---|---|---|---|
真 | 真 | 假 | 假 | 真 | 真 |
真 | 假 | 假 | 真 | 假 | 真 |
假 | 真 | 真 | 假 | 假 | 真 |
假 | 假 | 真 | 真 | 假 | 假 |
优先级:
- !(非)>&&(与)>||(或)
- !>算数运算符
- 关系运算符>&&和||>赋值运算符
条件运算符
条件运算符其实可以看做是对判断语句的简写
如
if(a>b)
max=a;
else
max=b;
等价于下列程序:
max=(a>b)?a:b;
其中a:b为条件表达式及,?为条件运算符
其执行效果为:
若a>b为真,则返回a(:的前面)
若a>b为假,则返回b(:的后面)
优先级:
条件运算符比关系运算符和算术运算符都低
如:
a>b?a:b+1 等价于 a>b?a:(b+1),而不等于 (a>b?a:b)+1
switch语句(不大推荐初学者使用)
形式:
switch(表达式)
{
case 常量1 :执行语句;break;
case 常量2: 执行语句; break;// 满足表达式== 常量2
...
default : 执行语句; break; //以上都不满足
}
switch注意事项:
- 表达式的值与case后的值相同则进入。
- 遇到break或整个switch结束
例子:
switch(0)
{
case 0:
printf("0\n");
case 1:
printf("1\n");
}
练习:
判断输入年份是否为闰年(闰年条件:能被4整除且能被100整除,或者能被400整除)
输入三个数(不相同的三个数),输出其最大值
输入一个成绩等级,输出分数区间
A等区间为85~100
B等区间为70~84
C等区间为60~69
D等区间为60以下
制作一个两个数的计算器 实现加减乘除功能
思考题: 不使用第三个数 互换两个数的值