C++讲解4(全10讲).ppt

上传人:牧羊曲112 文档编号:6154026 上传时间:2023-09-30 格式:PPT 页数:51 大小:278KB
返回 下载 相关 举报
C++讲解4(全10讲).ppt_第1页
第1页 / 共51页
C++讲解4(全10讲).ppt_第2页
第2页 / 共51页
C++讲解4(全10讲).ppt_第3页
第3页 / 共51页
C++讲解4(全10讲).ppt_第4页
第4页 / 共51页
C++讲解4(全10讲).ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《C++讲解4(全10讲).ppt》由会员分享,可在线阅读,更多相关《C++讲解4(全10讲).ppt(51页珍藏版)》请在三一办公上搜索。

1、1,一、基本概念,数据结构+算法=程序1、算法:是对特定问题求解步骤的一种描述2、数据结构:数据的组织形式及其相互关系,2,二、算法举例,1、求1*2*3*4*5的值。2、判断一个数n是否为素数。(n2),3,四、算法的表示,1、自然语言2、流程图3、伪代码4、计算机语言,4,五、结构化程序设计方法,1、含义:规范程序设计风格和程序结构。2、思路:将复杂的问题分阶段处理3、方法:自顶向下、逐步细化、模块化设计、结构化编码,5,S1:求1 2,得到结果2.S2:将第1步所得结果2乘以3,得到结果6.S3:将6乘以4,得24.S4:将24乘以5,得120.,求1*2*3*4*5的值。(思路一),6

2、,设p为被乘数,i为乘数S1:使p=1.S2:使i=2.S3:使pi,乘积赋给p.S4:使i的值加1.S5:若i=5,执行S3;否则程序结束.,求1*2*3*4*5的值。(思路二),7,S1:输入n的值.S2:置变量i的值为2.S3:求解m=n%i;若m=0,转向S6,否则执行S4.S4:变量i的值自加1.S5:判断in是否成立;若为真则转向S3,否则执行S6.S6:判断in是否成立;若为真输出“非素数”,否则输出“素数”.还有没有求素数的其他方法,判断一个数n是否是素数(n2),8,棋盘上的麦粒,在国际象棋棋盘上第1格放1粒麦粒,第2格放2粒麦粒,第3格放4粒麦粒,第4格放8粒麦粒,如此直到

3、放满棋盘的64格为止。请计算共需要多少麦粒?,18,446,744,073,709,551,615,9,8皇后互不攻击,在国际象棋棋盘上放8个皇后,要求任何1个皇后都不会攻击其他皇后。请问有多少种放法?,10,汉诺塔,在古代有一座塔,塔里有3个座A、B、C,A座上有64个大小不等的盘子,大盘在下,小盘在上。要求把A座上64个盘子移到C座,但每次只能移动1个盘,且要始终保持大盘在下,小盘在上,在移动过程中可以利用B座。问如何移动?,11,N-S流程图,当P成立,A,循环结构,12,打印x的绝对值(伪代码),If x is positive thenPrint xElse Print-x,13,打

4、印x的绝对值(C源程序段),if(x 0)printf(|x|=%d,x);else printf(|x|=%d,-x);,14,:用 括起来的一组语句一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套,复合语句,15,算法的基本控制结构,问题的提出:(1)-1(x0)(2)统计任意一个人群的平均身高算法算法的基本控制结构:顺序结构分支结构循环结构程序流程图,16,结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本

5、结构顺序结构,程序的三种基本结构,17,二分支选择结构,多分支选择结构,选择结构,18,当型循环结构,直到型循环结构,注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构,循环结构,19,赋值语句,格式:赋值表达式;赋值语句与赋值表达式的区别:赋值表达式可以包含在其它表达式中,而赋值语句不可。例:if(a=b)0)t=a;不可写为:if(a=b;)0)t=a;,20,这是C中新加的非常简单易用的输入、输出方式,C+中没有专门的输入输出语句,是用I/O流类来实现。在程序的开头增加一行:#include 1)用插入操作符“”向标准输出流cout中插入字符。向标准输出设备(显示器)输出例:

