第七章: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头文件的一些函数。

表7.1 ctype.h头文件中字符测试函数
函数名 如果是下列参数时,返回值为真
isalnum() 字符数字(字母或数字)
isalpha() 字母
isblank() 标准的空白字符
iscntrl() 控制字符,如Ctrl+B
isdigit() 数字
isgraph() 除空格之外可打印的字符
islower() 小写字母
isprint() 可打印字符
ispunct() 标点符号
isspace() 空白字符,和上面有区别的
isupper() 是否大写字母
isxidgit() 十六进制字符
表7.2 ctype.h头文件中字符映射函数
函数名 行为
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 逻辑运算符

表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.5 条件运算符 ?:

又称三目运算符 三元运算符:

x = (y<0) ? -y :y;
相当于:
if(y<0)
    x = -y
else
    x = y

7.6 循环辅助: continue和break

7.6.1 continue语句

x大于5就跳下一次执行:

while(x<10){
    if(x>5){
        continue;
    }
}

7.6.2 break

x大于5就跳出循环:

while(x<10){
    if(x>5){
        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 关键概念

7.10 本章小结

如果对您有用,请我喝杯咖啡吧。

赞助扫码::
../../../_images/apay.jpg ../../../_images/pay_wechat.png