# 选择结构 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 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 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 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 int main() { int year; scanf("%d", &year); if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { printf("闰年"); } else { printf("平年"); } return 0; } ```