C语言程序设计教程-电子教案第3章电子教案:分支结构程序设计.ppt
**【例3-12】已知男性60岁退休,女性55岁退休,输入一个人的年龄和性别,判断他(她)是已退休还是在工作,并输出结果。输入性别时,用F或f表示女性,用M或m表示男性,当输入的性别不对时,给出错误提示。voidmain(){ intage; charsex; printf(请输入性别和年龄(F(f)/M(m)):); scanf(%c%d,sex,age); if(sex==m||sex==M) { if(age=60) printf(他已退休\n); else printf(他在工作\n); } elseif(sex==f||sex==F) { if(age=55) printf(她已退休\n); else printf(她在工作\n); } else printf(输入数据有误!\n);}3.4switch语句可以采用if-elseif语句处理多分支问题,但是,当分支很多时,采用switch语句会更简洁。例如,在“学生信息管理系统”中,共有12个菜单选项。如果采用if-elseif语句来处理,则程序将非常冗长。switch(表达式){ case常量1:语句序列1;[break;] case常量2:语句序列2;[break;] …case常量n:语句序列n;[break;]default:语句序列n+1;}【例3-13】已知1998年的1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月有28天。编程从键盘输入1998年的某个月份,输出该月有多少天。voidmain(){ intx,day; printf(请输入月份(1-12):); scanf(%d,x); switch(x) { case1:day=31;break; case2:day=28;break; case3:day=31;break; case4:day=30;break; case5:day=31;break; case6:day=30;break; case7:day=31;break; case8:day=31;break; case9:day=30;break; case10:day=31;break; case11:day=30;break; case12:day=31;break; } printf(%d月的天数是%d\n,x,day);}如果多个case的执行语句相同,则它们可以共用同一个语句块。voidmain(){intmonth,day;printf(请输入月份(1-12):);scanf(%d,month);switch(month){ case4: case6: case9: case11:day=30;break; case2:day=28;break default:day=31; }printf(%d月的天数是%d\n,month,day);}如省略break,则不会跳出switch,且不再进行条件检测。如果case11和case2后的break删除,则输入4和2,运行结果是多少?【例3-14】从键盘输入一个算术运算式,采用switch语句输出计算结果,算术运算符包括:+、-、*、/、%(求余数),操作数为整数。如输入2+32,则输出34。voidmain(){ inta,b; charop; printf(请输入算术运算式:); scanf(%d%c%d,a,op,b); switch(op) { case+:printf(计算结果为:%d\n,a+b);break; case-:printf(计算结果为:%d\n,a-b);break; case*:printf(计算结果为:%d\n,a*b);break; case/:printf(计算结果为:%f\n,(float)a/b);break; case%:printf(计算结果为:%d\n,a%b);break; default:printf(数据输入错误!\n); }}如果输入2+32,则scanf()如何处理?为了避免除0错误,程序应作何修改?case/: if(b==0)