分支结构.ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言程序设计西安建筑科技大学理学院鲁萍第1页THECPROGRAMMINGLANGUAGE选择结构程序设计1.if语句2.switch语句3.选择结构程序设计举例【问题】1、从键盘输入一个数,如果该数为正,打印,否则不打印;2、解一元二次方程,求出相应的实根或复根。C语言程序设计西安建筑科技大学理学院鲁萍第2页THECPROGRAMMINGLANGUAGEif语句1简单if语句一般格式:if(表达式)语句体【说明】1)表达式:常量、变量、函数调用、表达式2)表达式必须加()括起来。3)语句体:一条或多条语句(多条语句用{}括起来)4)执行过程:当表达式的值为非0(真)时,执行语句体5)一个if语句总体上只算一条语句C语言程序设计西安建筑科技大学理学院鲁萍第3页THECPROGRAMMINGLANGUAGE[例5.2]输入任意三个数a、b、c,按从小到大的顺序排序输出。分析:abc523235if(ab)a和b交换,令a=min{a,b}if(ac)a和c交换,令a=min{a,b,c}if(bc)b和c交换,另b为次大值,c为最大值if语句交换a和b的内容5t=a5a=bb=at55225C语言程序设计西安建筑科技大学理学院鲁萍第4页THECPROGRAMMINGLANGUAGE[例5.2]输入三个数a、b、c,按从小到大的顺序输出。main(){inta,b,c,t;printf(“inputthreenumbers:\n);scanf(%d,%d,%d,&a,&b,&c);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(%d,%d,%d\n,a,b,c);}inputthreenumbers:11,22,18↙11,18,22没有分号if语句C语言程序设计西安建筑科技大学理学院鲁萍第5页THECPROGRAMMINGLANGUAGEif…else…语句1.复合if语句的一般格式if(表达式)语句体1else语句体2【说明】(1)else必须与if配对使用,不能单独使用。(2)if语句允许嵌套,但嵌套的层数不宜太多。例如:if(ab)max=a;elsemax=b;if~else的执行过程表达式的值语句体1语句体2执行if后的语句非0T为0FC语言程序设计西安建筑科技大学理学院鲁萍第6页THECPROGRAMMINGLANGUAGE程序1:if(x=0)if(x0)y=1;elsey=0;elsey=-1;)0(1)0(0)0(1xxxy当当当if语句嵌套时,else子句与1.在它上面、2.距它最近、3.尚未匹配的if配对。例5.3√程序2:if(x0)y=-1;elseif(x==0)y=0;elsey=1;程序3:y=-1;if(x!=0)if(x0)y=1;elsey=0;程序4:y=0;if(x=0)if(x0)y=1;elsey=-1;√x=0时×x=-5×if…else…语句C语言程序设计西安建筑科技大学理学院鲁萍第7页THECPROGRAMMINGLANGUAGEif~elseif~语句1.格式if(表达式1)语句组1elseif(表达式2)语句组2elseif(表达式3)语句组3elseif(表达式4)语句组4…elseif(表达式n)语句组nelse语句组n+1计算表达式1的值真否?语句组1语句组2FT执行复合语句后的语句计算表达式2的值真否?TF计算表达式3的值真否?T语句组3…C语言程序设计西安建筑科技大学理学院鲁萍第8页THECPROGRAMMINGLANGUAGE程序1:if(x=0)if(x0)y=1;elsey=0;elsey=-1;)0(1)0(0)0(1xxxy当当当例5.3√程序2:if(x0)y=-1;elseif(x==0)y=0;elsey=1;√if~elseif~语句C语言程序设计西安建筑科技大学理学院鲁萍第9页THECPROGRAMMINGLANGUAGE课堂练习:if语句应用实例)10(113)101(12)1(xxxxxxy分别用三种if语句编写程序:键盘输入x,输出y(1)简单if语句、(2)if…else…语句、(3)if…elseif…语句分别实现。C语言程序设计西安建筑科技大学理学院鲁萍第10页THECPROGRAMMINGLANGUAGE算法一:用if语句实现main(){floatx,y;printf(x=?);scanf(%f,&x);if(x1)y=x;if(x10&&x=1)y=2*x-1;if(x=10)y=3*x+11;printf(%.2f,y);}C语言程序设计西安建筑科技大学理学院鲁萍第11页THECPROGRAMMINGLANGUAGE算法二:用if…else…语句实现main(){floatx,y;printf(x=?);scanf(%f,&x);if(x1)y=x;else/*x=1*/if(x10)y=2*x-1;/*x=1&&x10*/elsey=3*x+11;/*x=10*/printf(%.2f,y);}C语言程序设计西安建筑科技大学理学院鲁萍第12页THECPROGRAMMINGLANGUAGE算法三:用if…elseif…语句实现main(){floatx,y;printf(x=?);scanf(%f,&x);if(x1)y=x;elseif(x10)y=2*x-1;/*x=1&&x10*/elsey=3*x+11;/*x=10*/printf(%.2f,y);}C语言程序设计西安建筑科技大学理学院鲁萍第13页THECPROGRAMMINGLANGUAGE输入星期中的某一天,显示对应的英文#includestdio.hmain(){inti;printf(“Input1-7:”);scanf(“%d”,&i);if(i==1)printf(“TodayisMonday!\n”);elseif(i==2)printf(“TodayisTuesday!\n”);elseif(i==3)printf(“TodayisWednesday!\n”);elseif(i==4)printf(“TodayisThursday!\n”);elseif(i==5)printf(“TodayisFriday!\n”);elseif(i==6)printf(“TodayisSaturday!\n”);elseprintf(“TodayisSunday!\n”);}复杂!C语言程序设计西安建筑科技大学理学院鲁萍第14页THECPROGRAMMINGLANGUAGEswitch语句1.一般形式switch(条件表达式){case常量表达式1:语句组1;case常量表达式2:语句组2;......case常量表达式n:语句组n;default:语句组n+1;}2.执行过程(1)若条件表达式==常量表达式i则执行语句组i以及语句组i+1…语句组n+1(2)若条件表达式!=任何常量表达式则执行default的语句组n+1没有分号没有分号C语言程序设计西安建筑科技大学理学院鲁萍第15页THECPROGRAMMINGLANGUAGEmain(){inti;printf(“Input1-7:”);scanf(“%d”,&i);switch(i){case1:printf(“TodayisMonday!”);case2:printf(“TodayisTuesday!”);case3:printf(“TodayisWednesday!”);case4:printf(“TodayisThursday!”);case5:printf(“TodayisFriday!”);case6:printf(“TodayisSaturday!”);default:printf(“TodayisSunday!”);}}输入星期中的某一天,显示对应的英文break;break;break;break;break;break;运行结果Input1-7:4↙TodayisThursday!TodayisFriday!TodayisSaturday!TodayisSunday!break:跳出switch结构空格C语言程序设计西安建筑科技大学理学院鲁萍第16页THECPROGRAMMINGLANGUAGE3.说明(1)条件表达式:常量表达式,int、char、枚举型例:case3+4:/*正确*/casex+y:/*错误设intx=3,y=4;*/(2)多个case子句,可共用同一语句(组)。例如:case10:case9:printf(grade=A\n);break;(3)default可以省略;(4)每个case后面的语句有多条语句时可以不加{}括起来。switch语句C语言程序设计西安建筑科技大学理学院鲁萍第17页THECPROGRAMMINGLANGUAGE例:从键盘上输入一个百分制成绩score,输出其等级:score≥90,等级为A;80≤score90,等级为B;70≤score80,等级为C;60≤score70,等级为D;score60,等级为E。分析:switch结构,如何分段?(score/10)-0-10选择结构程序设计举例C语言程序设计西安建筑科技大学理学院鲁萍第18页THECPROGRAMMINGLANGUAGEmain(){intscore;printf(“Inputascore(0~100):”);scanf(“%d”,&score);/*将成绩转化成10种情形*/switch(score/10){case10:case9:printf(“grade=A\n”);break;case8:printf(grade=B\n);break;case7:printf(grade=C\n);break;case6:printf(grade=D\n);break;case5:case4:case3:case2:case1:case0:printf(“grade=E\n”);break;default:printf(“Thescoreisoutofrange!\n”);}}选择结构程序设计举例C语言程序设计西安建筑科技大学理学院鲁萍第19页THECPROGRAMMINGLANGUAGE选择结构程序设计举例例5.6求一元二次方程ax2+bx+c=0的解(a≠0)。分析:disc=b2-4ac=0x1=x2=-b/(2a)disc=b2-4ac0x1=(-b+sqrt(disc))/(2a)x2=(-b-sqrt(disc))/(2a)disc=b2-4ac0x1=(-b/(2a))+sqrt(disc))/(2a)ix2=(-b/(2a))-sqrt(disc))/(2a)i输出数值数值数值数值+数值iprintf(“%f+%fi“,p,q);#includemath.hmain(){inta,b,c,disc;floatx1,x2,p,q;scanf(“%d,%d,%d”,&a,&b,&c);C语言程序设计西安建筑科技大学理学院鲁萍第20页THECPROGRAMMINGLANGUAGEdisc=b*b-4*a*c;if(disc==0)printf(“x1=x2=%f\n”,-b/(2*a));else/*disc!=0*/{if(disc0)/*disc0*/{x1=(-b+sqrt(disc))/(2*a);/*两个不等实根*/x2=(-b-sqrt(disc))/(2*a);printf(x1=%f,x2=%f\n,x1,x2);}else/*disc0*/{p=-b/(2*a);/*两个共轭复根*/q=sqrt(fabs(disc))/(2*a);printf(“x1=%f+%fi\n“,p,q);printf(”x

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功