第4章 结构化程序设计.ppt
《第4章 结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章 结构化程序设计.ppt(72页珍藏版)》请在沃文网上搜索。
1、 程序的三种基本结构程序的三种基本结构结构化程序设计结构化程序设计v基本思想:任何程序都可以用三种基本结基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(构表示,限制使用无条件转移语句(goto)v结构化程序:由三种基本结构反复嵌套构结构化程序:由三种基本结构反复嵌套构成的程序叫成的程序叫v优点:结构清晰,易读,提高程序设计质优点:结构清晰,易读,提高程序设计质量和效率量和效率三种基本结构三种基本结构v顺序结构顺序结构第第4章章 结构化结构化程序设计程序设计4.1 算法与结构化程序设计算法与结构化程序设计 语句块语句块1语句块语句块2语句块语句块1语句块语句块2流程图流程图N
2、-S图图v选择结构选择结构l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构条件条件语句块语句块1语句块语句块2真真假假P 语句块语句块2语句块语句块1真真假假条件条件k语句块语句块1语句块语句块2语句块语句块i语句块语句块nk=k2k=k1k=knk=ki.语句块语句块1条件条件1语句块语句块2条件条件2语句块语句块n条件条件n语句块语句块其它其它v循环结构循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构循环条件循环条件循环体循环体假假真真当循环条件当循环条件为真为真循环体循环体循环体循环体循环条件循环条件真真假假循环体循环体直到循环条件直到循环条件为真为真注:循环
3、体注:循环体可以是一个简单语句,也可以是一个基本结构可以是一个简单语句,也可以是一个基本结构4.2.1 C4.2.1 C语句概述语句概述C语句分类语句分类:1.表达式语句表达式语句 a=3;2.声明语句声明语句 3.程序控制语句程序控制语句(9种):种):if()elseswitchfor()while()dowhile()continuebreakgotoreturn分支分支循环循环辅助控制辅助控制如如 total=total+limit;a=3;func();printf(“Hello,world!n”);4.2 顺序结构程序设计顺序结构程序设计 4.4.函数调用语句函数调用语句5.空语句
4、空语句;6.复合语句:用复合语句:用 括起来的一组语句括起来的一组语句l一般形式:一般形式:数据说明部分;数据说明部分;执行语句部分;执行语句部分;l说明:说明:u“”后不加分号后不加分号u语法上和单一语句相同语法上和单一语句相同u复合语句可嵌套复合语句可嵌套4.2.2 4.2.2 赋值语句赋值语句一般形式:一般形式:变量名变量名=表达式表达式;例如:例如:b=c=5;b=c=5;if(a=b)t=a;if(a=b)t=a;if(a=b)t=a;if(a=b)t=a;if(a=b)0)t=a;if(a=b)0)t=a;if(a=b;)0)if(a=b;)0)t=a;t=a;错了,因为错了,因为
5、C C编译编译器将把它看成是器将把它看成是如下两条语句:如下两条语句:if(a=b;if(a=b;)0)t=a;)0)t=a;4.2.3 4.2.3 字符数据的输入和输出字符数据的输入和输出 常用的标准输入输出函数有两种:常用的标准输入输出函数有两种:1.1.用于字符输入输出的函数(用于字符输入输出的函数(getchar/putchar););2.2.用于格式输入输出的函数(用于格式输入输出的函数(scanf/printf)。)。1.1.字符输出函数字符输出函数 putchar(c);putchar(c);2.2.字符输入函数字符输入函数 getchar();getchar();例例4.7 输
6、入两个字符并回显这两个字输入两个字符并回显这两个字符。符。#include void main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);运行情况如下:运行情况如下:xy xy4.2.4 4.2.4 格式输入和输出格式输入和输出 1.1.格式输出函数格式输出函数printfprintfprintfprintf函数的一般调用格式为:函数的一般调用格式为:printf(printf(格式控制格式控制,输出参数表列输出参数表列););格式控制是用双引号定界符括起来的字符串,它包括两种信息:格式控制是用双引号定界符括起来
7、的字符串,它包括两种信息:格式说明,由格式说明,由“%”%”和格式字符组成,如和格式字符组成,如%d%d,%f%f等。它的作用是将等。它的作用是将输出的对象采用指定的格式输出。格式说明总是由输出的对象采用指定的格式输出。格式说明总是由“%”%”字符开始的。字符开始的。普通字符,即需要原样输出的字符,它可以是一般字符,也可以是普通字符,即需要原样输出的字符,它可以是一般字符,也可以是转义字符。转义字符。输出参数表列是需要输出的一些对象,可以是常量、变量或表达式。输出参数表列是需要输出的一些对象,可以是常量、变量或表达式。例如:如果例如:如果a a、b b的值分别为的值分别为5 5、2020,则输
8、出,则输出 printf(a=%d,b=%d,a+b=%dnCONST:%dn,a,b,a+b,8);printf(a=%d,b=%d,a+b=%dnCONST:%dn,a,b,a+b,8);结果为:结果为:a=5,b=20,a+b=25 CONST:8如果要以普通字符的形式输出字符如果要以普通字符的形式输出字符“%”%”,则只需要,则只需要连续使用两个连续使用两个“%”%”字符字符即可,此时即可,此时“%”%”并不构成格式控制。例如:并不构成格式控制。例如:printf(%d%dn,printf(%d%dn,8);8);输出结果为:输出结果为:%d d%8 8例例2.7 整型数据的格式输出。
9、整型数据的格式输出。#include void main()int a=-2,b=25;unsigned u=65534,v=28;short c=45;char d=A;printf(a:%d,%u,%o,%xn,a,a,a,a);printf(u:%d,%u,%o,%xn,u,u,u,u);printf(b:%d,%u v:%d,%un,b,b,v,v);printf(c=%d,d=%dn,c,d);运行结果如下:运行结果如下:a:-2,65534,177776,fffe u:-2,65534,177776,fffe b:25,25 v:28,28 c=45,d=65例例2.9 指定格式输
10、出的宽度。指定格式输出的宽度。#include void main()int a=-4,b=45,c=456,d=4567;unsigned u=456;long l=456;printf(a=%3d,b=%3d,c=%3d,d=%3dn,a,b,c,d);printf(a=%-3d,b=%-3d,c=%-3d,d=%-3dn,a,b,c,d);printf(u=%-5u,u=%5u,l=%-5ld,l=%5ldn,u,u,l,l);运行结果如下:运行结果如下:a=-4,b=45,c=456,d=4567 a=-4,b=45,c=456,d=4567 u=456 ,u=456,l=456 ,l
11、=456例例2.10 指定输出宽度的字符型数据的格式输出。指定输出宽度的字符型数据的格式输出。#include void main()char c1=A;int c2=98;printf(c1=%-3c,c1=%3c%c,c1,c2,n);printf(%sn%sn,Shanghai,China);printf(str1=%-8s,str2=%8sn,ABCDEF,ABCDEF);printf(str3=%-8.2s,str4=%8.4sn,ABCDEF,ABCDEF);printf(str5=%-.4s,str6=%.4sn,Information,Information);例例2.11 实
12、型数据的格式输出。实型数据的格式输出。#include void main()float a=34.5678;double b=12345678.87654321;printf(a=%f,a=%-6.2f,a=%6.2f,a=%4.2f,a=%.2fn,a,a,a,a,a);printf(a=%e,a=%-10.3e,a=%10.3e,a=%6.3e,a=%.3en,a,a,a,a,a);printf(a=%g,a=%10f,a=%10en,a,a,a);printf(b=%f,b=%e,b=%gn,b,b,b);运行结果如下:运行结果如下:a=34.567799,a=34.57,a=34.5
13、7,a=34.57,a=34.57 a=3.456780e+01,a=3.46e+01,a=3.46e+01,a=3.46e+01,a=3.46e+01 a=34.5678,a=34.567799,a=3.456780e+01 b=12345678.876543,b=1.234568e+07,b=1.23457e+072.格式输入函数格式输入函数scanfScanf 函数调用的一般形式为:函数调用的一般形式为:scanf(格式控制格式控制,地址表列地址表列);例例2.12 整型数据的格式输入。整型数据的格式输入。#include void main()int a,b,c;scanf(%d%d%
14、d,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);运行情况如下:运行情况如下:3 4 5 a=3,b=4,c=5格式控制中也可以包含普通字符,如:格式控制中也可以包含普通字符,如:scanf(a=%d,b=%d,&a,&b);此时它的输入就只能按格式控制中给定的形式进行,如:此时它的输入就只能按格式控制中给定的形式进行,如:a=5,b=36例例2.13 整型数据与字符数据的格式输入。整型数据与字符数据的格式输入。#include void main()int a,b,c,d;char c1,c2,c3;scanf(%d%d,&a,&b);printf(a=%d
15、,b=%dn,a,b);scanf(%d%d,&c,&d);printf(c=%d,d=%dn,c,d);scanf(%c%c%c,&c1,&c2,&c3);putchar(c1);putchar(c2);putchar(c3);运行情况如下:运行情况如下:5 20 25 a=5,b=20 40 c=25,d=40 xyz x 例例2.14 带分隔符的整型数据的格式输入。带分隔符的整型数据的格式输入。#include void main()int a,b;float c,d;printf(Please input 2 int numbers:n);scanf(a=%d,b=%d,&a,&b);
16、getchar();/*用来读取给变量用来读取给变量a,b输入数据后的回车换行符输入数据后的回车换行符*/printf(Please input 2 real nembers:n);scanf(c=%f,d=%f,&c,&d);printf(a=%d,b=%dn,a,b);printf(c=%.2f,d=%.2fn,c,d);运行情况如下:运行情况如下:Please input 2 int number:a=12,b=24 Please input 2 real number:c=3.14,d=2.5 a=12,b=24 c=3.14,d=2.50exprstatementTFexprstat
17、ement1statement2非非0=0l形式二形式二:u格式格式:if(expression)statement1 else statement2u执行过程:执行过程:if语句语句(条件选择语句)(条件选择语句)vif语句的三种形式语句的三种形式l形式一:形式一:u格式:格式:if(expression)statementu执行过程:执行过程:4.3 分支结构程序设计分支结构程序设计l形式三:形式三:u格式:格式:if(expr1)statement1else if(expr2)statement2else if(expr3)statement3.else statement n expr
18、1statemnt 1非非0=0expr2expr3statemnt nstatemnt 3statemnt 2非非0非非0=0=0u执行过程:执行过程:如:如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);l说明:说明:uifif后面的表达式类型任意后面的表达式类型任意u语句可以是复合语句语句可以是复合语句if(x10)a=1;b=2,c=3u if(x)if(x!=0)if(!x)if(x=0)/#include main()int x,y;printf(Enter an integer:);scanf
19、(%d,&x);y=x;if(xabsolute value:%dn,x,y);例例 求一个数的绝对值求一个数的绝对值运行:运行:Enter an integer:-12 integer:-12-absolute value:12#include#include void main()float a,b,c;float s,l;printf(Please input three numeric value:n);scanf(%f%f%f,&a,&b,&c);if(a=0|b=0|cc&a+cb&b+ca)l=(a+b+c)/2.0;s=sqrt(l*(l-a)*(l-b)*(l-c);prin
20、tf(area of triangle:%f,s);else printf(Illegal input!n);例例4.16 输入三角形的输入三角形的3个边长个边长a、b、c,求出三角形的面积。提示:用海伦求出三角形的面积。提示:用海伦公式公式S=sqrt(l*(l-a)*(l-b)*(l-c),其中其中l是半周长,是半周长,sqrt是求平方根的函数,在是求平方根的函数,在math.h中定义。中定义。运行结果如下:运行结果如下:Please input three numeric value:3 4 5 area of triangle:6.000000#include void main()i
21、nt c;float pay,discount;printf(Input customer rank:n);scanf(%d,&c);printf(Input amount of payment:n);scanf(%f,&pay);if(c=1)discount=0.9;else if(c=2)discount=0.85;else if(c=3)discount=0.8;else discount=1.0;pay=pay*discount;printf(You should pay:%.2fn,pay);例例4.17 某商店实行会员制,某商店实行会员制,为不同的会员设定了不同为不同的会员设定了
22、不同的折扣,普通会员打九折,的折扣,普通会员打九折,银卡会员打八五折,金卡银卡会员打八五折,金卡会员打八折。编写程序,会员打八折。编写程序,根据用户输入的会员等级根据用户输入的会员等级和所购商品总金额,输出和所购商品总金额,输出应付金额。应付金额。运行情况如下:运行情况如下:Input customer rank:1 Input amount of payment:50 You should pay:45.00条件运算符与表达式条件运算符与表达式v一般形式:一般形式:expr1?expr2 :expr3v执行过程执行过程v功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般
23、if语句语句例例if(ab)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,ab?a:b);v条件运算符可嵌套条件运算符可嵌套 如如 x0?1:(xb?a:cd?c:d ab?a:(cd?c:d)vexpr1、expr2、expr3类型可不同,表达式值取较高的类型可不同,表达式值取较高的类型类型例例x?a:b/x=0,表达式值为表达式值为b;x0,表达式值为表达式值为axy?1:1.5/xy,值为值为1.0;x0?a+b:a-b);例例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c=z)?c-a+A:cvif语句嵌套语句嵌套
24、:l一般形式:一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌内嵌if内嵌内嵌ifif(expr1)if(expr2)statement1 else if(expr3)statement 2 else statement3内嵌内嵌ifif(expr1)if(expr2)statement1else if(expr3)statement 2 else statement3 if(expr1)statement1else if(expr3)statement3 el
25、se statement4内嵌内嵌ifif()if()if()else.else.else.lif else 配对原则:配对原则:缺省缺省 时,时,else总是和总是和它上面离它最近的未配对的它上面离它最近的未配对的if配对配对if else 配对原则配对原则:例例4.18 求解一元二次方程求解一元二次方程ax2+bx+c=0的根。的根。#include#include void main()float a,b,c,delta,x1,x2,realpart,imagpart;scanf(%f,%f,%f,&a,&b,&c);printf(The equation);if(fabs(a)=1e-
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
免费下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 结构化程序设计 结构 程序设计
