一、条件表达式
条件表达式用来表示一个条件是否成立,它只有两个值,即真(true)和假(false)。
例如“a > 0”就是一个条件表达式,如果a>0,则条件成立,即该表达式的值为真;如果a <= 0,则条件不成立,即该表达式的值为假。
在C语言中,用数字0表示假,用一个非0整数表示真(通常用1表示)。
条件表达式由变量与条件运算符组成:
1. C语言中的条件运算符
符号 | 说明 |
---|---|
> | 大于 |
< | 小于 |
== | 等于 |
!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
#include<stdio.h>
void main()
{
int a = 1;
printf("%d\n", a == 1); // 结果为真,输出1
printf("%d\n", a > 1); // 结果为假,输出0
printf("%d\n", a < 1); // 结果为假,输出0
printf("%d\n", a != 1); // 结果为假,输出0
printf("%d\n", a >= 1); // 结果为真,输出1
printf("%d\n", a <= 1); // 结果为真,输出1
}
2. C语言中的逻辑运算符
符号 | 说明 | 作用 |
---|---|---|
&& | 并且 | 如果两个条件表达式都为真,则结果为真,否则结果为假 |
|| | 或者 | 只要其中一个条件表达式的结果为真,则结果为真;如果两个表达式的结果都为假,则结果为假 |
! | 取反 | 对一个条件表达式使用,将真变为假,将假变为真 |
逻辑运算符用于条件表达式间的运算:
#include<stdio.h>
void main()
{
int a = 1, b = 2;
printf("%d\n", a == 1 && b == 2); // 结果为真,输出1
printf("%d\n", !(a == 1)); // 结果为假,输出0
printf("%d\n", a == 2 || b == 2); // 结果为真,输出1
}
二、if分支结构
1. 单分支结构
如果条件表达式的结果为真,则执行代码块中的代码
if(条件表达式)
{
代码;
}
2. 二分支结构
- 如果条件表达式的结果为真,则执行代码块1中的代码;
- 如果条件表达式的结果为假,则执行代码块2中的代码
if(条件表达式)
{
代码块1;
}
else
{
代码块2;
}
3 . 多分支结构
- 如果条件表达式1的结果为真,则执行代码块1中的代码;
- 如果条件表达式1的结果为假,且条件表达式2的结果为真,则执行代码块2中的代码;
- 如果条件表达式1的结果为假,且条件表达式2的结果为假,则执行代码块2中的代码;
if(条件表达式1)
{
代码块1;
}
else
{
if(条件表达式2)
{
代码块2;
}
else
{
代码块3;
}
}
多分支结构本质上是二分支结构或单分支结构间的组合。
如果if或else下面的代码块里只有一行语句,我们可以省略“{}”,如下面的代码:
#include<stdio.h>
void main()
{
int a = 1;
if(a > 0)
printf("a是正数");
else if(a < 0)
printf("a是负数");
else
printf("a是0");
}
三、三元表达式
条件表达式 ? 表达式1 : 表达式2
如果条件表达式的值为真,则执行表达式1,否则执行表达式2。
利用 三元表达式 可以减少代码量。
扫描二维码关注公众号,回复: 11464582 查看本文章
例如:
#include<stdio.h>
void main()
{
int x, y;
y = x > 0 ? x + 1 : x - 1;
printf("%d", y);
}
等价于
#include<stdio.h>
void main()
{
int x, y;
x = 5;
if(x > 0)
y = x + 1;
else
y = x - 1;
printf("%d", y);
}
四、switch分支结构
switch(变量)
{
case 1: //如果变量的值为1,则跳转到这里,并向下执行
代码1;
break;
case 2: //如果变量的值为2,则跳转到这里,并向下执行
代码2;
break;
case 3: //如果变量的值为3,则跳转到这里,并向下执行
代码3;
break;
default: //如果变量的值不是1,不是2,也不是3,则跳转到这里,并向下执行
代码4;
break;
}
- break指跳出当前switch语句。
- 传入到switch语句里的变量只能是整数。(char型变量也是可以的,因为char型也是整数)
如果不加break,在跳转到某处时,代码就会依次向下执行,直到代码块的最后。
#include<stdio.h>
void main()
{
int a = 2;
switch(a)
{
case 1:
printf("a是1\n");
case 2:
printf("a是2\n");
case 3:
printf("a是3\n");
case 4:
printf("a是4\n");
}
}
上面的代码会输出
a是2
a是3
a是4
这是因为在跳转到“case 2:”后,没有遇到break语句,所以代码块中余下的代码都被执行了。正确的做法是为它们添加break语句。
#include<stdio.h>
void main()
{
int a = 2;
switch(a){
case 1:
printf("a是1\n");
break;
case 2:
printf("a是2\n");
break;
case 3:
printf("a是3\n");
break;
case 4:
printf("a是4\n");
break;
}
}
小练习
编写一个程序,输入一个学生的成绩(整数),然后按下列规则输出对其成绩的评价:
- 90-100为 优
- 80-89为 良
- 70-79为 中
- 60-69为 可
- 60分以下为 差
解析
-
利用if语句
#include<stdio.h> void main() { int n; scanf("%d", &n); if(n >= 90) printf("优"); else if(n >= 80) printf("良"); else if(n >= 70) printf("中"); else if(n >= 60) printf("可"); else printf("差"); }
-
利用switch语句
#include<stdio.h> void main() { int n; scanf("%d", &n); switch(n / 10) { case 10: case 9: printf("优"); break; case 8: printf("良"); break; case 7: printf("中"); break; case 6: printf("可"); break; default: printf("差"); break; } }
好了,文章到这里就结束了,我们下一节再见
每周五晚20:00更新