C++讲解4(全10讲)

上传人:ning****hua 文档编号:243750164 上传时间:2024-09-30 格式:PPT 页数:51 大小:561KB
收藏 版权申诉 举报 下载
C++讲解4(全10讲)_第1页
第1页 / 共51页
C++讲解4(全10讲)_第2页
第2页 / 共51页
C++讲解4(全10讲)_第3页
第3页 / 共51页
资源描述:

《C++讲解4(全10讲)》由会员分享,可在线阅读,更多相关《C++讲解4(全10讲)(51页珍藏版)》请在装配图网上搜索。

1、,,,Click to edit Master title style,,Click to edit Master text styles,,Second level,,Third level,,Fourth level,,Fifth level,,,,*,1,一、基本概念,数据结构,+,算法,=,程序,,,1,、算法:,是对特定问题求解步骤的一种描述,,,2,、数据结构:数据的组织形式及其相互关系,,2,二、算法举例,1,、,求,1*2*3*4*5,的值。,,,2,、,判断一个数,n,是否为素数。(,n>2,),3,四、算法的表示,1,、,自然语言,,2,、,流程图,,3,、,伪代码,,4,

2、、,计算机语言,,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,设,p,为被乘数,,i,为乘数,,S1,:使,p=1.,,S2,:使,i=2.,,S3,:使,p,,i,,乘积赋给,p.,,S4:,使,i,的值加,1.,,S5:

3、,若,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:,判断,i2,),8,棋盘上的麦粒,,在国际象棋棋盘上第,1,格放,1,粒麦粒,第,2,格放,2,

4、粒麦粒,第,3,格放,4,粒麦粒,第,4,格放,8,粒麦粒,如此直到放满棋盘的,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,流程图,,A,B

5、,顺序结构,,P,成立,不成立,A,B,选择结构,,,当,P,成立,A,循环结构,12,打印,x,的绝对值(伪代码),If x is positive then,,Print x,,Else,,Print -x,,13,打印,x,的绝对值(,C,源程序段),if ( x > 0 ),,printf( "|x|=%d ", x );,,else,,printf( "|x|=%d ", -x );,,14,:用,{…},括起来的一组语句,,一般形式:,{ [,数据说明部分;,],,,执行语句部分;,,,},,说明:,,“,}”,后不加分号,,语法上和单一语句相同,,复合语句可嵌套,复合语句

6、,,,,15,算法的基本控制结构,问题的提出,: (1) -1 (x<0),,,y=0 (x=0),,1 (x>0),,(2),统计任意一个人群的平均身高,,算法,,算法的基本控制结构:,,,顺序结构,,分支结构,,循环结构,,程序流程图,,16,结构化程序设计,,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(,goto,),,结构化程序:由三种基本结构反复嵌套构成的程序叫,~,,优点:结构清晰,易读,提高程序设计质量和效率,,三种基本结构,,顺序结构,A,B,A,B,流程图,N-S,图,程序的三种基本结构,,,,1

7、7,P,A,B,真,假,,P,B,A,真,假,k,A1,A2,Ai,An,,k=k2,k=k1,k=kn,k=ki,...,...,二分支选择结构,多分支选择结构,选择结构,,,,18,,当型循环结构,直到型循环结构,P,A,假,真,,当,P,为真,A,A,P,真,假,,A,直到,P,为真,注:,A,B,A1….An,可以是一个简单语句,也可以是一个基本结构,循环结构,19,赋值语句,格式:,,赋值表达式;,,赋值语句与赋值表达式的区别:,,赋值表达式可以包含在其它表达式中, 而赋值语句不可。,,例:,if ((a=b)>0) t=a;,,不可写为:,if ((a=b;)>0) t=a;,20

8、,这是,C,++中新加的非常简单易用的输入、输出方式,,,C++,中没有专门的输入输出语句,是用,I/O,流类来实现。,,在程序的开头增加一行:,,#include,,1),用插入操作符“,<<”,向标准输出流,cout,中插入字符。,,向标准输出设备(显示器)输出,,例:,int x;,,cout<<“x=“<>”,从标准输入流,cin,中抽取字符,,从标准输入设备(键盘)输入,,例:,int x;,,cin>>x;,,int a,b;,,cin>>a>>b;,3,),使用控制符,,有时缺省输出格式不能满足要求,这时可以用控制符控制输

9、出的格式。 在程序的开头增加一行:,,#include,22,例:,#include,,#include,,void main(),,{,,,cout<

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

11、,,long c = 123456;,,printf("%5d, %5d\n%ld\n", a, b, c);,,printf("%3ld\n%7ld\n%d\n", c, c, c);,,},,输出结果为:,,,28, 38,,123456,,123456,,123456,,123456,%5d,表示输出宽度为,5,,,%ld,表示输出为长整型,,如果整数的位数多于指定宽度,则按实际位数输出,26,(3)%o,和,%x,格式符,,用来输出,8,进制、,16,进制整数。,8,进制和,16,进制都是无符号整数,输出时不带符号。如:,,#include "stdio.h",,void ma

