专题4:分支结构程序设计(讲义)-《编程语言基础—C语言》(高等教育出版社第5版)高考备考讲练测(湖南省)

2025-10-09
| 18页
| 132人阅读
| 1人下载
精品

内容正文:

专题4:分支结构程序设计(讲义) 《编程语言基础—C语言》专题复习讲练测 [考纲要求] 1:掌握条件语句、条件表达式的格式及其使用方法。 2:掌握多分支语句(switch)的格式及其使用方法。 3:掌握分支结构程序设计在程序设计中的实际应用。 [课时安排] 2课时 [知识梳理] 1、if语句 (1)概述 if语句通常被称为选择语句或者分支语句,他不再局限于顺序结构的单一流程,而是用来对给定条件进行判断,根据其判定结果,从操作中选择其一。if语句用于实现分支结构,在C语言中,提供了三种形式的if语句。 (2)一般形式:if(表达式) 语句; 例如:if(x>y) printf(“%d”,x); (3)说明: 执行if语句时,先对“表达式”进行求值,如果计算结果为非0(真),则执行其后的“语句”,否则跳过其后的“语句”。 “表达式”可以为任何类型的表达式,如下所示: (3)说明: ①“语句”可以是一条简单语句,也可以是用花括号{ }将几条语句括起来的一个复合语句。如下所示: ②用“{ }”括起来的复合语句被看成是一条语句。在编写程序时,注意,if(a==b)不要写成if(a=b),这两种书写方式在编译时均为正确的表达式,不会出现编译出错的提示,但其结果完全不一样。 (4)if语句的实际应用 例题:输入一个成绩score,如果成绩大于等于60,则显示“通过!”,否则不显示。 程序如下: #include <stdio.h> main() {int score; printf(“输入一个成绩:”); scanf(“%d”,&score); if(score>=60) printf(“通过! ”);} 2、if……else语句 (1)一般形式: if(表达式) 语句1; else 语句2; (2)执行过程如图所示: 如果“表达式”计算结果值为真,则执行语句1,否则执行语句2,其中,语句1和语句2部分可以是简单语句或者复合语句。 (3)复合语句 在if后面的“语句1”部分和else后面的“语句2”部分如果不止有一条语句,则应该用花括号“{}”将这几条语句括起来,成为一条复合语句。 (4)if...else语句的应用 例题1:输入一个成绩score,如果成绩大于等于60,则显示“通过!”,否则显示“未通过,继续努力”。 程序如下: #include <stdio.h> main() {int score; printf(“输入一个成绩:”); scanf(“%d”,&score); if(score>=60) printf(“通过! ”); else printf(“未通过,继续努力 ”);} 3、if……else if……else语句 (1)一般形式 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ........ else if(表达式m) 语句m; else 语句m+1; (2)执行流程图如图所示: (3)示例:(如下图所示) 当满足第一个条件时,if块内的代码就会被执行,此时else if后面的条件就会被忽略,如果if条件不成立,程序会检查下一个else if条件,只有当前if及后续所有的else if都不满足时,才会执行else部分(若有else)。 每一个else if都是对前一个if结果的一种补充,不是并行关系。 (4)说明 ①3种表达式的if语句中,在if后面都有表达式,一般为逻辑表达式或关系表达式,也可以是任意的数据类型(整型、实型、字符型、指针型数据) 例如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d”,’a’); ②在第二种、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处还有一个分号。这是由于分号是C语言中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的,若无此分号,则出现语法错误。 ③else子句不能作为语句单独使用,他必须是if语句的一部分,与if配对使用。 ④在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。在else上面的花括号“{}”外面不需要加分号,因为“{}”内是一个完整的复合语句,不需要另外附加分号。 4、if语句的嵌套 (1)定义:在if语句中又包含一个或者多个if语句称为if语句的嵌套。 (2)一般形式: if(表达式) if(表达式) 语句1; else 语句2; else if(表达式) 语句3; else 语句4; (3)在if语句的嵌套中,else总是与它上面最近且未配对的if配对。 5、条件语句 (1)概念:条件表达式要求有3个操作对象,称为三目(元)运算符,它是C语言中唯一的一个三目运算符,由“?”和“:”组成。 (2)一般形式:表达式1?表达式2:表达式3 (3)执行过程如图所示: 若表达式1的结果为真(或非0),则条件表达式的值等于表达式2的值;若表达式1的结果为假(或为0),则结果为表达式3的值。 例如:m=(x>y)? x:y ; (4)注意事项 ①条件运算符的优先级高于赋值运算符,低于关系运算符和算数运算符。 例:x>y?x:y-1 等价于 (x>y)?x:(y-1) ②条件运算符的结合性是“右结合性”,即自右向左,可以理解为先从右边开始加括号。 例:a==b?(c=0):a>b?(c=2):(c=-2)等价于a==b?(c=0):(a>b?(c=2):(c=-2)) ③“表达式2”和“表达式3”不仅可以是数值表达式,还可以是赋值表达式,或者“函数表达式” 例:a>b?(a=100):(b=100)或a>b? printf(“%d”,a):printf(“%d”,b) 6、多分支语句(swicth语句) (1)一般形式 switch(表达式) {case 常量表达式1:语句部分1;break; case 常量表达式2:语句部分2;break; ........... case 常量表达式n:语句部分n;break; default: 语句部分n+1; } (2)说明 ①switch后面括号内的“表达式”,其值可以是整型、字符型、枚举类型数据。 ②当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值相匹配的,就执行default后面的语句。 ③执行完一个case后面的语句后,流程控制转移到下一个case继续执行。 ④“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断。 ⑤在执行switch语句时,根据switch后面的表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断,直到运行到最后或者遇到break语句。 ⑥每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象,即对表达式的同一值,有两种或者多种执行方案。 ⑦当switch语句中的每一句case后面均有break语句结束程序的话,那么各个case的出现次序不影响执行结果。 ⑧多个case可以共用一组执行语句。 7、分支结构程序设计 例1:有3个整数a,b,c,由键盘输入,输出其中最大的数。使用if语句编写或者条件语句编写。 例2:有一个函数,如图所示。编写程序,输入x的值,输出y相应的值。 [真题练讲] 1.(2009年湖南高考真题)程序分析题。以下程序的输出结果为:____________ #include<conio.h> #include "stdio.h" main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d ",a,b); getch(); } 【答案】a=2,b=1 2.(2009年湖南高考真题)程序分析题。以下程序的输出结果为:____________ #include<conio.h> #include "stdio.h" main() { int i=1,j=1,k=2; if((j++||k++)&& i++) printf(“%d,%d,%d ",i,j,k); getch(); } 【答案】2,2,2 3.(2009年湖南高考真题)程序分析题。以下程序的输出结果为:____________ #include <conio.h> #include <stdio.h> main() { int a=2,b=7,c=5; switch(a>0) { case 1:switch(b<0) {case 1:printf("@");break; case 2:printf("!");break; } case 0:switch(c==5) {case 0:printf("*");break; case 1:printf("#");break; case 2:printf("$");break; } default:printf("&"); } printf(" "); getch(); } 【答案】#& 4.(2012年湖南高考真题)阅读程序,写出运行结果:____________ #include <conio.h> #include <stdio.h> main() { int x=2,y=7,z=5; switch(x>2){ case 1:switch(y>0){ case 1:printf("1");break; case 2:printf("2");break; } case 0:switch(z==5){ case 0:printf("3");break; case 1:printf("4");break; default:printf("5");break; } default:printf("6"); } getch(); } 【答案】46 5.(2012年湖南高考真题)程序填空题。下面程序输出x,y,z三个数中的最大值。 #include<stdio.h> main() { int x=3,y=7,z=6; int a,b; a=x<y? ________(1)________; b=a<z? ________(2)________; printf("%d",b); } 【答案】(1)y:x (2)z:a 6.(2014年湖南高考真题)程序填空题。输入三角形的三边a、b、c,判断a、b、c能否构成三角形,如果能够构成三角形则判断为何种类型的三角形:等腰三角形、等边三角形、直角三角形、等腰直角二角形、一般三角形。说明:―般三角形:两条边长之和大于第三条边长;等腰三角形:两条边长相等;等边三角形:三条边长相等;直角三角形:两条边长的平方和等于第三条边长的平方。 #include <stdio.h> #include<math.h> main() { float a,b,c; printf(”请输入三角形边长"); scanf("%f%f%f',&a,&b,&c); if(______①_______) printf ("不能构成三角形 "); else if (_______②________) if ((a=b)||(b=c)||(c=a)) printf("等腰直角三角形 "); else printf ("直角三角形 "); else if(_______③________) printf ("等边三角形 "); else if (______④_______) printf ("等腰三角形 "); else printf (一般三角形 "); } 【答案】①a+b<c||a+c<b||b+c<a ②a*a+c*c==b*b||a*a+b*b==c*c||b*b+c*c==a*a ③a==b&&b==c ④a==b&&a==c||a==b&&b==c 7.(2014年湖南高考真题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> main() { int i=0,j=1,z=2; if((j++||z++)&&i++); printf("%d,%d,%d ",i,j,z); getch(); } 【答案】1,2,2 8.(2014年湖南高考真题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> main() { int n='b'; switch(++n){ default :printf ("error");break; case 'a': case 'A': case 'b': case 'B':printf ("pass");break; case 'c': case 'C':printf ("good"); case 'd': case 'D':printf ("luck"); } getch(); } 【答案】goodluck [限时练习] 1.(2020年湖南高考真题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> main() { unsigned int a=6; int b=-20; (a+b>6)? puts("sum>6"): puts("sum<=6"); getch(); } 【答案】sum>6 2.(2019年湖南省高考真题)单项选择题。已知“int w=1,x=2,y=3,z=4;”,则表达式“w>x?w:z>y? z:x”的值是( ) A.1 B.2 C.3 D.4 【答案】D 3.(2023年湖南高考真题)程序填空题。一件衣服 80元,消费满300元,打九折;消费满500元,打八折。试编程实现以下功能:输入购买衣服件数,输出购买件数和需付金额(元)。 # include"stdio.h" int main( ) {int s,n; ______①______ printf("n="); scanf("%d",&n); s=n*80; switch(_____②_____) {case 0: case 1: case 2: break; case 3: case 4: d=0.9; break; _____③_______ d=0.8; } ______④_______ printf("n=%d,s=%d ",n,s); return 0; } 【答案】①float d=1.0; ②s/100 ③default: ④s*=d; 4.(2022年湖南高考真题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> int main( ) { signed char c=128; int i=10; (c+i>10)? puts("sum> 10"):puts("sum<=10"); getch(); } 【答案】sum<=10 5.(2021年湖南高考真题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> main() {int a =5,b=6,result =0; result =(a>b)?(a>>1):(b<<1); printf("result=%d ", result); getch(); } 【答案】result=12 6.(2024年湖南高考真题)程序填空题。如需对个人一次性劳务报酬征收所得税,假设:收入未超过800元,不纳税;收人超过800元、未超过5000元,减除800元后再按“应纳税额=(收入-800)x20%”纳税;收入超过5 000元,按“应纳税额=收入x(1-20%)x30%”纳税。编程实现以下功能:从键盘输入个人一次性取得的劳务报酬,根据上述计算方法,计算并输出应纳税额。 # include<stdio.h> int main( ) { _____①_____ printf("Input Income=:"); _____②_____ if(_____③_____) tax=0; else if(income<=5000) ______④_______ else tax=income *0.8*0.3; print("tax=%.0f ",tax); return 0; } 【答案】①float income,tax; ②scanf("%f", &income); ③income <=800 ④tax(income-800)*0.2; 7.(2025年湖南高考真题)程序填空题。居民月用电量(度)采用阶梯计费方式。用电量C: 当0<C<=200时为第一阶梯,每度电0.58元;200<C<=500时为第二阶梯,每度电0.73元; 超过500的部分为第三阶梯,每度电0.92元。试编程实现以下功能: 输入月用电量C(整数),计算并输出需支付的电费(元)。 #include <stdio.h> int main( ) { int c; float m; ______①______ float m2=300*0.73; printf("C="); ______②______ if(c<0){ printf("error ! "); return 1; } else{ switch((c+99)/100){ case 0: case l: case 2: ______③______ break; case 3: case 4: case 5: m=m1+(c-200)*0.73; break; ______④_______ m=m1+m2+(c-500)*0.92; } } printf("m=%.2f",m); return 0; } 【答案】①float m1=200*0.58; ②scanf(“%d”,&c); ③m=c*0.58 ④default: 8.(2017年湖南高考真题)单项选择题。分析以下程序,下列说法正确的是( ) #include <stdio.h> void main() { int x=3,a=3,b=3; if(x=a+b) printf("****"); else printf("@@@@"); } A.输出:**** B.输出: @@@@ C.不能通过编译,有语法错误 D.能通过编译,但不能连接 9.(2017年湖南高考真题)程序填空题。从键盘上输入一个百分制成绩score,按下列原则输出其评分等级:score≥90,等级为A; 80≤score<90,等级为B;70≤score<80,等级为C;60≤score<70,等级为D; score<60,等级为E。请补全下列代码: #include <stdio.h> void main( ) { int data; _____①______//定义 grade字符变量 printf("请输入成绩:"); scanf("%d",_____②______); switch(data/10) { case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; ______③_______ } printf("评分等级为:%c",_____④_____); } 【答案】①char grede; ②&data ③default:grade=‘E’; ④grade 10.(2018年湖南一轮联考题)阅读程序,写出运行结果:___________ #include <conio.h> #include <stdio.h> int main() { int i=2,j=3,k=4; if(i++==2&&(++j==3||k++==3)) k++; printf("%d %d %d ",i,j,k); getch(); } 【答案】 3 4 5 [内容小结] 一、条件语句 • if语句:最基本的条件判断语句,格式为if(条件表达式),当条件表达式为真时,执行其后的语句。 • if...else语句:在if语句基础上,当if的条件不满足时,执行else后的语句,实现二选一的分支逻辑。 • if...else if...else语句:可实现多分支的条件判断,依次判断多个条件,满足某个条件就执行对应的语句,都不满足则执行else后的语句。 • if语句的嵌套:在if或else的语句块中,再包含if语句,用于处理更复杂的多层条件判断场景。 • 条件表达式:作为if等条件语句的判断依据,结果为真(非0)或假(0)。 二、多分支语句(switch语句) 用于处理多分支选择情况,格式为switch(表达式),根据表达式的值,匹配case后的值,执行对应的语句,若没有匹配的case,可执行default后的语句,常与break配合使用,避免分支穿透。 三、分支结构程序设计实例 通过实际的程序案例,如根据成绩判断等级(90及以上为优秀,80 - 89为良好等)、根据用户输入的选项执行不同操作等,来展示分支结构在解决实际问题中的应用。 学科网(北京)股份有限公司 $

资源预览图

专题4:分支结构程序设计(讲义)-《编程语言基础—C语言》(高等教育出版社第5版)高考备考讲练测(湖南省)
1
专题4:分支结构程序设计(讲义)-《编程语言基础—C语言》(高等教育出版社第5版)高考备考讲练测(湖南省)
2
专题4:分支结构程序设计(讲义)-《编程语言基础—C语言》(高等教育出版社第5版)高考备考讲练测(湖南省)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。