您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 大学C语言程序设计第二版(电子工业)第4章
大学C/C++语言程序设计第4章选择结构程序设计大学C/C++语言程序设计第4章选择结构程序设计第4章选择结构程序设计4.1if语句4.2switch语句大学C/C++语言程序设计第4章选择结构程序设计C语言的语句可分为以下四类:简单语句、空语句、复合语句和流程控制语句。简单语句又分为:表达式语句和函数调用语句。x+y%4;z--;x=a/2+fabs(b);printf(“hello!”);;大学C/C++语言程序设计第4章选择结构程序设计复合语句:用一对花括号{}将多条语句组合在一起,在语法上相当于一条语句。....................{intx,y;x=exp(3);y=pow(2,4);}printf(“x=%d,y=%d\n”,x,y);..............................•4.1if语句(条件选择语句)if语句的三种形式(1)形式一:单分支一般格式:if(表达式)语句;例if(xy)max=x;执行过程:大学C/C++语言程序设计第4章选择结构程序设计实验教程P18页6题(if单分支结构)#includestdio.hmain(){inta=8,b=7,c=9,t=0;if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(%5d%5d%5d\n,a,b,c);}kj17{}输出结果:987三个数降序输出大学C/C++语言程序设计第4章选择结构程序设计实验教程P18页6题(if单分支结构)#includestdio.hmain(){inta=8,b=7,c=9,t=0;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(%5d%5d%5d\n,a,b,c);}kj17a输出结果:970例:if(xy)max=x;elsemax=y;printf(“%d”,max);(2)形式二:双分支一般格式:if(表达式)语句1;else语句2;执行过程:#includestdio.hmain(){intx,y;printf(Enteraninteger:);scanf(%d,&x);if(x0)y=-x;if(x=0)y=x;printf(%d.absolutevalue:%d\n,x,y);}kj18例:求一个数的绝对值运行:Enteraninteger:-12-12.absolutevalue:12if(x0)y=-x;elsey=x;大学C/C++语言程序设计第4章选择结构程序设计如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);if后面的表达式类型任意(关键:非0为真)if或else后面的语句可以是复合语句else不可以单独使用例考虑下面程序的输出结果:#includestdio.hmain(){intx,y;scanf(“%d,%d”,&x,&y);if(xy)x--;y--;elsex++;y++;printf(“%d,%d\n”,x,y);}kj19CompileError!if后只能管一条语句说明:大学C/C++语言程序设计第4章选择结构程序设计(3)形式三:多分支一般格式:if(表达式1)语句1;elseif(表达式2)语句2;else……if(表达式n)语句n;else语句n+1;执行过程:大学C/C++语言程序设计第4章选择结构程序设计实验教程P18页4题(if多分支结构)#include“stdio.h”main(){inta=1,b=2,c=3,d=4;if(abc)printf(“%d\n”,d);elseif((c-b)==a)printf(“%d\n”,2*d);elseprintf(“%d\n”,4*d);}kj20大学C/C++语言程序设计第4章选择结构程序设计例.编程实现:给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’。90分以上为‘A’等,89~80分为‘B’等,79~70分为‘C’等,69~60分为‘D’等。假定成绩为实型数据。大学C/C++语言程序设计第4章选择结构程序设计#includestdio.hmain(){floatscore;scanf(%f,&score);if(score=90)printf(“A\n”);if(score=80&&score90)printf(“B\n”);if(score=70&&score80)printf(“C\n”);if(score=60&&score70)printf(“D\n”);}kj21例:百分制成绩的等级划分问题之解法1:仅用if单分支语句实现大学C/C++语言程序设计第4章选择结构程序设计#includestdio.hmain(){floatscore;scanf(%f,&score);if(score=90)printf(A\n);elseif(score=80)printf(B\n);elseif(score=70)printf(C\n);elseprintf(D\n);}kj22解法2:用if多分支语句实现★if语句嵌套:如果if(表达式)或else后面的语句又包含一个或多个if语句,就称为if语句的嵌套。内嵌的if-else语句内嵌if-else语句if语句的两层嵌套结构如下:if(表达式1)if(表达式1_1)语句1_1;else语句1_2;elseif(表达式2_1)语句2_1;else语句2_2;修改1:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);kj22cif~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对例:修改程序,使之满足1.a,b,c相等时输出:a==b==c;2.a!=b时输出a!=bif(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);想改变if~else默认配对方法:加{}例:计算分段函数。x+2x=-10y=x-20=x-10x*210=x0x/2x10kj23if(x=0)if(x=-10)y=x+2;elsey=x-2;elseif(x=10)y=x*2;elsey=x/2;if(x=-10)y=x+2;elseif(x=0)y=x-2;elseif(x=10)y=x*2;elsey=x/2;大学C/C++语言程序设计第4章选择结构程序设计switch语句•使用if语句嵌套层次太多,容易发生错误,因此在多分支结构中,通常使用switch语句。大学C/C++语言程序设计第4章选择结构程序设计switch语句的一般形式switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;……case常量表达式n:语句n;default:语句n+1;}大学C/C++语言程序设计第4章选择结构程序设计说明当表达式的值与某一个case后面的常量相等时,执行该case后面的语句。然后执行下一个case后面的语句。若所有的case后面的常量都不和表达式的值相匹配,就执行default后面的语句。每一个case的常量表达式必须互不相同,不能表示范围,如x0。常量可以是整数或字符。例switch(score){case9:printf(“A”);case8:printf(“B”);case7:printf(“C”);case6:printf(“D”);default:printf(“E”);}kj24运行结果:score为9时,输出:ABCDE如果score分别为3,2,1呢?说明:语句标号作用,必须用break跳出case后可包含多个可执行语句,且不必加{}多个case可共用一组执行语句如:……case‘A’:printf(“score90\n”);break;case‘B’:case‘C’:printf(“score60\n”);break;……..switch可嵌套,其中的break语句只能退出本层的switch语句体例:...................intscore;scanf(“%d”,&score);switch(score/10){case9:printf(“A”);break;case8:printf(“B”);break;case7:printf(“C”);break;case6:printf(“D”);break;}............................kj24运行结果:score为95时,输出:A例:百分制成绩的等级划分之解法3:用switch语句实现main(){inta=1,b=0;switch(a){case1:switch(b){case0:printf(*0*);break;case1:printf(*1*);break;}case2:printf(*2*);break;}}kj25运行结果:*0**2*例(习题9):根据程序写出运行结果?例:输入两个整数和一个四则运算符,要求输出计算结果。#includestdio.hvoidmain(){intnum1,num2;charsign;scanf(“%d,%c,%d,&num1,&sign,&num2);switch(sign){case'+':printf(%d\n,num1+num2);break;case'-':printf(%d\n,num1-num2);break;case'*':printf(%d\n,num1*num2);break;case'/':printf(%d\n,num1/num2);break;default:printf(inputerror\n);}}kj264.3实例解析大学C/C++语言程序设计第4章选择结构程序设计例1:根据程序写出运行结果答案:2答案:13#includestdio.hmain(){intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(“%d\n“,z);}kj22e#includestdio.hmain(){inti=10;switch(i){case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1;}printf(%d\n,i);}大学C/C++语言程序设计第4章选择结构程序设计例:根据输入的年份和月份,计算该月有多少天?(考虑闰年和平年的情况)#includestdio.hmain(){intyear,month,day;printf(“inputtheyearandmonth:”);scanf(“%d,%d”,&year,&month);//输入年份和月份switch(month){case4:case6:case9:case11:day=30;break;case2:if(year%4==0&&year%100!=0||year%400==0)day=29;elseday=28;break;default:day=31;break;}printf(“Themonthis%dday\n”,day);//输出该月的天数}#includestdio.h#includemath.hmain(){floata,b,c,m,n,x1,x2;scanf(%f%f%f,&a,&b,&c);n=-b/(2*a);m=b*b-4*a*c;if(m==0){x1=x2=n;printf(x1=x2=%f\n,x1);}elseif(m0){x1=n+sqrt(m)/(2*a);x2=n-sqrt(m)/(2*a);printf(x1=%f,x2=%f\n,x1
本文标题:大学C语言程序设计第二版(电子工业)第4章
链接地址:https://www.777doc.com/doc-69655 .html