6、int x;cout“x=“x;,简单的输入、输出,21,2)用抽取操作符“”从标准输入流cin中抽取字符从标准输入设备(键盘)输入例:int x;cinx;int a,b;cinab;,)使用控制符 有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格式。在程序的开头增加一行:#include,22,例:,#include#includevoid main()coutsetw(5)setprecision(3)3.1415endl;3.14,23,C语言无I/O语句,I/O操作由函数实现,#include,C语言中的输入输出,24,printf和scanf,printf函数(1)pri

7、ntf函数的一般格式为:printf(格式控制字符串,输出项1,输出项2,)括号中的格式控制字符串和输出项都是函数参数。printf()函数的功能是将后面的参数按给定的格式输出。格式控制字符串中有格式说明,也有普通字符。格式说明由”%”和格式字符组成,如%d,%f 等。它的作用是将输出的数据转换成指定的格式输出。普通字符按原样输出,如:#include stdio.hvoid main()int a=10,b=20;printf(%d,%d,a,b);,输出结果为:10,20,25,(2)%d 格式符用来输出10进制整数,可以有长度修饰。如:#include stdio.hvoid main(

8、)int a=28,b=38;long c=123456;printf(%5d,%5dn%ldn,a,b,c);printf(%3ldn%7ldn%dn,c,c,c);输出结果为:28,38123456123456 123456123456,%5d表示输出宽度为5,%ld表示输出为长整型如果整数的位数多于指定宽度,则按实际位数输出,26,(3)%o和%x格式符用来输出8进制、16进制整数。8进制和16进制都是无符号整数,输出时不带符号。如:#include stdio.hvoid main()int a=1200;printf(%d,%o,%x,%X,%6xn,a,a,a,a,a);输出结果为

9、:1200,2260,4b0,4B0,4b0,27,(4)%u 格式符用来输出无符号10进制整数。(5)%c 格式符用来输出一个字符。如果一个整数,其值在0255之间,也可以字符方式输出。它们都可以指定格式宽度。例如:char ch=a;int a=65;printf(%c,%d,%3cn,ch,ch,ch);printf(%c,%d,%3dn,a,a,a);输出结果为:a,97,aA,65,65,28,(6)%s 格式符用来输出字符串。可以指定格式宽度,如果字符串长小于指定的宽度时,可以选择左对齐或右对齐。另外,还可以选择输出字符中的前n个字符。例如:printf(%s,Hellon);pr

10、intf(Hellon);printf(%3s,%-5.3s,%5.2sn,Hello,Hello,Hello);输出结果为:HelloHelloHello,Hel,He如果输出的只有一个字符串,可以省略格式参数,因为格式参数本身可以是原样输出的普通字符串。“%-5.3s”中的负号表示左对齐,如果没有负号,则默认为右对齐。5表示格式宽度,3表示截取字符串中3个字符。,29,(7)%f 格式符用来以小数方式输出。可指定格式宽度,也可以指定小数位数,还可以规定左对齐或右对齐。如:float x=123.456;double y=321.654321;printf(%f,%-7.2f,%10.4fn

11、,x,x,x);printf(%lf,%-7.2lf,%10.4lfn,y,y,y);输出结果为:123.456001,123.46,123.4560321.654321,321.65,321.6543以%f 格式输出时,默认的小数位数是6位。%-7.2f表示左对齐,总长度为7位,小数位数为2位。,30,(8)%e,%E,%g,%G 格式符用来以指数方式输出浮点数。默认的小数位数为6,指数位数为3(不包括e+和e-):float x=123.456;double y=321.654321;printf(%e,%-7.2e,%10.4en,x,x,x);printf(%e,%-7.2e,%10.

12、4en,y,y,y);输出结果为:1.234560e+002,1.23e+002,1.2346e+0023.216543e+002,3.22e+002,3.2165e+002%E 格式同%e,只是将输出的小写 e 改为大写 E。%g根据数值的大小,自动选取f格式或e格式。,31,(9)注意事项除X,E,G格式外,其他格式必须用小写字母,例如%d不能写成%D可以在printf函数中的“格式控制”字符串内使用“转义字符”。“格式控制”字符串中,在%后的d、o、x、u、c、s、f、e、g做为格式符,否则做为普通字符,如:printf(“c=%c,f=%f,s=%s”,c,f,s);如果想输出字符%,

