第3章-分支结构程序设计_第1页
第3章-分支结构程序设计_第2页
第3章-分支结构程序设计_第3页
第3章-分支结构程序设计_第4页
第3章-分支结构程序设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第3章分支结构程序设计

在上一章我们知道C语言的基本程序结构有3种:顺序结构、分支结构(选择结构)、循环结构。本章主要学习分支结构。学习目标理解分支结构的应用熟悉if语句的用法熟悉switch语句的用法本章任务

由键盘输入一个0~100的整数给变量n,请分别用if语句与switch语句实现成绩的大小输出“优秀”、“良好”、“中等”、“及格”、“不及格”。注:

90~100分(包括90分)为优秀;

80~89分(包括80分)为良好;

70~79分(包括70分)为中等;

60~69分(包括60分)为及格;

0~60分(不包括60分)为不及格。3.1if结构

C语言的if语句有三种基本形式。分别是:

if语句形式

if-else语句形式

if-elseif-elseif-…-else语句形式3.1.1

if语句

其语义是:如果表达式的值为真,则执行if后的语句,否则不执行该语句。其过程如图3.1所示。if语句形式:if(表达式)语句;3.1.1

if语句如:main(){intm=8,n=5;if(m>n)printf("%d",m);}本题输出结果为多少?假设初值m=5,n=8会输出什么结果?3.1.1

if语句【例3.1】输入1个数给变量n,如果n>=60输出PASS!”。程序如下:main(){floatn=0;clrscr();printf("Pleaseinputanum:");scanf("%f",&n);if()printf("PASS!");}n>=603.1.1

if语句请同学们自行完成例3.2【例3.2】输入1个整数请用if判断是否是0~100之间,如果是0~100之间则输出“n=XXrangesfrom0to100”。3.1.1

if语句【例3.3】输入3个数x、y、z,并按从大到小的顺序输出。3.1.2

if-else语句

在【例3.1】中能够实现当n的值大于等于60时输出“PASS”

,有时需要的输出结果不只一种,还要在n的值小于60时输出“FAIL”,此时用刚学过的知识如何解决?有没有更好的办法呢?3.1.2

if-else语句if-else语句形式:if(表达式)

语句1;else

语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。3.1.2

if-else语句其执行过程如图3.2所示。3.1.2

if-else语句如用if-else实现当n的值大于等于60时输出“PASS”

,n的值小于60时输出“FAIL”

。main(){ floatn=0; clrscr(); printf("Pleaseinputanum:"); scanf("%f",&n); if(n>=60) printf("PASS!"); else printf("FAIL!"); }3.1.2

if-else语句【例3.4】输入三角形的三个边长a、b、c,并做出能否构成三角形的判断,如能请输出此三角形的面积否则输出“Inputerror!”。三角形面积公式:已知三角形三边a,b,c,则s=(a+b+c)/2,area=【例3.4】#include"math.h"main(){floata,b,c;floatarea,s;clrscr();printf("Inputa,b,c:");scanf("%f%f%f",&a,&b,&c);if(/**//**/) {

/**//**/

}else printf("Inputerror!");}3.1.2

if-else语句【例3.5】判断某一年是否为闰年。是则输出“isbissextile”,否则输出“isnotbissextile”。判断闰年的条件:能被4整除,但不能被100整除或能被400整除【例3.5】main(){ intyear; clrscr(); printf("pleaseinputyear:"); scanf("%d",&year); if(/**//**/

)/*判断是否闰年*/printf("%disbissextile.",year);elseprintf("%disnotbissextile.",year);}3.1.3

if语句的嵌套if语句的嵌套是指在if或else分支的语句中又包含if语句或if-else语句。分析如下函数:3.1.3

if语句的嵌套方法1:if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;方法2:if(x>0)y=1;elseif(x==0)y=0;elsey=-1;方法3:if(x<0)y=-1;elseif(x==0)y=0;elsey=1;用以下三种方法实现上面的函数:3.1.3

if语句的嵌套上面的格式3形式常用作多分支if语句。其通用格式如下:if(表达式1)语句1;elseif(表达式2)语句2;……elseif(表达式n)语句n;else语句n+1;语义是:依次判断表达式的值,当某个表达式值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。

多分支if语句执行流程3.1.3

if语句的嵌套【例3.6】编写程序实现输入不小0的数x作为一名员工的一个月工资数额,求应交税款y并输出。设应交税款的计算公式如下:3.1.3

if语句的嵌套main(){floatx=0,y;clrscr();printf("Inputx:");scanf("%f",&x);if(x>=0)/*由于工资不能是负数,判断x是否合法*/{

/**//**/ } else printf("Inputerror,x<0!");}3.1.3

