c语言分支结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖ 说明:与单分支if语句不同的是在条件为“真 (非0)”或“假(0)”时执行指定的不同 的操作。对条件表达式进行判断,若其值为 “真(非0)”时,就执行语句1;若其值为 “假(0)”时,就执行语句2。其执行过程 见流程图4.2。
ຫໍສະໝຸດ Baidu
❖ 例如:给学生成绩划分:成绩大于或等于60 分时输出“passed”,成绩小于60分时输出 “failed”。用双分支if语句描述为:
if ( grade > = 60 )
printf ( “passed\n ” ) ; ❖ 又如:x大于y就输出x,用单分支if语句描述
为:
if ( x > y )
printf ( “%d ”, x ) ;
4.1.2 双分支if语句
❖ 它的一般格式如下:
if (表达式) 语句1;
else 语句2;
grade > = 60 ?printf ( “passed\n ” ) :printf ( “failed\n ” ) ;
x > y ?printf ( “%d ”, x ) :printf ( “%d ”, y ) ;
❖ 由此说明适当的语句修改条件运算符可以完 成if / else结构相同的功能。
❖ 【例4-1】编程实现给一百分制成绩,要求输 出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为‘A’等,89~80分为‘B’等, 79~70分为‘C’等,69~60分为‘D’等,60 分以下为‘E’等。
❖ 【源程序】 ❖ main( ) ❖{ ❖ int grade; ❖ printf ( "input the grade:"); ❖ scanf ("%d",&grade); ❖ if (grade>=90) ❖ printf("A\n"); ❖ else if(grade>=80) ❖ printf("B\n"); ❖ else if(grade>=70) ❖ printf("C\n"); ❖ else if(grade>=60) ❖ printf("D\n"); ❖ else ❖ printf("E\n"); ❖}
❖ 对【例4-1】用switch语句改写如下: ❖ 【源程序】 ❖ main( ) ❖{ ❖ int grade; ❖ printf("input the grade:"); ❖ scanf("%d",&grade); ❖ switch(grade/10) ❖{ ❖ case 10: ❖ case 9: printf("A\n"); ❖ case 8: printf("B\n"); ❖ case 7: printf("C\n"); ❖ case 6: printf("D\n"); ❖ default : printf("E\n"); ❖} ❖}
❖ switch ( 表达式 )
❖{
❖ case 常量表达式1:语句1;
❖ case 常量表达式2:语句2;
❖
┆
❖ case 常量表达式n:语句n;
❖ default
: 语句m;
❖}
❖ 说明:其执行过程为进入switch结构后,根据表达 式的值从上到下去找与其相匹配的case,以此作为 入口,执行其后面的各语句。
if ( grade > = 60 )
printf ( “passed\n ” ) ;
else
printf ( “failed\n ” ) ;
❖ 在前面的章节还提到过与if / else结构密切相 关的条件运算符 ?:,它是C语言中唯一的 三目运算符(即有三个操作数)。对上面的 两例用条件运算符改写为:
❖ if (表达式1)
❖ 语句1;
❖ else if (表达式2)
❖ 语句2;
❖ else if (表达式3)
❖ 语句3;
❖
┆
❖ else if (表达式m)
❖ 语句m;
❖ else
❖ 语句n;
❖ 说明:开始执行该结构后,便依次去对多个 条件进行判断测试,符合某一条件,则转去
执行该条件下的操作,其它部分将被跳过; 如果无一条件为“真(非0)”,就执行最后 一个else所指定的操作,这个else可以看作 “其它情形”。应当特别注意if与else的匹配 关系:规则是从最内层开始,else总是与它 上面最近的(未曾配对的)if配对。其执行过 程见流程图4.3。
第三部分 C语言的结构语句 第4章 选择结构
4.1 if 语句
❖ 4.1.1 单分支if语句 它的一般格式如下: if(表达式) 语句; 说明:对条件表达式进行判断,若其值为 “真(非0)”时执行语句,若其值为“假 (0)”时则跳过语句。其执行过程见流程图 4.1。
❖ 例如:设定学生成绩60分为及格分数线,用 单分支if语句描述为:
例如:if ( x > 100 )
{ x-- ; s=+x ; }
else
{ x++ ; s=+x ; } ❖ 此时又要注意:在“{}”后面不能再添加分号,因为
“{}”内是一个完整的复合语句,不需要再添加分号。
4.1.3 多分支if语句
❖ 对于解决判断多个条件的问题,可以使用if语句的嵌套,即在if语句中又 包括一个或多个if语句。它的一般格式如下:
❖ 说明:
❖ 1.对于单分支和双分支if后面的“表达式”,一般为 逻辑表达式或关系表达式,事实上表达式的类型不 限于此,可以是任意的数值类型(包括整型、实型、 字符型、指针型数据)。只要表达式的值为非0, 就认为它为真;只要表达式的值为0,就认为它为 假。
例如: if ( 6 ) printf ( “passed\n ” ) ;
4.2 switch语句 4.2.1 switch语句
❖ 对于解决实际生活中例如人口统计分类、工 资统计分类、银行存款分类等等的多分支选 择问题,采用多分支if语句(即if语句的嵌套) 来处理固然可以,但是如果分支较多,则嵌 套的if语句层数多,程序冗长而且会导致可读 性降低。C语言提供了直接处理多分支选择 的switch语句,它的一般格式如下:
if ( ‘A’ ) printf ( “%d ”, ‘A’ ) ;
这些都是合法的if语句。
❖ 2.对于双分支if语句,else子句不能作为语句单独使 用,它必须是if语句的一部分,与if配对使用。
❖ 3.if语句后面的表达式之后不能增加分号,同时注意 语句后面的分号不能遗漏。
❖ 4.在if和else后面可以只包括一个内嵌的操作语句, 也可以包括多个操作语句,此时务必用“{}”将几个 语句括起来成为一个复合语句。
ຫໍສະໝຸດ Baidu
❖ 例如:给学生成绩划分:成绩大于或等于60 分时输出“passed”,成绩小于60分时输出 “failed”。用双分支if语句描述为:
if ( grade > = 60 )
printf ( “passed\n ” ) ; ❖ 又如:x大于y就输出x,用单分支if语句描述
为:
if ( x > y )
printf ( “%d ”, x ) ;
4.1.2 双分支if语句
❖ 它的一般格式如下:
if (表达式) 语句1;
else 语句2;
grade > = 60 ?printf ( “passed\n ” ) :printf ( “failed\n ” ) ;
x > y ?printf ( “%d ”, x ) :printf ( “%d ”, y ) ;
❖ 由此说明适当的语句修改条件运算符可以完 成if / else结构相同的功能。
❖ 【例4-1】编程实现给一百分制成绩,要求输 出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为‘A’等,89~80分为‘B’等, 79~70分为‘C’等,69~60分为‘D’等,60 分以下为‘E’等。
❖ 【源程序】 ❖ main( ) ❖{ ❖ int grade; ❖ printf ( "input the grade:"); ❖ scanf ("%d",&grade); ❖ if (grade>=90) ❖ printf("A\n"); ❖ else if(grade>=80) ❖ printf("B\n"); ❖ else if(grade>=70) ❖ printf("C\n"); ❖ else if(grade>=60) ❖ printf("D\n"); ❖ else ❖ printf("E\n"); ❖}
❖ 对【例4-1】用switch语句改写如下: ❖ 【源程序】 ❖ main( ) ❖{ ❖ int grade; ❖ printf("input the grade:"); ❖ scanf("%d",&grade); ❖ switch(grade/10) ❖{ ❖ case 10: ❖ case 9: printf("A\n"); ❖ case 8: printf("B\n"); ❖ case 7: printf("C\n"); ❖ case 6: printf("D\n"); ❖ default : printf("E\n"); ❖} ❖}
❖ switch ( 表达式 )
❖{
❖ case 常量表达式1:语句1;
❖ case 常量表达式2:语句2;
❖
┆
❖ case 常量表达式n:语句n;
❖ default
: 语句m;
❖}
❖ 说明:其执行过程为进入switch结构后,根据表达 式的值从上到下去找与其相匹配的case,以此作为 入口,执行其后面的各语句。
if ( grade > = 60 )
printf ( “passed\n ” ) ;
else
printf ( “failed\n ” ) ;
❖ 在前面的章节还提到过与if / else结构密切相 关的条件运算符 ?:,它是C语言中唯一的 三目运算符(即有三个操作数)。对上面的 两例用条件运算符改写为:
❖ if (表达式1)
❖ 语句1;
❖ else if (表达式2)
❖ 语句2;
❖ else if (表达式3)
❖ 语句3;
❖
┆
❖ else if (表达式m)
❖ 语句m;
❖ else
❖ 语句n;
❖ 说明:开始执行该结构后,便依次去对多个 条件进行判断测试,符合某一条件,则转去
执行该条件下的操作,其它部分将被跳过; 如果无一条件为“真(非0)”,就执行最后 一个else所指定的操作,这个else可以看作 “其它情形”。应当特别注意if与else的匹配 关系:规则是从最内层开始,else总是与它 上面最近的(未曾配对的)if配对。其执行过 程见流程图4.3。
第三部分 C语言的结构语句 第4章 选择结构
4.1 if 语句
❖ 4.1.1 单分支if语句 它的一般格式如下: if(表达式) 语句; 说明:对条件表达式进行判断,若其值为 “真(非0)”时执行语句,若其值为“假 (0)”时则跳过语句。其执行过程见流程图 4.1。
❖ 例如:设定学生成绩60分为及格分数线,用 单分支if语句描述为:
例如:if ( x > 100 )
{ x-- ; s=+x ; }
else
{ x++ ; s=+x ; } ❖ 此时又要注意:在“{}”后面不能再添加分号,因为
“{}”内是一个完整的复合语句,不需要再添加分号。
4.1.3 多分支if语句
❖ 对于解决判断多个条件的问题,可以使用if语句的嵌套,即在if语句中又 包括一个或多个if语句。它的一般格式如下:
❖ 说明:
❖ 1.对于单分支和双分支if后面的“表达式”,一般为 逻辑表达式或关系表达式,事实上表达式的类型不 限于此,可以是任意的数值类型(包括整型、实型、 字符型、指针型数据)。只要表达式的值为非0, 就认为它为真;只要表达式的值为0,就认为它为 假。
例如: if ( 6 ) printf ( “passed\n ” ) ;
4.2 switch语句 4.2.1 switch语句
❖ 对于解决实际生活中例如人口统计分类、工 资统计分类、银行存款分类等等的多分支选 择问题,采用多分支if语句(即if语句的嵌套) 来处理固然可以,但是如果分支较多,则嵌 套的if语句层数多,程序冗长而且会导致可读 性降低。C语言提供了直接处理多分支选择 的switch语句,它的一般格式如下:
if ( ‘A’ ) printf ( “%d ”, ‘A’ ) ;
这些都是合法的if语句。
❖ 2.对于双分支if语句,else子句不能作为语句单独使 用,它必须是if语句的一部分,与if配对使用。
❖ 3.if语句后面的表达式之后不能增加分号,同时注意 语句后面的分号不能遗漏。
❖ 4.在if和else后面可以只包括一个内嵌的操作语句, 也可以包括多个操作语句,此时务必用“{}”将几个 语句括起来成为一个复合语句。