13、则应该在“格式控制”字符串中连续用两个%表示,如:printf(“%f%”,1.0/3);,32,int i,j;scanf(“%3d%3d”,/输入3,4,33,(3)注意事项scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。在使用%c格式输入字符时,空格字符和“转义字符”都作为有效字符输入在输入数据时,遇以下情况时该数据认为结束遇空格,或按“回车”,或”Tab”键按指定的宽度结束,如%3d,只取3列遇非法输入。,34,/*ch3_12.c*/#include#inclu

14、de main()float a,b,c,s,area;scanf(%f,%f,%f,输入:3,4,6 输出:a=3.00,b=4.00,c=6.00 s=6.50 area=5.33,例 输入三角形边长,求面积,35,字符输出,格式:putchar(c)参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上返值:正常,为显示的代码值;出错,为EOF(-1),字符输出函数,36,/*ch3_13.c*/#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c

15、2);,输入:A 输出:A,65 a,97,例 从键盘输入大写字母,用小写字母输出,第三章 程序设计初步,选择结构设计,38,条件运算符与条件表达式,一般形式:表达式1?表达式2:表达式3表达式1 必须是 bool 类型执行顺序:先求解表达式1,若表达式1的值为true,则求解表达式2,表达式2的值为最终结果若表达式1的值为false,则求解表达式3,表达式3的值为最终结果,例 x=ab?a:b 该例是IFELSE语句的一个替代 if(ab)x=a;else x=b;,39,注意:(1)条件运算符优于赋值运算符比关系运算符和算术运算符都低 例 max=(ab)?a:b+1(2)条件运算符的结合

16、性为“自右向左”例ab?a:cd?c:d 即 ab?a:(cd?c:d)(3)条件表达式与一般if的语句的关系 coutb?a:b;()表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。,40,if(表达式)语句例:if(xy)couty)coutx;else couty;if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3 else 语句 n,if 语句三种形式,41,(条件表达式)语句;或(条件表达式)语句;或(条件表达式);空语句作中的语句语句;,42,例(判输入是否合理)#include void main()unsigne

17、d int age;cout age;if(age10)cout The age may be wrong;,43,一般形式if()if()语句 1 else 语句 2else if()语句 3 else 语句 4注意语句 1、2、3、4 可以是复合语句,每层的 if 与 else 配对,或用 来确定层次关系。,44,int x=20;if(x=0)if(x50)cout“x is okn”;else cout“x is not okn”;,If 语句的嵌套二义性因为 if 可以嵌套,所有在嵌套时有时会出 歧义,例如上例中,else 是与第一个 if 配对,还是与第二个 if 配对?这种时候,

18、系统就认为:else 与最近的一个 if 相对应,二义性:(1)if()if()coutendl;/输出能被整除,能被整除elsecoutendl;/输出能被整除,不能被整除(2)if()if()coutendl;/输出能被整除,能被整除 elsecoutendl;/输出不能被整除不管是否被整除,46,例输入两个整数,比较两个数的大小。,47,#includevoid main()int x,y;coutxy;if(x!=y)if(xy)coutyendl;else coutxyendl;else coutx=yendl;,48,运行结果1:Enter x and y:5 8xy,49,#include void main()int x,y,z;cinxyz;int max=x;If(zy)if(zx)max=z;else if(yx)max=y;coutmax;,功能:在三个数中取最大的,50,#includevoid main()int x,y,z;cinxyz;int max=x;If(ymax)max=y;if(zmax)max=z;coutmax;,51,if(条件)语句;else if(条件)语句;else if(条件3)语句3;语句;,如何解决多分之问题?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号