
新版西电C语言ppt课件_04_多分支结构和循环结构程序设计.ppt
35页Programming in CProgramming in C西安电子科技大学 -Xidian University 1练习练习编写程序,输入编写程序,输入编写程序,输入编写程序,输入x x的值,按下式计算的值,按下式计算的值,按下式计算的值,按下式计算y y的值Programming in CProgramming in C西安电子科技大学 -Xidian University 2练习练习编写程序,输入编写程序,输入编写程序,输入编写程序,输入x x的值,按下式计算的值,按下式计算的值,按下式计算的值,按下式计算y y的值include#includeintmain()doublex,y;/floatx,y;scanf(%lf,&x);if(x=1&x=2&x=3&x=4&x5)x=x*x-2*x+5;printf(%lfn,y);return0;Programming in CProgramming in C西安电子科技大学 -Xidian University 3练习练习编写程序,输入编写程序,输入编写程序,输入编写程序,输入x x的值,按下式计算的值,按下式计算的值,按下式计算的值,按下式计算y y的值。
的值include#includeintmain()doublex,y;/floatx,y;scanf(%lf,&x);if(x=1&x=2&x=3&x=4&x5)x=x*x-2*x+5;printf(%lfn,y);return0;#include#includeintmain()doublex,y;/floatx,y;scanf(%lf,&x);if(x=1&x=2&x=3&x=4&x5)x=x*x-2*x+5;printf(%lfn,y);return0;功能相同功能相同效率不同效率不同Programming in CProgramming in C西安电子科技大学 -Xidian University 4练习练习编写程序,输入编写程序,输入编写程序,输入编写程序,输入x x的值,按下式计算的值,按下式计算的值,按下式计算的值,按下式计算y y的值include#includeintmain()doublex,y;/floatx,y;scanf(%lf,&x);if(x5)return0;if(x=1&x=2&x=3&x=4&x5)x=x*x-2*x+5;printf(%lfn,y);return0;#include#includeintmain()doublex,y;/floatx,y;scanf(%lf,&x);if(x=1&x=2&x=3&x=4&x5)x=x*x-2*x+5;printf(%lfn,y);return0;有何不同有何不同Programming in CProgramming in C西安电子科技大学 -Xidian University 5主要内容主要内容l l多分支选择结构多分支选择结构l lswitchswitch语句语句语句语句l l循环结构循环结构l lwhilewhile语句语句语句语句Programming in CProgramming in C西安电子科技大学 -Xidian University 6多分支的选择结构多分支的选择结构Programming in CProgramming in C西安电子科技大学 -Xidian University 7多分支的选择结构多分支的选择结构l根据同一个表达式的各种取值分情况处理根据同一个表达式的各种取值分情况处理表达式表达式e?语句序列语句序列1值值1语句序列语句序列2值值2语句序列语句序列n+1其他值其他值语句序列语句序列n值值n.Programming in CProgramming in C西安电子科技大学 -Xidian University 8switchswitch语句语句lswitchswitch语句用于语句用于表示多分支的选表示多分支的选择结构,其基本择结构,其基本形式为:形式为:switch(switch(表达式表达式e)e)case case 常量表达式常量表达式1 1:语句序列语句序列1 1;breakbreak;case case 常量表达式常量表达式2 2:语句序列语句序列2 2;break;break;.case case 常量表达式:常量表达式:语句序列;语句序列;breakbreak;defaultdefault:语句序列语句序列+1+1;lswitchswitch语句的含义是:语句的含义是:若表达式若表达式e e的值等于的值等于某个常量表达式某个常量表达式i i的的值,则执行相应的语值,则执行相应的语句序列句序列i i;否则,执;否则,执行行defaultdefault的语句序的语句序列。
列什么是常量表达式?什么是常量表达式?Programming in CProgramming in C西安电子科技大学 -Xidian University 9switchswitch语句的使用举例语句的使用举例l问题:问题:输入一个百分制的成绩,将其转换输入一个百分制的成绩,将其转换为等级分制输出为等级分制输出l规则如下:规则如下:l9090100100:A Al80808989:B Bl70707979:C Cl60606969:D Dl低于低于6060:F FProgramming in CProgramming in C西安电子科技大学 -Xidian University 10成绩转换成绩转换1 1(用(用ifif语句)语句)#include main()int score;printf(input a score(0100):);scanf(%d,&score);if(score=90)printf(grade=An);else if(score=80)printf(grade=Bn);else if(score=70)printf(grade=Cn);else if(score=60)printf(grade=Dn);else printf(grade=Fn);Programming in CProgramming in C西安电子科技大学 -Xidian University 11成绩转换成绩转换2 2#include main()int score;/*score用于表示百分制分数用于表示百分制分数*/printf(input score(0100):);scanf(%d,&score);switch(score/10)case 10:printf(grade=An);break;case 9:printf(grade=An);break;case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn);break;case 5:printf(grade=Fn);break;case 4:printf(grade=Fn);break;case 3:printf(grade=Fn);break;case 2:printf(grade=Fn);break;case 1:printf(grade=Fn);break;case 0:printf(grade=Fn);break;没有这些没有这些break,该程序的执行结该程序的执行结果是什么?果是什么?Programming in CProgramming in C西安电子科技大学 -Xidian University 12缺少缺少breakbreak的的switchswitch语句示例语句示例 switch(n)case 1:printf(grade=An);case 2:printf(grade=Bn);case 3:printf(grade=Cn);case 4:printf(grade=Dn);case 5:printf(grade=Fn);n=1?YesNo输出输出grade=A输出输出grade=Bn=2?YesNo输出输出grade=C输出输出grade=D输出输出grade=Fn=3?YesNon=4?YesNon=5?YesNoProgramming in CProgramming in C西安电子科技大学 -Xidian University 13成绩转换成绩转换3 3#includemain()intscore,grade;printf(inputascore(0100):);scanf(%d,&score);grade=score/10;switch(grade)case10:case9:printf(grade=An);break;case8:printf(grade=Bn);break;case7:printf(grade=Cn);break;Programming in CProgramming in C西安电子科技大学 -Xidian University 14成绩转换成绩转换3(3(续续)case6:printf(grade=Dn);break;case5:case4:case3:case2:case1:case0:printf(grade=Fn);break;default:printf(Invalidinput!n);Programming in CProgramming in C西安电子科技大学 -Xidian University 15成绩转换成绩转换4 4(ifif和和switchswitch结合使用)结合使用)#include main()int score,n;printf(input a score(0100):);scanf(%d,&score);if(score=90)n=1;else if(score=80)n=2;else if(score=70)n=3;else if(score=60)n=4;else n=5;switch(n)case 1:printf(grade=An);break;case 2:printf(grade =Bn);break;case 3:printf(grade=Cn);break;case 4:printf(grade=Dn);break;case 5:printf(grade=Fn);break;/*endofswitch*/*end of main*/Programming in CProgramming in C西安电子科技大学 -Xidian University 16成绩转换成绩转换5 5(ifif和和switchswitch结合使用)结合使用)#include main()int score,n;printf(input a score(0100):);scanf(%d,&score);if(score 60)n=0;else n=(score 60)/10+1;switch(n)case 5:case 4:printf(grade =An);break;case 3:printf(grade=Bn);break;case 2:printf(grade=Cn);break;case 1:printf(grade=Dn);break;case 0:printf(grade=Fn);break;/*endofswitch*/*end of main*/至此,我们已经了解了至此,我们已经了解了if语句和语句和switch语句的含义和用法,语句的含义和用法,那么,程序中使用那么,程序中使用if语句的地方能否用语句的地方能否用switch语句替换呢?语句替换呢?Programming in CProgramming in C西安电子科技大学 -Xidian University 17switchswitch中的中的break break 语句语句break 语句。












