选择结构程序设计习题解答.ppt_第1页
选择结构程序设计习题解答.ppt_第2页
选择结构程序设计习题解答.ppt_第3页
选择结构程序设计习题解答.ppt_第4页
选择结构程序设计习题解答.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章第四章 选择结构程序设计习题选择结构程序设计习题 解答解答 根据某个变量或表达式的值作出选择, 决定执行哪些语句而不执行哪些语句。这样 的程序结构称为选择结构或分支结构。 实现选择结构的语句有: 分支语句(if语句)和 多分支语句(switch语句) 选择结构程序设计 if-else 择条件语句 选择结构的一种最常用形式选择结构的一种最常用形式: : if (if (表达式表达式) ) 语句语句1;1; else else 语句语句2;2; 语句语句3 3 执行过程:执行过程: 当括号内表达式成立时,即表达式的值当括号内表达式成立时,即表达式的值是非是非0 0时时 ,执行语句,执行语句1 1,然后语句,然后语句3 3; 当表达式不成立时,值当表达式不成立时,值等于等于0 0时,执行语句时,执行语句2 2,然,然 后语句后语句3 3,上面else部分也可以没有。 if多分支选择语句 表达式1 先判断表达式1的值 真 语句1 非0就执行下面的语句 假 表达式2 为0就执行下一个判断 表达式3 语句4语句3语句2 真 真 假 假一直这样做下去 直到得出最后结果 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else 语句4; 语句5; 开关语句-switch 功能功能格式格式 开关语句就像多路开关一样,程序可根据 开关语句就像多路开关一样,程序可根据 一个表达式可能产生的不同结果值一个表达式可能产生的不同结果值,选择其中选择其中 一个一个独立分支结构,或几个分支独立分支结构,或几个分支 的语句的语句非独立分支结构去执行。非独立分支结构去执行。 switch (switch (表达式表达式) ) case case 常量常量1 1 : : 语句系列语句系列1 1 case case 常量常量2 2 : : 语句系列语句系列2 2 case case 常量常量m : m : 语句系列语句系列mm default : default : 语句系列语句系列m+1m+1 说明说明 switchswitch后括号内表达式的值只能是整形、字符型后括号内表达式的值只能是整形、字符型 或枚举类型,每个常量的类型和表达式的类型应相或枚举类型,每个常量的类型和表达式的类型应相 同,每个语句序列可以是零个或若干个语句。同,每个语句序列可以是零个或若干个语句。 case 3:case 3: case 4: case 4: printf(“%dprintf(“%d”, d1); break;”, d1); break; default: default: 执行时,先求表达式的值,然后自上而下依次测执行时,先求表达式的值,然后自上而下依次测 试每一个常量,若与常量试每一个常量,若与常量I I相匹配,则从其后的语相匹配,则从其后的语 句序列句序列i i开始执行每个语句序列,若没有常量与之开始执行每个语句序列,若没有常量与之 匹配,则执行匹配,则执行defaultdefault后面的语句序列后面的语句序列非独立分非独立分 支结构。支结构。 若只执行语句系列 若只执行语句系列I I,则在语句系列则在语句系列I I后加后加 breakbreak语句语句独立分支结构。独立分支结构。 switch (switch (表达式表达式) ) case case 常量常量1 1 : : 语句系列语句系列1;break;1;break; case case 常量常量2 2 : : 语句系列语句系列2;break;2;break; case case 常量常量m : m : 语句系列语句系列m;break;m;break; default : default : 语句系列语句系列m+1;m+1; 由于每个由于每个casecase语句后的常量只起语句标号的作用语句后的常量只起语句标号的作用 ,所以它们的值必须互不相同,否则会出现互相矛,所以它们的值必须互不相同,否则会出现互相矛 盾的现象盾的现象(C(C语言系统不允许,编译出错语言系统不允许,编译出错) )。 case 1:case 1: case 1: case 1: case 3:case 3: 独立分支独立分支时每个时每个casecase语句和语句和defaultdefault语句的出现的语句的出现的 前后次序发生改变时,不影响运行结果,但在一般前后次序发生改变时,不影响运行结果,但在一般 情况下,常量出现频率较高的放在前面。情况下,常量出现频率较高的放在前面。 case 1: case 1:case 1: case 1: default: case 2: default: case 2: case 2: case 3: case 2: case 3: case 3:case 3: deaultdeault: : 7、解 #include “stdio.h“ void main() char c1,c2; scanf(“%c%c“, if(c1-c2)%2=0) printf(“%c,%c“,c1+1,c2+1); else printf(“%c,%c“,c1-1,c2-1); 开始 输入两字符 判断两字符之差 是否为偶数 输出它们 的后继 输出它们 的前驱 结束 N Y 8、解 #include “stdio.h“ void main() int a, b; scanf(“%d%d“, if(a%b=0) printf(“a/b=%dn“,a/b); else printf(“a/b=%d,%dn“,a/b,a%b); 9、解: #include “stdio.h“ void main() float x, y; scanf(“%f%f“, if(x-2)*(x-2)+(y-2)*(y-2)1) printf(“点A在圆外n“); else if(x-2)*(x-2)+(y-2)*(y-2)=1) printf(“点A在圆上n“); else printf(“点A在圆内n“); 10 解: 开始 输入年、月 判断是否为闰年 用一整型变量标识,1表示是,0表示否 结束 Y Month=1、 3、 5、 7、8、10、12? Month= 4、6、9、11? Month=2 闰年 Month=其它值 输出31天输出30天 输出数据错误 Y Y Y 输出29天 N 输出28天 N NN #include “stdio.h“ void main() int year, month,leap; scanf(“%d%d“, /*判断是否为闰年*/ if(year%400=0|(year%100!=0 else leap=0; switch(month) case 1: printf(“This month has 31 daysn“); break; case 2: if(leap=1) printf(“This month has 29 daysn“); else printf(“This month has 28 daysn“); break; case 3: printf(“This month has 31 daysn“);break; case 4: printf(“This month has 30 daysn“);break; case 5: printf(“This month has 31 daysn“);break; case 6: printf(“This month has 30 daysn“);break; case 7: printf(“This month has 31 daysn“);break; case 8: printf(“This month has 31 daysn“);break; case 9: printf(“This month has 30 daysn“);break; case 10: printf(“This month has 31 daysn“);break; case 11: printf(“This month has 30 daysn“);break; case 12: printf(“This month has 31 daysn“);break; default: printf(“Month is error data!“); #include “stdio.h“ void main() int year, month,leap; scanf(“%d%d“, /*判断是否为闰年*/ if(year%400=0|(year%100!=0 else leap=0; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(“This month has 31 daysn“);break; case 2: if(leap=1) printf(“This month has 29 daysn“); else printf(“This month has 28 daysn“); break; case 4: case 6: case 9: case 11: printf(“This month has 30 daysn“);break; default: printf(“Month is error data!“); 12、解:(1)不嵌套的if语句 #include “stdio.h“ void main() float x; scanf(“%f“, if(x-5 else if(x=0) printf(“y=%f“,x); else printf(“y=%f“,x+1); else printf(“Data undefine! “); 12、解:(3)switch语句 #include “stdio.h“ void main() float x; scanf(“%f“, switch(in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论