第一节 if语句-【单招零距离】计算机专业综合(下)

2025-04-23
| 2份
| 11页
| 150人阅读
| 0人下载

内容正文:

总复习方案·第四章选择结构程序设计 第四章 选择结构程序设计 大纲要求 1.掌握f语句。 2.理解switch语句实现多分支选择。 3.理解选择结构的嵌套。 第一节f语句 知识体系 ©⑤ 单分支 简单if 双分支 多分支f 嵌套if 一般嵌套 知识梳理 ⊙Y⑤ 一、选择结构 在顺序结构中,各语句按排列的先后次序无条件地顺序执行。而在实际应用中,常需要根 据某个条件来判断是否执行指定的任务。在程序中,利用选择结构来检查所指定的条件是否 满足,并根据检查的结果决定执行哪组语句。 l.C语言中的选择结构语句:if语句、switch语句。 2.条件:作为选择执行哪组语句的依据,可以是任意类型的表达式,通常是由 运算符组成的表达式。 3.条件判断:对指定条件进行判断,判断的结果有两种一真或假, 即为真,0 即为假。 二、简单if语句 1.单分支结构if语句 语句格式:if(表达式)语句: 语法含义:若表达式的值为非0(真),则执行语句:否则不执行语句。 2.双分支结构if…else…语句 语句格式:if(表达式) 语句1; else 语句2; ·51· 单招零距离·计算机专业综合·下册 语法含义:如果表达式的值为非0(真),则执行语句1,否则执行语句2。 三、嵌套if语句 在f语句中又包含其它一个或多个f语句,这被称为f语句的嵌套。 1.一般形式 f(表达式1) if(表达式2)语句1;[else语句2:] [else if(表达式3)语句3;[else语句4:] 说明:嵌套的形式有很多,可为单分支,也可为双分支。当嵌套在真分支的f结构为单分 支时,内嵌的f语句必须用 括起来。 2.嵌套的特殊形式 在f结构中,若内嵌的f总是出现在上层f的假分支中,该结构被称为 其一般形式为: f(表达式1) 语句1: else if(表达式2) 语句2: else if(表达式3) 语句3: 4 else语句n; 说明:else与if之间需留有空格,为便于阅读,书写时每个else应对齐。 3.嵌套f的使用说明 (1)嵌套f结构中,有f就必然有 ,else的个数 于if的个数: (2)分析嵌套f结构的关键是进行f一else配对,以便分清嵌套层次,配对原则为 (3)一个完整的f结构,无论嵌套多少层,最多仅会执行其中 条分支。 典例特析 Y⊙ 【例1】阅读程序,分析运行结果: #include <stdio.h int main() {inta=1,b=3,c=5: if (c==a+b) printf("yes "); else printf("no "): ·52· 总复习方案·第四章选择结构程序设计 【分析】本题考点是if语句基本形式的第二种。若c==a+b成立,则执行printf("yes n");否则(即c==a十b不成立),执行printf("non"):运算符十的优先级高于==,因此先 算a十b,值为4,表达式5==4不成立,因此执行printf("non");即输出字符串no。 【答案】no 【例2】阅读程序,分析运行结果: #include <stdio.h> int main() {intx=2,y=-1,z=5: if(x<y) if(y<0) z=0: else z=z十1: printf(“%d小n”,z): 【分析】遇到选择结构,首先要明确条件表达式成立时执行哪些操作。本题中,第一个「 语句,其后的复合语句没有大括号{},说明复合语句中只包含一条语句,进而省略了{}。内 层的if..else..是if语句的第二种基本形式,在结构上视为一条语句。因此内层的if.else. 作为第一个f语句的复合语句。 若表达式x<y成立,则继续判断,若y<0,则执行z=0;否则(即y>=0),执行z=z十1; 输出z。因2>一1,故表达式x<y不成立,因此不执行内层的if…else….进而z中的值没有 被改变。输出z中的值为5 【答案】5 【例3】题目:企业发放的奖金根据利润提成:利润(x)低于或等于10万元时,奖金可提 10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部 分,可提成7.5%:20万到40万之间时,高于20万元的部分,可提成5%:40万到60万之间时 高于40万元的部分,可提成3%:60万到100万之间时,高于60万元的部分,可提成1.5%,高 于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润x,求应发放奖金总数 bonus? 【分析】本题考点是多分支的if语句。根据题目,可以分析得出应发奖金bous和利润 x(单位:万元)之间的对应关系如下: 利润x(万元) 应发奖金bonus x<=10 0.1¥x 10<x<=20 10*0.1+(×-10)¥0.075 20<x<=40 1000.1十10*0.75+(x-20)00.05 40<x<=60 10%0.1+10¥0.75+20%0.5+(x-40)%0.03 60<x<=100 10¥0.1+10*0.75+20*0.5+20*0.3+(x-60)*0.015 x>200 10¥0.1+10¥0.75+20*0.5+20*0.3+40¥0.15+(x-100)*0.01 【答案】 程序源代码: ·53· 单招零距离·计算机专业综合·下册 #include <stdio.h int main() int x,bonus; scanf("%d",&.x): if(x<=10) bonus=x 0.1; else if(x<=20) bonus=10¥0.1+(x-10)*0.075: else if(x<=40) bonus=10¥0.1+10*0.75+(x-20)*0.05: else if(x<=60) bonus=10*0.1+10*0.75+20*0.5+(x-40)¥0.03; else if(x<=100) bonus=10*0.1+10¥0.75+20*0.5+20¥0.3+(x-60)¥0.015: else b0nus=10*0.1+10¥0.75+20*0.5+20*0.3+40*0.15+(x-100)*0.01; printf("bonus=%d",bonus); 巩固练习 ©r⊙ 1.写出程序的运行结果: #include <stdio.h> int main() int a=0,b=1,c=++b; if (a++) c++:b++; printf("a,b,c=%d,%d,%d",a,b,c): 2.为了使以下程序的输出结果为t=4,输入值a和b应满足的条件是 #include <stdio.h int main() int s,t,a,b: scanf ("d,%d",&.a,&.b): s=1; t=1; if(a>0)s=s十1: if (a>b)t=s+t; else if(a==b)t=5; else t=2 s; printf("s=%d,t=%d",s,t); ·54· 总复习方案·第四章选择结构程序设计 3.程序填空题:补充程序段,使其实现的功能与下列条件语句一致。 c-a>b?a:b; 程序段1: f c=a;else 程序段2: if(a>c) 4.下列四个程序段中含有嵌套f结构的有 ,其中含有多分支f结构的有 :程序段②中存在 个f结构,程序段③中存在 个f结构:程序段 ③中去掉{}后结构发生什么变化? ①if(a<1)x=1: ②if(a<1)x=3: if(a<2)x=2; else if (a<2)x=2; else x=3; else x=1; ③if(a<3){if(a<2)x=2:} ④if(a<1)x=1: else x=3; if(a<2)x=2; if(a<1)x=1: if(a<3)x=3: 5.下面程序的功能是:根据下表中给定的函数关系,对输人的每个x值计算出相应的y 值。请填空: 函数关系 y 1<x<=5 x 0<x<=1 2x x<=0 x-1 其它 -1 #include <stdio.h int main() int x,y; scanf("%d",&x); f(( ))y=x¥x; else if ( ))y=2*x; else if(x<=0)y=x-1; else printf("x=%d,y=%d ",x,y) 试 拓展练习 @gY⑤ 1.下述程序的输出结果是()。 #include <stdio.h int main ( {inta=0,b=0,c=0; ·55· 单招零距离·计算机专业综合·下册 if(++a>0||++b>0) ++c: printf("%d.%d,%d",a,b.c); } A.0,0,0 B.1,1,1 C.1,0,1 D.0,1,1 2.若执行以下程序时从键盘上输入3和4,则输出结果是()。 int main ( int a,b,s; scanf ("%d%d",&a,&b); s=a: if(a<b)s=b; S米=S: printf ("%d ",s); } A.14 B.16 C.18 D.20 3.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()。 if (a<b) if (c<d)x=1; else if (a<c) if (b<d)x=2; else x=3; else x=6; else x=7; A.1 B.2 C.3 D.4 4.从键盘上输入5,程序运行结果是 #include<stdio.h int main() int x; scanf("%d",&.x): if(x-->5) printf("%d ",x): else printf("%d ",--x); 5.下面程序的结果是 ,else与第 个if搭配。 #include<stdio.h int main() {inta=2,b=-1,c=2; if (a>b) ·56 总复习方案·第四章选择结构程序设计 if(b>0)c=0; else c+=1 printf("%d",c) 技能实践 ©Y⊙ 1x-lg5|(x≤1) 1.程序填空题:下列程序用来求y=1一x(一1<x<0)的值,请完善程序: 2(2x十5)(x≥0)】 #include <stdio.h #include <math.h int main() { scanf("%f",&.x); f if y=2*(2*x十5): else y=1-x; else printf("y=%f",y); } 2.程序填空题:从键盘输入一个年份,输出该年2月的天数。若年份能被4整除且不能被100 整除,或能被400整除,则该年为闰年。闰年2月的天数为29天,非闰年2月的天数为28天。 #include <stdio.h int main() int year,leap; scanf("%d",&.year); if )leap=1; else leap=0; printf("%d年2月的天数是%d",year,28+leap): } 3.从键盘上输入任意字符且判断其种类。如果是字母则输出提示"是字母",如是数字则 输出提示"是数字”,如都不是则输出提示"是其他字符”。 #include<stdio.h #include<ctype.h int main() char c; if printf("%c是字母! ",c) ·57. 单招零距离·计算机专业综合·下册 else if( ) printf("%c是数字!n",c) else printf("%c是其他字符! ",c) } 4.程序填空题:输入一个小写字母,将字母循环后移5个位置后输出。例如'变成f','w 变成b'。请填空: #include"stdio.h" int main() char c; c=getchar(); if(c>=a'&.&c<=u') else if(c>=v'8.8.c<=z') putchar(c); } 5.程序改错题:从键盘输人一个三角形三条边的边长依次存入变量a、b、c中,判断它们能 否构成三角形,若能,则判断构成的三角形是"等边三角形"或"等腰三角形"或"普通三角形"。 #include <stdio.h #include <math.h int main() double a,b,c; /米米米米米*米*米米*米f0und*米**关*米米关**/ scanf("%f%f%f",&.a,&.b,&.c); /米兴*兴*关¥米兴兴*米f0und米¥米¥¥¥0兴米关米米/ if(a+b>c&.&.a+c>b) ?米米米关米米*兴光兴米米f0und米兴米米关*米米米米*/ if(a==b==c) printf("构成等边三角形"): else if(a==blb==clla==c) printf("构成等腰三角形"): else printf("构成普通三角形"): else printf("不能构成三角形"); } ·58· 总复习方案·第四章选择结构程序设计 6.程序设计题:根据成绩,输出其等级。用多分支「语句实现。等级标准如下表所示: 分数x 等级 x=100 A 90≤x<100 B 80x<90 C 70x80 D 60x<70 E x<60 F #include <stdio.h int main() 了¥¥米米*¥*¥¥¥并BEGIN¥共关米关关¥¥米头¥/ 第二节switch语句 知识体系 Y⊙ [switch的用法 break的用法 switch 嵌套switch 多分支if与switch的关联 知识梳理 ©Y⊙ 一、switch的用法 实际问题中常常需要用到多个分支的选择,这些当然可以用嵌套的f语句来处理,但往 往造成f嵌套的层次很多,使程序冗长,不便于阅读。此时,便可使用switch语句实现。 1.一般形式: switch(表达式) case常量表达式1:语句l;[break;] case常量表达式2:语句2;[break;] case常量表达式3:语句3;[break;] ·59·}  3.第一种方法,采用中间变量t #include<stdio.h> intmain() { inta,b,t; printf("请输入两个正整数"); scanf("%d%d",&a,&b); printf("交换前a的值为%d,b的值为%d\ n",a,b); t=a;a=b;b=t; printf("交换后a的值为%d,b的值为%d\ n",a,b); } 第二种方法,不采用中间变量t #include<stdio.h> intmain() { inta,b; printf("请输入两个正整数"); scanf("%d%d",&a,&b); printf("交换前a的值为%d,b的值为%d\ n",a,b); a=a+b; b=a-b; a=a-b; printf("交换后a的值为%d,b的值为%d\ n",a,b); }  4.#include<stdio.h> intmain() {  chara,b;  floatx;  inty=35;  scanf("%c,%c,%f",&a,&b,&x);  printf("a=%c,b=%c,x=%.3E,y=%d ", a,b,x,y); }  5.#include<stdio.h> intmain() { charc1='C',c2='h',c3='i',c4='n',c5='a'; printf("原字符为:%c%c%c%c%c ",c1, c2,c3,c4,c5); c1+=4;c2+=4;c3+=4;c4+=4;c5+=4; printf("加密后的字符为:%c%c%c%c%c ", c1,c2,c3,c4,c5);  } 【技能实践】  1.程序填空题: (1)&x (2)(x-h∗3600)/60 (3)x%60或 x-h∗3600m∗60  2.程序改错题:  (1)scanf("%f",f);改成scanf("%f",&f);  (2)c=5/9∗(f-32);改成c=5.0/9∗(f-32);或c =5/9.0∗(f-32);或c=5.0/9.0∗(f-32);或c= (float)5/9∗(f-32);或c=5/(float)9∗(f-32);或c =(float)5/(float)9∗(f-32);  (3)printf("%d ",c);改成printf("%.1f ",c);  3.程序设计题: x=rand()%900+100; gw=x%10; sw=x/10%10; bw=x/100; y=gw∗gw∗gw+sw∗sw∗sw+bw∗bw∗ bw; 第四章 选择结构 第一节 if语句 【知识梳理】 一、选择结构 2.关系、逻辑 3.非0 三、嵌套if语句  1.一对大括号{}  2.多分支if语句  3.(1)(表达式) 上面小于或等于  (2)else总是和最近尚未配对的if配对  (3)一 【巩固练习】  1.a,b,c=1,3,2  2.0<a<b  3.程序段1:if (a>b) c=a;else c=b ;  程序段2: c=b ;if(a>c)  c=a ;  4.②、③ ② 1 2 分支x=3;与if(a<2)配  5.(x>1)&&(x<=5) (x>0)&&(x<=1) y=-1 【拓展练习】  1.C 2.B 3.B 􀅰51􀅰 总复习方案􀅰参考答案  4.3 5.2 2 【技能实践】  1.(1)floatx,y;  (2)(x>-1)  (3)(x>=0)  (4)y=fabs(x-log(5)/log(10))  2.year%4==0&&year%100||year%400==0  3.(1)c=getchar()  (2)isalpha(c)  (3)isdigit(c)  4.(1)c=c+5  (2)c=c+5-26  5.(1)scanf("%f%f%f",&a,&b,&c); 改为scanf("%lf%lf%lf",&a,&b,&c);  (2)a+b>c&&a+c>b 改为a+b>c&&a+c>b&&b+c>a  (3)a==b==c改为a==b&&b==c  6.#include<stdio.h>  intmain() { doublex; scanf("%lf",&x); printf("%.2lf,",x); if(x<0)printf("error!"); elseif(x<60)printf("%c",'F'); elseif(x<70)printf("%c",'E'); elseif(x<80)printf("%c",'D'); elseif(x<90)printf("%c",'C'); elseif(x<100)printf("%c",'B'); elseif(x==100)printf("%c",'A'); elseprintf("error!"); } 第二节 switch语句 【知识梳理】 一、switch的用法 2.相等 break 3.(1)分号 (2)整 字符 (3)":" 常 变 1 整 字符 三、switch与多分支if的关联 1.多 2.1 从匹配处向下依次执行 break 【巩固练习】  1.4  2.∗∗0∗∗ ∗∗2∗∗  3.a=2  4.passwarn67  5.m=3 【拓展练习】  1.AB  2.a=5,b=6  3.23  4.(1)'a' (2)'b' (3)'c' (4)'d' (5)break;  5.(1)m (2)len=31 (3)len=29 (4)break; 【技能实践】  1.Welcome!  2.(1)c=(int)(s/200) (2)printf("%f",p∗w∗s∗(1-d/100.0));  3.(1)switch(pk=getchar())  (2)case'6':case'7':case'8':case'9':f=-1;break;  (3)case'A':case'J':case'K':case'Q':f=0;break;  (4)case'w':case'W':f=1;break;  (5)if(f==-1)printf("落选");  (6)elseif(f==0)printf("待定");  (7)elseif(f==1)printf("晋级");  4.#include"stdio.h" main() { intn; scanf("%d",&n); if(n<1||n>12)   printf("输入出错!"); else { switch((n-1)/3) { case0:printf("春季!");break; case1:printf("夏季!");break; case2:printf("秋季!");break; case3:printf("冬季!");break; } } } 第3节 选择结构应用举例 【巩固练习】  1.2022isnotaleapyear  2.0.600000  3.ch>='A'&&ch<='Z' ch=ch-32  4.(1)31   (2)year%4==0&&year%100! =0||year%400 ==0 􀅰61􀅰 单招零距离􀅰计算机专业综合􀅰下册

资源预览图

第一节 if语句-【单招零距离】计算机专业综合(下)
1
第一节 if语句-【单招零距离】计算机专业综合(下)
2
第一节 if语句-【单招零距离】计算机专业综合(下)
3
第一节 if语句-【单招零距离】计算机专业综合(下)
4
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。