if语句的嵌套试着独立完成:【例3.7】判别键盘输入字符的类别。根据输入字符的ASCII码来判别字符的类型。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“g”,输出“小写字符”。3.1.3

if语句的嵌套试着用刚学的if…elseif…elseif…else完成本章的任务:【例3.8】由键盘输入一个0~100的整数给变量n,请用if语句实现据n的大小输出“优秀”、“良好”、“中等”、“及格”、“不及格”。注:90~100分(包括90分)为优秀;80~89分(包括80分)为良好;70~79分(包括70分)为中等;60~69分(包括60分)为及格;0~60分(不包括60分)为不及格。3.2

switch结构在分支比较多的程序中如果使用if嵌套实现会使嵌套的层数增加从而造成程序冗长,可读性降低,这时最好用switch结构来实现。3.2.1

switch语句不带break的switch语句格式:switch(表达式){case常量表达式1:语句组1;case常量表达式2:语句组2;……case常量表达式n:语句组n; [default:语句组n+1;]}3.2.1

switch语句其语义是:先计算出表达式的值,如此值与哪个case后的常量表达式的值相一致,则执行那个case后的语句组,及所有后续case后的语句组,如有default一并执行default后的语句组再退出switch结构。如计算出的表达式的值与所有case后的常量表达式的值都不一致时,如有default执行default后的语句组,如没有default则直接退出switch结构。(例题)例题#include<stdio.h>voidmain(){ intn='c'; switch(n--){ default:printf("error\n"); case'a': case'b':printf("good\n");break; case'c':printf("pass\n"); case'd':printf("warn\n");

}}3.2.1

switch语句【例3.9】假设1~7分别与星期一~星期日对应,请编写程序实现由键盘输入1则输出“星期一”、……、输入7输出“星期日”,如输入其他数据则提示:>7或<1!3.2.1

switch语句假设程序如下:main(){intx;printf("Pleaseinputanum(1-7):");scanf("%d",&x);switch(x){case1:printf("Mondy.\n");case2:printf("Tuesday.\n");case3:printf("Wednesday.\n");case4:printf("Thursday.\n");case5:printf("Friday.\n");case6:printf("Saturday.\n");case7:printf("Sunday.\n");default:printf("Inputerror,>7or<1.\n");}}如输入4,输出什么结果?3.2.2

break语句在switch语句中的作用带break的switch语句格式(这种switch格式是最为常用的格式):switch(表达式){case常量表达式1:语句组1;[break;]case常量表达式2:语句组2;[break;]……case常量表达式n:语句组n;[break;] [default:语句组n+1;[break;]]}3.2.2

break语句在switch语句中的作用其语义是:先计算出表达式的值,如此值与哪个case后的常量表达式的值相一致,则执行那个case后的语句组,如此语句组后有break语句则直接退出switch结构,如语句组后没有break语句则继续执行后续case后的语句组,直到遇到break语句退出switch结构,如没有break语句则会执行后续所有case及default后的语句组再退出switch结构。如计算出表达式的值与case后的所有常量表达式的值都不同则只执行default后的语句组,如没有default语句则直接退出switch结构。

其语义是:先计算出表达式的值,用此值与哪个case后的常量表达式的值相一致,则执行那个case后的语句组,如此语句组后有break语句则直接退出switch结构,如语句组后没有break语句则继续执行后续case后的语句组,直到遇到break语句退出switch结构,如没有break语句则会执行后续所有case及default后的语句组再退出switch结构。若计算出表达式的值与case后的所有常量表达式的值都不同则只执行default及之后的语句组一直执行到最后(若遇break则终止退出switch结构),如没有default语句则直接退出switch结构。3.2.2

break语句在switch语句中的作用假设程序如下:main(){intx;printf("Pleaseinputanum(1-7):");scanf("%d",&x);switch(x){case1:printf("Mondy.\n");break;case2:printf("Tuesday.\n");break;case3:printf("Wednesday.\n");break;case4:printf("Thursday.\n");break;case5:printf("Friday.\n");break;case6:printf("Saturday.\n");break;case7:printf("Sunday.\n");break;default:printf("Inputerror,>7or<1.\n");}}如输入4,输出什么结果?3.2.2

break语句在switch语句中的作用请试着用switch语句来完成本章的任务:【例3.11】由键盘输入一个0~100的整数给变量n,请用switch语句实现据n的大小输出“优秀”、“良好”、“中等”、“及格”、“不及格”。注:90~100分(包括90分)为优秀;80~89分(包括80分)为良好;70~79分(包括70分)为中等;60~69分(包括60分)为及格;0~60分(不包括60分)为不及格。课堂练习

(1)以下程序的运行结果是()。voidmain(

温馨提示

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

评论

0/150

提交评论