02 分支结构程序设计
1.字符类型
1.1 字符型数据
字符型数据是用单引号括起来的一个字符。数字被定义为字符型之后就不能参与数值运算。如 '5'
和 5
是不同的。 '5'
是字符型数据,不能参与运算。
转义字符是一种特殊的字符。转义字符以反斜线\
开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
常用的转义字符 | ||
转义字符 | 意义 | ASCII代码 |
\n | 回车换行 | 10 |
\t | 横向跳到下一制表位置 | 9 |
\b | 退格 | 8 |
\r | 回车 | 13 |
\f | 走纸换页 | 12 |
\ \ | 反斜线符“\” | 92 |
1.2 字符类型说明符 char
字符变量的类型说明符是 char 。字符变量类型定义的格式和书写规则都与整型变量相同。
例如:char a,b;
1.3 专用于输入/输出字符的 getchar/putchar 函数
getchar()作用是用户用输入设备输入一个字符(可以是转义字符,打印字符),回车键表示输入结束。它有一个整型的返回值,当发生读取错误的时候,返回整型值 -1 。当读取正确的时候,它会返回用户从键盘输入的第一个字符的 ASCII 码。空格,回车,Tab 键均认为是字符。
putchar()作用是向显示器屏幕输出一个字符。格式为 putchar(ch) 。ch 可以是单引号下的一个字符或者 0~127 内的整型数或者已用char定义好的一个变量。
#include <stdio.h>
int main(void){
char ch;
ch = getchar();
putchar(ch);
return 0;
}
注: C 语言中 int main() 和 int main(void) 的区别
2.多路选择语句(swich 语句)
2.1 逻辑运算符和表达式
逻辑运算符 | 类型 | 含义 | 优先级 | 综合性 |
! | 单目运算符 | 逻辑非 | 最高 | 右>>左 |
&& | 双目运算符 | 逻辑与 | 次高 | 左>>右 |
|| | 双目运算符 | 逻辑或 | 最低 | 左>>右 |
用逻辑运算符把操作数连接起来的式子称为逻辑表达式。其值仅可能为真( 1 )或假( 0 )。
运算符!
只需要一个操作数,所以叫单目运算符,也叫一元运算符,因为一元运算符的优先级比其他运算符高,所以表中 !
的优先级最高,其次是 &&
,再次是 II
。
2.2 逻辑运算
(1)与运算:一假则假,否则为真。仅当两个操作数都为真的时候,运算结果才为真;只要有一个为假,运算结果就为假。
(2)或运算:一真则真,否则为假。两个操作数中只有一个为真,运算结果为真;仅当两个操作数都为假,运算结果才为假。
(3)非运算:若真则假,若假则真。若操作数的值为真,则其逻辑非运算的结果为假;反之,则为真。
A取值 | B取值 | !A 逻辑非 | A&&B 逻辑与 | A||B 逻辑或 |
非0 | 非0 | 0 | 1 | 1 |
非0 | 0 | 0 | 0 | 1 |
0 | 非0 | 1 | 0 | 1 |
0 | 0 | 1 | 0 | 0 |
2.3 swich 语句 语法
多分支理解为多个 if ,这时使用 swich 会更简洁。
switch(expression){
case constant-expression :
statement(s);
break;
default :
statement(s); }
switch 语句必须遵循下面的规则:
- switch 语句中的 expression 是一个常量表达式,必须是一个 整型或枚举类型 。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个 要比较的值 和一个 冒号 。
- case 的 constant-expression 必须与 switch 中的变量具有 相同的数据类型,且必须是一个 常量或字面量 。
- 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
- 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
特别注意:
switch 下的 case
和 default
必须用一对大括号 {}
括起来。default
后面可以什么都不写,但后面的冒号 :
和分号 ;
不能省略。