《5 分支结构.ppt》由会员分享,可在线阅读,更多相关《5 分支结构.ppt(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第1页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E选择结构程序设计1.if语句语句2.switch语句语句3.选择结构程序设计选择结构程序设计举例举例【问题问题】1、从键盘输入一个数,如果该数为正,打印,否则不打印;2、解一元二次方程,求出相应的实根或复根。C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第2页T THHE E C C P PR RO OG GR RA AMMMMI
2、IN NG G L LA AN NG GU UA AG GE Eif 语句语句1 简单if语句语句一般格式一般格式:if(表达式表达式)语句体语句体【说明说明】1)表达式:常量、变量、函数调用、表达式)表达式:常量、变量、函数调用、表达式2)表达式必须加()括起来。)表达式必须加()括起来。3)语句体:一条)语句体:一条 或或 多条语句(多条语句用多条语句(多条语句用括起来)括起来)4)执行过程:)执行过程:当表达式的值为非当表达式的值为非0(真)时,执行语句体(真)时,执行语句体5)一个一个if语句总体上只算一条语句语句总体上只算一条语句C语言程序设计语言程序设计 西安建筑科技大学西安建筑科
3、技大学 理学院理学院 鲁萍鲁萍第3页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E 例例5.2输入任意三个数a、b、c,按从小到大的顺序排序输出。分析:a b c 5 2 3 2 3 5 if(ab)a和b交换,令 a=mina,b if(ac)a和c交换,令 a=mina,b,c if(bc)b和c交换,另b为次大值,c为最大值 if 语句语句交换a和b的内容5 t=a 5 a=b b=a t 5 5 225C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第4页T
4、THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E 例例5.2输入三个数a、b、c,按从小到大的顺序输出。main()int a,b,c,t;printf(“input three numbers: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,%dn,a,b,c);input three numbers:11,22,18 11,18,22没有分没有分号号if 语句语句C
5、语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第5页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Eifelse语句语句1复合if语句的一般格式 if(表达式表达式)语句体语句体1 else 语句体语句体2【说明说明】(1)else必须与if配对使用,不能单独使用。(2)if语句允许嵌套,但嵌套的层数不宜太多。例如:if(ab)max=a;else max=b;ifelse 的执行过程的执行过程表达式的值表达式的值语句体语句体1语句体语句体2执行执行if后的语句后的语句
6、非非0T为为0FC语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第6页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E程序1:if(x=0)if(x0)y=1;else y=0;else y=-1;if语句嵌套时,语句嵌套时,else子句与子句与1.在它上面、在它上面、2.距它最近、距它最近、3.尚未匹配尚未匹配的的if配对。配对。例例5.3程序2:if(x0)y=1;else y=0;程序4:y=0;if(x=0)if(x0)y=1;else y=-1;x=0时时 x
7、=-5 ifelse语句语句C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第7页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Eifelse if语句语句1格式 if(表达式表达式1)语句组语句组1else if(表达式表达式2)语句组语句组2 else if(表达式表达式3)语句组语句组3 else if(表达式表达式4)语句组语句组4 else if(表达式表达式n)语句组语句组n else 语句组语句组n+1计算表达式1的值真否?语句组1语句组2FT执行复合语句
8、后的语句计算表达式2的值真否?TF计算表达式3的值真否?T 语句组3C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第8页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E程序1:if(x=0)if(x0)y=1;else y=0;else y=-1;例例5.3程序2:if(x0)y=-1;else if(x=0)y=0;else y=1;ifelse if语句语句C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第9页T THHE E
9、C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E课堂练习:if 语句应用实例 分别用三种分别用三种if语句编写程序:键盘输入语句编写程序:键盘输入x,输出,输出y (1)简单)简单if语句、语句、(2)ifelse语句、语句、(3)ifelse if语句分别实现。语句分别实现。C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第10页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法一:用算法一:用
10、if语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x1)y=x;if(x=1)y=2*x-1;if(x=10)y=3*x+11;printf(%.2f,y);C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第11页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法二:用算法二:用ifelse语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x=1 */if(
11、x=1&x=10 */printf(%.2f,y);C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第12页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E算法三:用算法三:用ifelse if语句实现语句实现main()float x,y;printf(x=?);scanf(%f,&x);if(x1)y=x;else if(x=1&x=10 */printf(%.2f,y);C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第13页T
12、 THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E输入星期中的某一天输入星期中的某一天,显示对应的英文显示对应的英文#includemain()int i;printf(“Input 1-7:”);scanf(“%d”,&i);if (i=1)printf(“Today is Monday!n”);else if(i=2)printf(“Today is Tuesday!n”);else if(i=3)printf(“Today is Wednesday!n”);else if(i=4)printf(“Tod
13、ay is Thursday!n”);else if(i=5)printf(“Today is Friday!n”);else if(i=6)printf(“Today is Saturday!n”);else printf(“Today is Sunday!n”);复杂!复杂!C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第14页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E switch语句语句1一般形式一般形式switch(条件表达式条件表达式)case 常量
14、表达式常量表达式1:语句组语句组1;case 常量表达式常量表达式2:语句组语句组2;.case 常量表达式常量表达式:语句组语句组n;default:语句组语句组n+1;2执行过程执行过程(1)若)若 条件表达式条件表达式=常量表达式常量表达式i 则则 执行语句组执行语句组i 以及语句组以及语句组i+1语句组语句组n+1(2)若)若 条件表达式条件表达式!=任何常量表达式任何常量表达式 则则 执行执行default 的语句组的语句组n+1没有分号没有分号没有分号没有分号C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第15页T THHE E C C P P
15、R RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Emain()int i;printf(“Input 1-7:”);scanf(“%d”,&i);switch(i)case 1:printf(“Today is Monday!”);case 2:printf(“Today is Tuesday!”);case 3:printf(“Today is Wednesday!”);case 4:printf(“Today is Thursday!”);case 5:printf(“Today is Friday!”);case 6:printf(
16、“Today is Saturday!”);default:printf(“Today is Sunday!”);输入星期中的某一天,显示对应的英文break;break;break;break;break;break;运行结果Input 1-7:4Today is Thursday!Today is Friday!Today is Saturday!Today is Sunday!break:跳出:跳出switch结构结构空格空格C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第16页T THHE E C C P PR RO OG GR RA AMMMMI
17、 IN NG G L LA AN NG GU UA AG GE E3说明说明(1)条件表达式:)条件表达式:常量常量表达式,表达式,int、char、枚举型、枚举型 例:例:case 3+4:/*正确正确*/case x+y:/*错误错误 设设int x=3,y=4;*/(2)多个)多个case子句,可共用同一语句(组)。子句,可共用同一语句(组)。例如例如:case 10:case 9:printf(grade=An);break;(3)default可以省略;可以省略;(4)每个)每个case后面的语句有多条语句时可以不加后面的语句有多条语句时可以不加括起来。括起来。switch语句 C语
18、言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第17页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E例例:从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,输出其等级:,输出其等级:score90,等级为,等级为A;80score90,等级为,等级为B;70score80,等级为,等级为C;60score70,等级为,等级为D;score 0-10选择结构程序设计举例选择结构程序设计举例C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理
19、学院 鲁萍鲁萍第18页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE Emain()int score;printf(“Input a score(0100):”);scanf(“%d”,&score);/*将成绩转化成10种情形*/switch(score/10)case 10:case 9:printf(“grade=An”);break;case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn)
20、;break;case 5:case 4:case 3:case 2:case 1:case 0:printf(“grade=En”);break;default:printf(“The score is out of range!n”);选择结构程序设计举例选择结构程序设计举例C语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第19页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E 选择结构程序设计举例例例5.6 求一元二次方程求一元二次方程ax2+bx+c=0的解(的
21、解(a0)。)。分析:disc=b2-4ac=0 x1=x2=-b/(2a)disc=b2-4ac0 x1=(-b+sqrt(disc)/(2a)x2=(-b-sqrt(disc)/(2a)disc=b2-4ac0 x1=(-b/(2a)+sqrt(disc)/(2a)i x2=(-b/(2a)-sqrt(disc)/(2a)i输出输出数值数值数值数值+数值iprintf(“%f+%f i“,p,q);#includemain()int a,b,c,disc;float x1,x2,p,q;scanf(“%d,%d,%d”,&a,&b,&c);C语言程序设计语言程序设计 西安建筑科技大学西安建
22、筑科技大学 理学院理学院 鲁萍鲁萍第20页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE E disc=b*b-4*a*c;if(disc=0)printf(“x1=x2=%fn”,-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=%fn,x1,x2);else /*disc0 x1=(-b+sqrt(disc)/(2a)x2
23、=(-b-sqrt(disc)/(2a)disc=b2-4ac0 x1=(-b/(2a)+sqrt(disc)/(2a)i x2=(-b/(2a)-sqrt(disc)/(2a)i输出输出数值数值数值数值+数值i#includemain()int a,b,c,disc;float x1,x2,p,q;scanf(“%d,%d,%d”,&a,&b,&c);floatfffC语言程序设计语言程序设计 西安建筑科技大学西安建筑科技大学 理学院理学院 鲁萍鲁萍第22页T THHE E C C P PR RO OG GR RA AMMMMI IN NG G L LA AN NG GU UA AG GE
24、E disc=b*b-4*a*c;/*float*/if(disc=0)printf(“x1=x2=%fn”,-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=%fn,x1,x2);else /*disc0*/p=-b/(2*a);/*两个共轭复根*/q=sqrt(fabs(disc)/(2*a);printf(“x1=%f+%f in“,p,q);printf(”x2=%f-%f in“,p,q);选择结构程序设计举例计算机存储实数时有微小误差,计算机存储实数时有微小误差,所以判断所以判断disc是否为是否为0的方法是:的方法是:|disc|10-6 (一个非常小的数)一个非常小的数)(fabs(disc)1e-6)