142 lines
3.8 KiB
Markdown
142 lines
3.8 KiB
Markdown
# 选择结构
|
||
|
||
1. **关系运算符**
|
||
|
||
| 符号 | 作用 |
|
||
| ---- | -------- |
|
||
| > | 大于 |
|
||
| >= | 大于等于 |
|
||
| < | 小于 |
|
||
| <= | 小于等于 |
|
||
| == | 等于 |
|
||
| != | 不等于 |
|
||
|
||
2. **逻辑运算符**
|
||
|
||
| 符号 | 作用 |
|
||
| ---- | ------------------------------------------------------------ |
|
||
| && | 逻辑与(且)。两者都为真时,结果才为真,有一个为假,结果为假 |
|
||
| \|\| | 逻辑或。有一个为真,结果为真,两个都为假时,结果为假 |
|
||
| ! | 逻辑非(不是)。为真时,取反为假;为假时,非就为真 |
|
||
|
||
在C语言中,关系表达式,**值为0代表假,非零代表真**
|
||
|
||
| 关系表达式 | 值 |
|
||
| ----------------- | ----------------------------------- |
|
||
| 5 > 0 | 1 |
|
||
| 5 < 3 | 0 |
|
||
| 5 > 0 && 4 > 2 | 1 |
|
||
| 5 > 0 \|\| 5 > 8 | 1 |
|
||
| !(5 > 0) | 0 |
|
||
| (a = 3) > (b = 5) | 0 |
|
||
| x = (10 <= 20) | 1 |
|
||
| y = (10 >= 20) | 0 |
|
||
| y = (a = 30) | 30 |
|
||
| b % 7 == 0 | 0 表示b不能够被7整除,因为余数不为0 |
|
||
|
||
|
||
|
||
各种不同运算符之间也是有优先级的,优先级如下,左边最高,右边最低
|
||
|
||
! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
|
||
|
||
|
||
|
||
### 三目运算符
|
||
|
||
三目运算符,使用问号和冒号组成,共三个表达式,格式如下
|
||
|
||
**条件 ? 表达式 : 表达式**
|
||
|
||
```c
|
||
max = (a > b) ? a : b
|
||
// 如果 a > b 为真,则把a的值存入max变量当中,否则就把b的值存入max变量当中
|
||
```
|
||
|
||
### if语句
|
||
|
||
```c
|
||
// if 语句 条件为真则执行括号里面的内容,注意,if不需要分号结尾,如果if里只有一个语句,则可省略大括号
|
||
if (条件) {
|
||
语句;
|
||
}
|
||
```
|
||
|
||
### 交换两个变量的值
|
||
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main() {
|
||
int a, b, t;
|
||
printf("a=");
|
||
scanf("%d", &a);
|
||
printf("b=");
|
||
scanf("%d", &b);
|
||
/*
|
||
a = b;
|
||
b = a;
|
||
直接交换的方式,会导致两个变量里存着相同的值,所以在交换时,我们需要对其中一个变量的值做一个值的备份
|
||
*/
|
||
t = a; // 备份a变量里的值
|
||
a = b; // 改变a变量里的值,变为b变量的值
|
||
b = t; // 把备份的值在存入b变量当中
|
||
printf("交换a b值后:\n")
|
||
printf("a=%d\n", a);
|
||
printf("b=%d\n", b);
|
||
return 0;
|
||
}
|
||
```
|
||
|
||
# 练习
|
||
|
||
1. 输入三个整数,判断输入的前两个数加起来是否等于第三个数,如果是,则输出yes,否则输出no。
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main() {
|
||
int a, b, c;
|
||
scanf("%d%d%d", &a, &b, &c);
|
||
if (a + b == c) {
|
||
printf("yes");
|
||
} else {
|
||
printf("no");
|
||
}
|
||
return 0;
|
||
}
|
||
```
|
||
|
||
2. 输入两个整数,并判断其中一个数是否是另一个数的倍数,如果是,则输出yes,否则输出no。
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main() {
|
||
int a, b;
|
||
scanf("%d%d", &a, &b);
|
||
if (a % b == 0 || b % a == 0) {
|
||
printf("yes");
|
||
} else {
|
||
printf("no");
|
||
}
|
||
return 0;
|
||
}
|
||
```
|
||
|
||
3. 输入一个整数,代表年份,判断该年是否为闰年,如果是,则输出yes,否则输出no。(能被4整数,并且不能被100整除,或者能被400整除的年份被称为闰年)
|
||
```c
|
||
#include <stdio.h>
|
||
|
||
int main() {
|
||
int year;
|
||
scanf("%d", &year);
|
||
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
|
||
printf("闰年");
|
||
} else {
|
||
printf("平年");
|
||
}
|
||
return 0;
|
||
}
|
||
```
|
||
|
||
|