12、in(),,{,,int a = 1200;,,printf("%d, %o, %x, %X, %6x\n", a, a, a, a, a);,,},,输出结果为:,,,1200, 2260, 4b0, 4B0, 4b0,27,(4)%u,格式符,,用来输出无符号,10,进制整数。,,,(5)%c,格式符,,用来输出一个字符。如果一个整数,其值在,0~255,之间,也可以字符方式输出。它们都可以指定格式宽度。例如:,,,char ch = 'a';,,int a = 65;,,printf("%c, %d, %3c\n", ch, ch, ch);,,printf("%c, %d

13、, %3d\n", a , a, a);,,,输出结果为:,,,a, 97, a,,A, 65, 65,28,(6)%s,格式符,,,用来输出字符串。可以指定格式宽度,如果字符串长小于指定的宽度时,可以选择左对齐或右对齐。另外,还可以选择输出字符中的前,n,个字符。例如:,,,printf("%s", "Hello\n");,,printf("Hello\n");,,printf("%3s, %-5.3s, %5.2s\n", "Hello", "Hello", "Hello");,,,,输出结果为:,,,Hello,,Hello,,Hello, Hel , He,,,,

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

15、,,,,,输出结果为:,,,123.456001, 123.46 , 123.4560,,321.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.4e\n", x

16、, x, x);,,printf("%e, %-7.2e, %10.4e\n", y, y, y);,,,,输出结果为:,,,1.234560e+002, 1.23e+002, 1.2346e+002,,3.216543e+002, 3.22e+002, 3.2165e+002,,,%E,格式同,%e,,只是将输出的小写,e,改为大写,E,。,,,,%g,根据数值的大小,自动选取,f,格式或,e,格式。,31,(9),注意事项,,,除,X, E, G,格式外,其他格式必须用小写字母,例如,%d,不能写成,%D,,可以在,printf,函数中的“格式控制”字符串内使用“转义字符”。,,“格式

17、控制”字符串中,在,%,后的,d,、,o,、,x,、,u,、,c,、,s,、,f,、,e,、,g,做为格式符,,,否则做为普通字符,如:,,,printf(“c=%c, f=%f, s=%s”, c, f, s);,,,如果想输出字符,%,,则应该在“格式控制”字符串中连续用两个,%,表示,,,如:,,,printf(“%f%%”, 1.0/3);,,,32,int i, j;,,scanf(,“,%3d%3d,”,, //,输入,123456,,,scanf(,“,%2d_%*3d_%2d,”,, //,输入,12_345_67,,,scanf(,“,%d,%d,”,, //,输入,

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

19、("%f,%f,%f",,,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.2f, s=%7.2f\n",a,b,c,s);,,printf("area=%7.2f\n",area);,,},,输入:,3,4,6,,,输出:,a= 3.00, b= 4.00, c= 6.00 s= 6.50,,area= 5.33,文件包含预处理命令,变量定义,输入数据,输出数据,例 输入三角形边长,求面积,35,字符输出,,格式,: putc

20、har( c ),,参数,: c,为字符常量、变量或表达式,,功能:把字符,c,输出到显示器上,,返值:正常,为显示的代码值;出错,为,EOF(-1),字符输出函数,36,,/*ch3_13.c*/,,#include "stdio.h",,main(),,{ char c1,c2;,,c1=getchar();,,printf("%c,%d\n",c1,c1);,,c2=c1+32;,,printf("%c,%d\n",c2,c2);,,},,输入:,A,,,输出:,A,65,,a,97,例 从键盘输入大写字母,用小写字母输出,第三章 程序设计初步,选择结构设计,38,条件运算

21、符与条件表达式,一般形式:,,表达式,1,?表达式,2,:表达式,3,,表达式,1,必须是,bool,类型,,执行顺序:,,先求解,表达式,1,,,,若表达式,1,的值为,true,,则求解,表达式,2,,表达式,2,的值为最终结果,,若表达式,1,的值为,false,,则求解,表达式,3,,,表达式,3,的值为最终结果,例,x=ab)?a:b+1,,(2),条件运算符的结合性为“自右向左

22、”,,例,a>b?a:c>d?c:d,即,a>b?a:(c>d?c:d),,(3),条件表达式与一般,if,的语句的关系,,,coutb?a:b;,,,(4)表达式,2,、,3,的类型可以不同,条件表达式的最终类型为,2,和,3,中较高的类型。,,40,if (,表达式,),语句,,例:,if (x>y) cout<y) cout<

23、语句,3 … else,语句,n,if,语句,——,三种形式,41,1.  IF(条件表达式),,语句;,,或  IF(条件表达式),,{ 语句;,,},,或  IF(条件表达式);       空语句作IF中的语句,,语句,;,,0,表达式,语句,1,42,例 (判输入是否合理),,,#include ,,void main( ),,{ unsigned int age;,,cout << "What is the student's age...";,,cin >> age;,,if (age<10),,cout << "The age may be wro

24、ng";,,},43,一般形式,,if ( ),,if ( ),语句,1,,else,语句,2,,else,,if ( ),语句,3,,else,语句,4,,注意,,语句,1,、,2,、,3,、,4,可以是复合语句,每层的,if,与,else,配对,或用,{ },来确定层次关系。,if,语句,,——,嵌套,44,int x=20;,,if(x>=0),,if(x<50),,cout<<“x is ok\n”;,,else,,cout<<“x is not ok\n”;,,If,语句的嵌套二义性,,因为,if,可以,嵌套,,所有在嵌套时有时会出 歧义,例如上例中,,else,是

25、与第一个,if,配对,,,还是与第二个,if,配对?这种时候,系统就认为,:else,与最近的一个,if,相对应,,,,二义性,:,,,(1) if,(I%3==0),,,if,(I%7==0),,,cout,<,<,I<,

26、整除,46,例,,输入两个整数,比较两个数的大小。,47,#include,,void main( ),,{,,int x,y;,,cout<<"Enter x and y:";,,cin>>x>>y;,,if (x!=y),,if (x>y),,couty"<y,49

27、,#include,,,void main( ),,{ int x,y,z;,,cin>>x>>y>>z;,,int max=x;,,If (z>y),,{ if(z>x),,max=z;},,else,,{ if(y>x),,max=y;},,cout<y,z>x,y,max=z,max=y,y,n,n,,,y>x,max=x,cout<>x>>y>>z;,,int max=x;,,If (y>max),,max=y;,,if(z>max),,max=z;,,cout<

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档

相关搜索

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!