第三节 选择结构应用举例-【单招零距离】计算机专业综合(下)

2025-04-23
| 2份
| 12页
| 103人阅读
| 0人下载

内容正文:

单招零距离·计算机专业综合·下册 else if(f-0)printf("待定") /关*关*关**关*关关*$ound关*※关*关*兴关关关关/ else if(f-1)printf("晋级"); elseprintf(”出错”); 4. 程序设计题:从键盘输入一个整数,如果整数在1一12,则输出对应的季节(月份和季节 对应关系如下表所示),否则输出“输入出错!”。 #includestdio.h>int main( ) 关关 关关 *关关 **BEGIN** 关*关* 苦 *关 月份 季节 1-3月 春季 4一6月 夏季 7一9月 秋季 10-12月 冬季 * 关**关关*关关END*关*关关关关关关 第二节 选择结构应用举例 知识体系 [分段函数问题(如商场打折、行李计费、IP地址分类问题等 最大值最小值问题 间年问题 选择结构应用举例方程求解 日期相关问题 四则运算 知识梳理 选择结构通过判断某些特定条件是否满足来决定下一步的执行流程,是非常重要的控制 结构。常见的有单分支选择结构、双分支选择结构、多分支选择结构以及嵌套的分支结构,形 式灵活多变。 C语言中的选择结构语句有两种:if语句和switch语句。switch语句一般用于判断固定 值的时候;if语句用于判断区间或范围的时候。用switch语句能实现的,用f语句都能实现 反之则不然。 .68. 总复习方案·第四章 选择结构程序设计 典例精析 【例1】有一个分段函数如下,编一程序,输入一个x值,输出y值。 (一1(x<0) y-0(x-0) 1(x0) 【分析】 1 本题有两种方法:首先通过scanf(“%d”,&.x);语句的执行,得到x的值,方法 一是先判断如果x<0,则将-1赋给v,否则继续判断,如果x=一0,则将0赋给y,否则将1 赋给y;方法二是先判断x一0,如果条件成立,直接执行嵌套的if.....else,否则直接执行最 后一个else,将一1赋给y。 【答案】 方法一: #include<stdio.h> int main() int x,y; scanf(“d”,&.x); if(x0)y--1; else if(x--0)y-0; elsey-l; printf(“x-%d,y-%dn”,x,y); 方法二: #includestdio.h> int main() int x.y; scanf(“%d”,&x) if(x>-0) if(x>0)y-1; elsey-0; elsey--1; printf(“x-%d,y-%dn”,x,y); 【例2】输入3个数,按从大到小的顺序输出。 【分析】设3个数分别是a、b和c,把它们中最大者存放在a中,把次大者存放在b中,e 中存放最小者,然后依次输出a、b和c 【答案】 共include"stdio.h" int main() 1 inta,b,c,t; .69. 单招零距离·计算机专业综合·下册 printf (”please input the three number:"); scanf(”%d,%d,%d”,&.a,&.b,&.c); if (ab)t=a;a=b;b=t; /*a和b的值交换* if (ac)t=a;a=c;c=t;)/*a和c的值交换×/ if (b<c){t=b;b=c;c=t;)/xb和c的值交换*/ printf("%d,%d,%dn”,a,b,c) ) 运行时从键盘输入2,3,1,程序运行结果为:3,2,1 【例3】求一元二次方程ax{}+bx十c=0的根。 【分析】 由键盘输入a,b,c。假设a,b,c的值任意,并不保证b{②一4ac0。需要在程序中 进行判别,如果b{}一4ac0,就计算并输出方程的两个实根,否则就输出“方程有共辄复根”的 信息。 【答案】 共include <stdio.h> #include <math.h> int main() double a,b,c,disc,xl,x2,p,q; printf(“输入方程的3个系数(a,b,c):n”) scanf("%lf%lf%1f",&.a,&.b,&.c); if(fabs(a)<-1e-6)//判断a是否为零 printf(“n该方程不是一个二次方程!n”); else disc-b*b-4*a*c; if(fabs(disc)--le-6) printf(“方程有两个相等实根:%8.4fn”,-b/(2*a)); else if( disc>1e-6) (x1-(-b+sart(disc))/(2*a); x2-(-b-sqrt(disc))/(2*a); printf(“方程有两个相等实根:n”); printf(“x1-%7.2f x2-%7.2f ”,x1,x2); 1 else (p--b/(2*a); q-sqrt(-disc)/(2*a); printf(“方程有两个共矩复根: ”); printf(“x1一%7.2f十%7.2fi ”,p,q);//打印虚根; printf(“x2-%7.2f-%7.2fi ”,p,q) ) . 70. 总复习方案·第四章 选择结构程序设计 【例4】 从键盘输入一个日期(年一月一日),计算这个日期是这一年中的第几天? 【分析】本题的解法一般是先计算某月以前月份的总天数,再加上当月的天数,需要注意 的是当输入的月份超过2月份且当年是国年时,因当年2月份天数是29天,总天数要加1。 【答案】 #includestdio.h> int main() ( int day, month,year, sum, leap; printf("请输入一个日期(yyyy一mm一dd):"); scanf("%d-%d-%d",&.year,&.month,&.day); switch(month)/先计算某月以前月份的总天数 ( case 1:sum =0;break; case 2:sum - 31:break case 3:sum - 59;break: case 4:sum - 90;break: case 5:sum -120:break: case 6:sum -151:break; case 7:sum -181;break case 8:sum -212;break; case 9:sum = 243;break: case 10:sum - 273:break; case11:sum - 304;break; case 12:sum - 334:break: default:printf("data error");break 。 sum=sum十day;/再加上某天的天数 if(year%400==0 l1(year%4=-0&.&.year%100!=0))//判断是不是闯年 leap-1; else leap-0; if(leap=-1&.&.month>2)//*如果是闺年且月份大于2,总天数应该加一天 sum+十: printf(”这是这一年的第%d天。”,sum); printf(“ "); 巩固练习 1. 若运行以下程序时输入:2022<回车>,则程序的运行结果是 #include<stdio.h int main() .71. 单招零距离·计算机专业综合·下册 ( inty,t; scanf("%d",&.y); =($y%4==0&.&y% 10!=0)lly%400==0)?1:; if(t) printf("%dis”,y); else printf("%d is not",y); printf("a leapyear"); 2. 若运行如下程序是输入,610/<回车>,则程序的运行结果是 ,include<stdio.h> int main() i float x,y; char c; doubler; scanf(“%f%f%c”,&.x,&.y,&.c); switch(c) case'十':r-x十y:break: case'-':r-x-y;break; case'*':r=x*y;break; case':r-xy;break; ) printf(“%f”,r); 3.以下程序的功能是;输入一个字符,如果它是一个大写字母,则把它变成小写字母;如 果它是一个小写字母,则把它变成大写字母;其他字符不变。请填空。 #include<stdio.h> int main() / char ch; scanf("%c”,&.ch); iff( )ch-ch士32; else if(ch>-a'&.&.ch<-z') printf(“%c”,ch); 一 4.程序填空题:本题功能是从键盘输人一个日期(年一月一日),计算这个日期是这一年 中的第几天? 甘include"stdio.h" int main() int year,month,day,days-o; printf("请输入一个日期(yyyy一mm一dd):n”); .72. 总复习方案·第四章 选择结构程序设计 scanf("%d-%d-%d".&.year,&.month,&.day) switch(month-1) (case 11:days+-30; case 10:days十= case9:days+-30: case 8:days+-31; case 7:days+-31; case 6:days+-30; case5:days+-31; case 4:days+-30; case3:days+-31; case 2: if( days+-29; else days十-28; case 1:days+-31; ) days一 printf("%d一%d-%d是这一年中第%d天. ”,year,month,day,days); ) 5.输入一个十进制数,根据输入的数输出所对应的英文星期单词,若所输入的数小于1 或大于7,则输出“Error”,请编程实现。 共include<stdio.h> int main() /inta; scanf("%d",&a); 关关关关*关关关*关BEGIN关关关关关关x关*关关/ /*关关*关*关**关*END关关***关关**关关/ 拓展练习 1. 写出下列程序的运行结果。 #include<stdio.h intmain() .73. 单招零距离·计算机专业综合·下册 ( int i,t,s=0; for(i=1;i=10;i++) t-i%3; switch(t) case0:s-s十1; case 1:s=s+2:break: case2:s=s+3: ) if(s>18)break; ) printf(“i=%d,s=%d”,i,s) 2. 写出下列程序的运行结果。 #includeSstdio.h int main() ( int i-1,n=0,s=-1; switch(i%5) default:s=s+2;++n; case 1:s=s十1;++i;break; case 3:s=s十3;n十+; case4:s-s+5;i++; ) printf("i-%d,n-%dns-%dn",i,n,s); 。 3.以下程序的功能是;根据输入的三角形的三条边,判断是否能组成三角形,若可以则输 出它的面积和三角形的类型。请填空。 甘include”math.h” int main() float a,b,c: float s,area; scanf(“%f%f%f”,&.a,&.b,8.c); if( rs-(a十b十c)/2; area-aqrt(s*(s一a)*(s-b)*(s-c)); printf(“%f",area); if printf(“等边三角形”); elseif( ) printf(“等腰三角形”); else if((axa+bxb==c*c)|I(a*a+c*c==bxb) |(b*b+c*c==a* . 74· 总复习方案·第四章 选择结构程序设计 a)) printf(“直角三角形”); elseprintf(“一般三角形”); / else printf(“不能组成三角形”); 4. 程序设计题;从键盘输入一个整数,输出这个数能被3、5、7整除的所有可能的情况。 共include"stdio.h" int main() . intx,t-0; scanf("%d",&.x); (**关******关*BEGIN**** ****** (*关***关*关关关*END* 5.程序设计题:IP地址分类如下: A类地址:1.0.0.1-126.255.255.254 B类地址:128.0.0.1-191.255.255.254 C类地址:192.0.0.1-223.255.255.254 D类地址:224.0.0.0-239.255.255.255 E类地址,240- 从键盘输入一个ip地址的第一个字节的十进制数值,判断其所属的地址类别(A~E)。 共include"stdio.h' int main() intx:chart: scanf("%d”,&x) ) .75. 单招零距离·计算机专业综合·下册 技能实践 1. 程序填空题:某邮局对邮寄包裹有如下规定,若包裹的长、宽、高任一尺寸超过1米或 重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.5元,再加上根据表4一2按 不同重量weigh计算的邮资。请填空。 重量与邮资 重量(千克) 邮资(元/千克) weigh<10 0.80 10<weigh<20 0.75 20<weigh<30 0.70 tinclude"stdio.h" int main() float len,weigh,hei,wid,mon,r: scanf(“%f%f%f%f”,&.len,&wid,&.hei,&.weigh) if(len>1|wid>1 hei>1l weigh>30) else if(weigh10) r-0.8; else if(weigh<-20) r-0.75: else if(weigh<-30) if(r-一-1) printf(“error "); else printf(“%f”,mon);) _ 2. 程序改错题:假设风速为整数,根据风速判断风的类别,风速和类别的关系如下 风速(MPH) 类别 低于25 弱风 2538 强风 3~54 大风 55~72 狂风 73以上 腿风 .76· 总复习方案·第四章 选择结构程序设计 #include <stdio.h> int main() ( int x; printf(”请输入风速X一”); scanf("%d",&.x) if(x<72) printf(“此风为腿风 ”); else if(x>-55) printf(”此风为狂风n”); else if(x>-39) printf(“此风为大风n”); /**** * ****FOUND*******¥关/ else if(x-25) printf(”此风为强风n”); else printf(”此风为弱风n”) 。 3. 程序设计题:假设英文大小写字母的权值分别为 A-E,a-e ””。 F-J,f一j K-O,k-0 P-T,p-t U-Y,u-y 乙,7 从键盘输入一个英文单词,计算出该英文单词的权重(英文单词的权重为该单词各字母权 值之和)。 甘include<stdio.h #include_ctype.h> int main() char word[8o]; int i,t,weight-0; 关关关**BEGIN*关关*关*关*关关关/ (* 关$*$关$关$*关$*$*$*$*BEGIN*$*$*$关$**$*$关$关$关* .771 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􀅰 单招零距离􀅰计算机专业综合􀅰下册  (3)days+day  5.switch(a) { case1:printf("Monday ");break; case2:printf("Tuesday ");break; case3:printf("Wednesday ");break; case4:printf("Thursday ");break; case5:printf("Friday ");break; case6:printf("Saturday ");break; case7:printf("Sunday ");break; default:printf("Error ");break; } 【拓展练习】  1.i=8,s=21  2.i=2,n=0 s=0  3.(1)a+b>c&&a+c>b&&b+c>a  (2)a==b&&b==c  (3)a==b||b==c||a==c  4.if(x%3==0)  t=t+3; if(x%5==0)  t=t+5; if(x%7==0)  t=t+7; switch(t) { case15:printf("能被3、5、7整除 ");break; case12:printf("能被5、7整除 ");break; case10:printf("能被3、7整除 ");break; case8:printf("能被3、5整除 ");break; case7:printf("能被7整除 ");break; case5:printf("能被5整除 ");break; case3:printf("能被3整除 ");break; case0:printf("不能被3、5、7整除 ");break; }  5.if(x>=1&&x<=126)  t='A'; elseif(x>=128&&x<=191)  t='B'; elseif(x>=192&&x<=223)  t='C'; elseif(x>=224&&x<=239)  t='D'; elseif(x>=240)  t='E'; putchar(t); 【技能实践】  1.(1)r=-1  (2)r=0.70  (3)0.50+weigh∗r  2.(1)if(x>72)或if(x>=73)  (2)elseif(x>=25)  3.gets(word); for(i=0;word[i];i++) { t=toupper(word[i]); if(t>='A'&&t<='E')weigh+=1; elseif(t>='F'&&t<='J')weigh+=2; elseif(t>='K'&&t<='O')weigh+=3; elseif(t>='P'&&t<='T')weigh+=4; elseif(t>='U'&&t<='Y')weigh+=5; else   weigh+=6; } printf(“weight(“%s”)=%d ”,word,weight); 第五章 循 环 结 构 第一节 while循环 【知识梳理】 一、while循环的格式 2.表达式 真(非0) 循环体 假(0) 3.(1)只有一句 复合语句 (2)假(0) 死循环 分号 空语句 (3)一次也不 二、while循环解决实际问题的一般步骤 1.初始条件 2.条件表达式 3.循环体 4.改变条件 结束循环 【巩固练习】  1.C 2.A  3.2500  4.-2 -3 【拓展练习】  1.(1)t+i (2)i+=2;  2.(1)x>=0.001 (2)x/=2  3.inti,t=0,sum=0,flag=1; i=1; while(i<=100) {t=t+i; 􀅰71􀅰 总复习方案􀅰参考答案

资源预览图

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