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页
点击查看更多>>
资源描述
,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,是否为素数。(,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,设,p,为被乘数,,i,为乘数,S1,:使,p=1.,S2,:使,i=2.,S3,:使,p,i,乘积赋给,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:,判断,i2,),8,棋盘上的麦粒,在国际象棋棋盘上第,1,格放,1,粒麦粒,第,2,格放,2,粒麦粒,第,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,顺序结构,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,:用,括起来的一组语句,一般形式:, ,数据说明部分;,执行语句部分;,说明:,“,”,后不加分号,语法上和单一语句相同,复合语句可嵌套,复合语句,15,算法的基本控制结构,问题的提出,: (1) -1 (x0),(2),统计任意一个人群的平均身高,算法,算法的基本控制结构:,顺序结构,分支结构,循环结构,程序流程图,16,结构化程序设计,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(,goto,),结构化程序:由三种基本结构反复嵌套构成的程序叫,优点:结构清晰,易读,提高程序设计质量和效率,三种基本结构,顺序结构,A,B,A,B,流程图,N-S,图,程序的三种基本结构,17,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,这是,C,中新加的非常简单易用的输入、输出方式,,C+,中没有专门的输入输出语句,是用,I/O,流类来实现。,在程序的开头增加一行:,#include,1),用插入操作符“,”,向标准输出流,cout,中插入字符。,向标准输出设备(显示器)输出,例:,int x;,cout“x=“”,从标准输入流,cin,中抽取字符,从标准输入设备(键盘)输入,例:,int x;,cinx;,int a,b;,cinab;,),使用控制符,有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格式。 在程序的开头增加一行:,#include,22,例:,#include,#include,void main(),coutsetw(5)setprecision(3)3.1415endl;,3.14,23,C,语言无,I/O,语句,,I/O,操作由函数实现,#include ,C,语言中的输入输出,24,printf,和,scanf,printf,函数,(1)printf,函数的一般格式为:,printf(,格式控制字符串,输出项,1,,输出项,2,,,),括号中的格式控制字符串和输出项都是函数参数。,printf(),函数的功能是将后面的参数按给定的格式输出。,格式控制字符串中有格式说明,也有普通字符。格式说明由”,%”,和格式字符组成,如,%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;,long c = 123456;,printf(%5d, %5dn%ldn, a, b, c);,printf(%3ldn%7ldn%dn, c, c, c);,输出结果为:,28, 38,123456,123456,123456,123456,%5d,表示输出宽度为,5,,,%ld,表示输出为长整型,如果整数的位数多于指定宽度,则按实际位数输出,26,(3)%o,和,%x,格式符,用来输出,8,进制、,16,进制整数。,8,进制和,16,进制都是无符号整数,输出时不带符号。如:,#include stdio.h,void main(),int a = 1200;,printf(%d, %o, %x, %X, %6xn, a, a, a, a, a);,输出结果为:,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, a,A, 65, 65,28,(6)%s,格式符,用来输出字符串。可以指定格式宽度,如果字符串长小于指定的宽度时,可以选择左对齐或右对齐。另外,还可以选择输出字符中的前,n,个字符。例如:,printf(%s, Hellon);,printf(Hellon);,printf(%3s, %-5.3s, %5.2sn, Hello, Hello, Hello);,输出结果为:,Hello,Hello,Hello, Hel , He,如果输出的只有一个字符串,可以省略格式参数,因为格式参数本身可以是原样输出的普通字符串。,“,%-5.3s”,中的负号表示左对齐,如果没有负号,则默认为右对齐。,5,表示格式宽度,,3,表示截取字符串中,3,个字符。,29,(7)%f,格式符,用来以小数方式输出。可指定格式宽度,也可以指定小数位数,还可以规定左对齐或右对齐。如:,float x = 123.456;,double y = 321.654321;,printf(%f, %-7.2f, %10.4fn, x, x, x);,printf(%lf, %-7.2lf, %10.4lfn, y, y, y);,输出结果为:,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.4en, x, x, x);,printf(%e, %-7.2e, %10.4en, 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,函数中的“格式控制”字符串内使用“转义字符”。,“格式控制”字符串中,在,%,后的,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,”, /,输入,3,4,33,(3),注意事项,scanf,函数中的“格式控制”后面应当是变量地址,而不是变量名。,如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。,在使用,%c,格式输入字符时,空格字符和“转义字符”都作为有效字符输入,在输入数据时,遇以下情况时该数据认为结束,遇空格,或按“回车”,或”,Tab”,键,按指定的宽度结束,如,%3d,,只取,3,列,遇非法输入。,34,/*ch3_12.c*/,#include ,#include ,main(), float a,b,c,s,area;,scanf(%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.2fn,a,b,c,s);,printf(area=%7.2fn,area);,输入:,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.h,main(), char c1,c2;,c1=getchar();,printf(%c,%dn,c1,c1);,c2=c1+32;,printf(%c,%dn,c2,c2);,输入:,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)?a:b+1,(2),条件运算符的结合性为“自右向左”,例,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, (条件表达式),语句;,或(条件表达式), 语句;,或(条件表达式);空语句作中的语句,语句,;,0,表达式,语句,1,42,例(判输入是否合理),#include ,void main( ), unsigned int age;,cout age;,if (age10),cout =0),if(x50),cout“x is okn”;,else,cout“x is not okn”;,If,语句的嵌套二义性,因为,if,可以,嵌套,,所有在嵌套时有时会出 歧义,例如上例中,,else,是与第一个,if,配对,,还是与第二个,if,配对?这种时候,系统就认为,:else,与最近的一个,if,相对应,二义性,:,(1) if,(),if,(),cout,endl,;,/,输出能被整除,能被整除,else,cout,endl,;,/,输出能被整除,不能被整除,(2) if,(),if,(),cout,endl,;,/,输出能被整除,能被整除,else,cout,endl;/,输出不能被整除不管是否被整除,46,例,输入两个整数,比较两个数的大小。,47,#include,void main( ),int x,y;,coutxy;,if (x!=y),if (xy),coutyendl;,else,coutxyendl;,else,coutx=yendl;,48,运行结果,1,:,Enter x and y:5 8,xy,49,#include,void main( ), int x,y,z;,cinxyz;,int max=x;,If (zy), if(zx),max=z;,else, if(yx),max=y;,couty,zx,y,max=z,max=y,y,n,n,yx,max=x,coutxyz;,int max=x;,If (ymax),max=y;,if(zmax),max=z;,coutmax;,51,if,(条件),语句,;,else if,(条件),语句,;,else if,(条件,3,),语句,3;,语句,;,表达式,1,F,T,表达式,3,F,T,表达式,2,F,T,表达式,4,F,T,语句,4,语句,5,语句,3,语句,2,语句,1,如何解决多分之问题,?,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


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

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


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