第七章:C控制语句 分支和跳转¶
- 本章介绍以下内容
- 关键字:if、 else、switch、continue、break、case、default、goto
- 运算符: &&、||、?、
- 函数:getchar()、putchar()、ctype.h
- 如何使用if和if else语句,如何嵌套他们
- 在更复杂的测试表达式中用逻辑运算符组合关系表达式
- C的条件运算符
- switch语句
- break、continue、和goto语句
- 使用C的字符I/O函数:getchar()和putchar()
- ctype.h头文件提供的字符解析函数
7.1 if语句¶
#include <stdio.h> int main(void){ if(1<2){ printf("ok\n"); }else{ printf("no\n"); } }
7.2 if else语句¶
如上
7.2.1 L另外一个示例 介绍getchar()和putchar()¶
目前为止,学过的大多数程序都要求输入数值。以下将介绍和scanf()、printf()不同的一对函数:
getchar()函数不到任何参数,它从输入队列中返回下一个字符:
ch = getchar()
打印出来:
putchar(ch)
反正是比printf()和scanf()实用。
7.2.2 ctype.h系列的字符函数¶
//ctype.c //替换输入的字符 #include <stdio.h> int main(void){ char ch; while((ch=getchar())!= '\n'){ if(isalpha()){ //如果是一个空字符 putchar(ch+1); //显示该字符的下一个字符 }else{ putchar(ch); } } putchar(ch); //显示换行符 return 0; }
表7.1和7.2列出ctype.h头文件的一些函数。
函数名 | 如果是下列参数时,返回值为真 |
---|---|
isalnum() | 字符数字(字母或数字) |
isalpha() | 字母 |
isblank() | 标准的空白字符 |
iscntrl() | 控制字符,如Ctrl+B |
isdigit() | 数字 |
isgraph() | 除空格之外可打印的字符 |
islower() | 小写字母 |
isprint() | 可打印字符 |
ispunct() | 标点符号 |
isspace() | 空白字符,和上面有区别的 |
isupper() | 是否大写字母 |
isxidgit() | 十六进制字符 |
函数名 | 行为 |
---|---|
tolower() | 如果参数是大写字符,返回小写字符。 |
toupper() | 返回大写字符。 |
7.2.3 多重选择 else if¶
if(1>2){
printf("ok");
}else if(2>3){
printf("ok");
}else{
printf("no");
}
7.2.4 else与if 配对¶
略
7.2.5 多层嵌套的if语句¶
略
7.3 逻辑运算符¶
逻辑运算符 | 含义 |
---|---|
&& | 与 |
|| | 或 |
! | 非 |
使用:
5>2 && 4>7 为假
5>2 || 4>7 为真
!(4>7) 为真
7.3.1 备选拼写:iso646.h头文件¶
定义iso646.h头文件后,可以使用and or not 代替 &&、||、!符号
7.3.2 优先级¶
略
7.3.3 求值顺序¶
略
7.3.4 范围¶
略
7.4 一个统计单词的程序¶
略
7.6 循环辅助: continue和break¶
7.7 多重选择 switch和break¶
当ch为a进入case ‘a’执行,然后break退出:
switch(ch){
case 'a':
printf("a\n");
break;
case 'b':
printf("b\n");
break;
}
7.7.1 switch语句¶
略
7.7.2 只读每行的首字母¶
略
7.7.3 多重标签¶
switch(ch){
case 'a':
case 'A':
printf("a\n");
break;
case 'b':
printf("b\n");
break;
}
7.7.4 switch和if else¶
略
7.8 goto语句¶
早期使用,现在已经废弃 略
7.9 关键概念¶
略