最新四章语句与程序控制结构幻灯片.ppt
《最新四章语句与程序控制结构幻灯片.ppt》由会员分享,可在线阅读,更多相关《最新四章语句与程序控制结构幻灯片.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、24.2 顺序结构程序举例顺序结构程序举例 3,4,6例1:输入三角形的三边长,求三角形的面积。公式:#include ”math.h” main( ) float a, b, c, area, s; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, &a, &b, &c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(”a=%7.2f,b=%-7.2f,c=%-7.2fn”, a,b,c); printf(”area=%-7.2fn”, area); 2cbas)(*)(*)(*csbsa
2、ssarea9例:输入一个整数,为正则输出 main( ) int x; scanf(”%d”, &x); if (x0) printf(”%dn” , x); 例:输入两个数并按由小到大顺序输出 main( ) float a, b, t; scanf(”%f,%f”, &a, &b); if (ab) t=a; a=b; b=t; printf(”%f,%fn”, a, b); 10第二种形式第二种形式双路分支 if (表达式) 语句1 else 语句2 其中:其中:内嵌语句1是条件成立时所执行的操作; 内嵌语句2是条件不成立时所执行的操作;执行流程:执行流程: 首先求解表达式,并对其值进
3、行逻辑判断;为真,执行内嵌语句1,之后执行后续语句。 若分支条件不成立,则执行内嵌语句2,之后执行后续语句。11对应算法:对应算法:PT F内嵌 内嵌 语句1 语句2可分行书写: if (表达式) 语句1 else 语句212例:根据x求y值 y= main( ) float x, y; scanf(”%f”, &x); if (x=0) y=x; printf(”y=%fn” , y); else y=x*x+1.0; printf(”y=%fn”, y); x x0 x2 + 1 x=0) y=x; else y=x*x+1.0; printf(”y=%fn”, y); 14例:求任意三角
4、形面积,若三边值不能构成三角形时输出表示错误的信息。#include math.h”main( ) float a, b, c, s, area; printf(”Enter a, b, c:”); scanf(”%f,%f,%f”, &a, &b, &c); if(a+bc & a+cb & b+ca) s=(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(”area=%-8.3fn”, area); else printf(”DATA ERROR!”); 15第三种形式第三种形式阶梯if (不成立时嵌套分支) if ( e1 ) s1 e
5、lse if ( e2 ) s2 else if ( e3 ) s3 else if ( em ) sm else sn其中:其中:ei各层的分支条件;si各层的内嵌语句;执行流程:执行流程:首先计算并判断e1的值,为真执行s1,之后退出分支。e1为假则计算并判断e2的值,为真执行s2, 之后退出分支。依次类推。e1e2T F T F T F s1 s2 s3 s4e316例:对学生成绩分档;main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); else if (g
6、=80) printf(”A”); else if (g=70) printf(”B”); else if (g=60) printf(”C”); else printf(”D”); 80100分 A档 7079分 B档 6069分 C档 059分 D档17注意注意:分支条件的正确性 main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); else if (g=60) printf(”C”); else if (g=70) printf(”B”); else if (
7、g=80) printf(”A”); 57 65 89 D C C 18上例:用单路分支实现main( ) int g; printf(”Enter score:”); scanf(”%d”, &g); if (g100) printf (”INPUT ERROR !”); if (g=80&g=70&g=60&g=0&g=59) printf(”D”); 多个并列if语句,执行效率不如阶梯 if。80100分 A档 7079分 B档 6069分 C档 059分 D档192. if 的嵌套的嵌套 在一个分支结构中,又完整地包含一个或多个分支结构,则构成了分支结构的嵌套。例:分支条件不成立时需要
8、进一步分支算法表示:算法表示: 算法实现:算法实现: if (e1) s1 else if (e2) s2 else s3 e1e2T F T Fs1 s2 s3 20例:分支条件成立与不成立,均要进一步分支算法表示:算法表示: 算法实现:算法实现:e1 e2 e3T FT F T Fs1 s2 s3 s4if (e1) if (e2) s1 else s2else if (e3) s3 else s421例:分支条件不成立时需要若干层进一步的分支算法表示:算法表示: 算法实现:算法实现:e1e2e3T F T F T F s1 s2 s3 s4if (e1) s1else if (e2) s
9、2 else if (e3) s3 else s4 可见:阶梯if是条件不成立时的嵌套结构22例:编程,判定某年是否闰年闰年条件:整百的年份能被400整除; 或非整百的年份能被4整除。算法表示:算法表示:输入yearyear%100= =0year%400= =0year%4= =0T F T Fleap=1 leap=0 leap=1 leap=0 leap= =1 T F T F 输出“is” 输出“not” 23程序清单:main( ) int year, leap; scanf(”%d”, &year); if (year%100=0) if (year%400=0) leap=1;
10、else leap=0; else if (year%4=0) leap=1; else leap=0; if (leap=1) printf(”%d is a leap yeas.n”,year); else printf(”%d is not a leap year.n”, year); 24例:根据 x求y值。 3x - 11 (0 x 10) y= 2x + 5 (10 x 20) x (20 x 30)输入 x x0&x30T F x10 T F x20 T F y=x y=3x-11 y=2x+5 输出x无效 输出 y 输入x输出X无效3x-11yx0&x30 x10 x=0&x3
11、0) if (x10) y=3*x-11; else if (x20) y=2*x+5; else y=x; printf(”x=%7.2f,y=%7.2fn”, x, y); else printf(”%7.2f is invalid.n”, x); 26方法2: 3x - 11 ( 0 x 10) y= 2x + 5 (10 x 20) x (20 x 30) x=30T F 输出 x无效 x10 T F y=3x-11 y=2x+5 y=x x20 T F 输出 y 输入 xscanf(%f, &x);if(x=30)printf();else if(x10) y=3*x-11; els
12、e if(x=a & c=z) c=c-32; else c=c; printf(“%c”,c); /*将小写字母转换为大写字母*/29if语句 示例【例二】以下程序的执行结果是什么? main( ) int x=2,y=-1,z=2; if (xy) if (y0) ; if (x=2) if (1=x0”); y=x-1;304.3.2 switch多分支选择多分支选择 语句语句 (多路开关语句)1. switch的一般形式的一般形式 switch (表达式) case 常量1: s1 case 常量2: s2 case 常量n: sn default : sn+1 其中:其中:表达式可是
13、任何形式,但其值应为整型; 内嵌语句si可是一条语句、复合或空语句; 常量i可是整、字符、符号常量、常量表达式。312. switch的执行流程的执行流程 首先求解表达式,然后测试其值与哪个case后的常量相等,相等则从该case后的语句开始执行,直到其后的所有内嵌语句执行完毕,退出多分支结构。 若表达式的值不与任何常量相等,则执行default后的语句,执行完毕退出分支。32switch执行流程图:执行流程图:switch (表达式) case c1: s1 case c2: s2 case cn: sn default : sn+1 求解表达式c1?c2?cn?sn+1s1sns2YYYN
14、NN33求解表达式c1?c2?cn?sn+1s1sns23. 使用说明使用说明1) 在switch中可以使用break语句跳出switch结构;breakbreakbreak34例:对成绩分档 main( ) char c1; int g; scanf(”%d”, &g); switch( g/10 ) case 10: c1=A ; case 9: c1=A ; case 8: c1=A ; case 7: c1=B ; case 6: c1=C ; default: c1=D ; printf(“%cn”, c1); 80100分 A档7079分 B档 6069分 C档 059分 D档br
15、eak;break;break;break;break;352) case后的各常量不能相同,否则编译无法通过;3) default为可选项,它提供了表达式的值与任何量 都不相同时的执行方案;若表达式的值与任何常量都不相同时什么也不需要做,则省略关键字 default;4) 多个case可共用一组执行语句; 例: switch( g/10 ) case 10: case 9: case 8: c1=A ; break; case 7: c1=B ; break; 36例:设计一个简单的菜单选择程序,根据选择可实 现a与b的四则运算。#include “stdio.h”main( ) int a
16、, b; char c1; clrscr( ); printf(”1. Addn”); printf(”2. Subtractn”); printf(”3. Multiplyn”); printf(”4. Dividen”); printf(”Enter your choice:”); c1=getchar( ); 37 c1=getchar( ); if (c1=1 & c1=4 ) printf(”Enter a, b:”); scanf(“%d,%d”, &a, &b); switch(c1) case 1 : printf(“%dn”, a+b); break; case 2 : pr
17、intf(“%dn”, a-b); break; case 3 : printf(“%dn”, a*b); break; case 4 : printf(“%fn”, (float)a/b); else printf(“Invalid selsction.”); /*main*/38switch语句 示例main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”); case B : printf(“7084n”); case C : printf(“6069n”); case D : printf(“60n”); def
18、ault : printf(“错误输入n”); 输入“c”,求输出结果。 结果: 6069 60 错误输入 ?!39switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);break; case C : printf(“6069n”);break; case D : printf(“60n”);break; default : printf(“错误输入n”); 这才差不多!break! 运行结果: 60694
19、0switch语句 示例解决方法break语句:main() char s; scanf(“%c”,&s); switch(s) case A : printf(“85100n”);break; case B : printf(“7084n”);break; case C : printf(“6069n”);break; case D : printf(“max) max=b; if (cmax) max=c; if (dmax) max=d; printf(”MAX=%dn”, max); 43例:找出三个整数中的最大、最小数。main( ) int a, b, c, max, min; p
20、rintf(”Enter a, b, c:”); scanf(”%d,%d,%d”, &a, &b, &c); max=ab? a: b; max=cmax? c: max; min=ab? a: b; min=cmin? c: min; printf(”MAX=%dnMIN=%dn”, max, min); 44例:输入三个整数,由大到小输出。main( ) int a, b, c; 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,
21、%d,%dn”, a, b, c); 输入abc ab?ab bc?a=10000) w=5; /*求解位数*/ else if(a=1000) w=4; else if(a=100) w=3; else if(a=10) w=2; else w=1; p5=a/10000; /*分离各位*/ p4=(a-p5*10000L)/1000; /*L:防止溢出*/ p3=(a-p5*10000L-p4*1000)/100; 47 p2=(a-p5*10000L-p4*1000-p3*100)/10; p1=a-p5*10000L-p4*1000-p3*100-p2*10; printf(“t%ld
22、,%dntt”, a, w); switch( w ) case 5: printf(”%dbbb”, p5); /*无须break*/ case 4: printf(”%dbbb”, p4); case 3: printf(”%dbbb”, p3); case 2: printf(”%dbbb”, p2); case 1: printf(”%dbbb”, p1); printf(“n”);48另一种输出方法:switch( w ) case 5: printf(”%d %d %d %d %d”, p1, p2, p3, p4, p5); break; case 4: printf(”%d %
23、d %d %d”, p1, p2, p3, p4); break; case 3: printf(”%d %d %d”, p1, p2, p3); break; case 2: printf(”%d %d”, p1, p2); break; case 1: printf(”%d”, p1); 49例:输入四个整数,升序排序并输出。输入a、b、c、dT ab F ab T cd F cd T ac F ac T bc F bc T bd F bd T cd F cd 输出a、b、c、dbadccbdbdc504.4.1 while语句语句一般形式:一般形式:while (表达式) 语句其中:其中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 语句 程序控制 结构 幻灯片
限制150内