C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx

上传人:知****量 文档编号:76341227 上传时间:2023-03-09 格式:PPTX 页数:360 大小:2.47MB
返回 下载 相关 举报
C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx_第1页
第1页 / 共360页
C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx_第2页
第2页 / 共360页
点击查看更多>>
资源描述

《C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx》由会员分享,可在线阅读,更多相关《C++程序设计案例教程完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).pptx(360页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1.1 面向对象程序设计1.2 C+程序设计1.3 C+程序的开发过程1.4 面向对象程序的组成元素第1章 绪论1.5 C+程序的编译与调试1.6 本章小结2.1 C+数据类型2.2 变量与常量2.3 运算符与表达式2.4 控制结构2.5 数组2.6 函数第2章 C+基础知识2.7 结构体2.8 联合体2.9 指针2.10 面向过程程序设计规范2.11 菜单结构的设计与实现2.12 本章小结返回目录2.1.1C+字符集C+基本数据类型2.1.2C+构造数据类型2.1.3引用2.1.4面向对象程序设计的基本特征2.1.5面向对象的程序设计方法与步骤2.1.7面向对象程序设计与面向过程程序设计的比

2、较2.1.62.1 C+数据类型C+字符集C+字符集字母字母:az;AZ数字数字:0123456789其他符号其他符号:+-*/=,._:;?|!#%&()(空格)C+基本数据类型知识点概述1.字符类型字符类型字符常量:括在单引号中的字符。如:A,特殊的字符常量:转义字符,如:n字符变量:使用char进行声明的标识符。如:charch;字符串常量:括在双引号内的字符序列,如:”hello,world!”2.整数类型整数类型整型常量:十进制、八进制、十六进制的整型常量。整型变量:使用int进行声明的变量3.浮点类型与双精度类型浮点类型与双精度类型浮点常量:实数和科学计数法两种形式浮点变量与双精度

3、变量:分别使用float和double进行声明4.空类型空类型:voidC+构造数据类型什么是构造类型?构造类型又称为组合类型,它是由基本类型按照某种规则组合而成的构造类型又称为组合类型,它是由基本类型按照某种规则组合而成的数组数组:由具有相同数据类型的元素组成的集合结构体结构体:由不同的数据类型构成的一种混合的数据结构联合联合:构成联合体的数据成员共用同一段内存单元枚举类型枚举类型:将变量的值列举指针类型指针类型:存储另一变量的地址类类型类类型:它定义的是一种对象类型,由数据和方法组成知识点概述 引用概念概念:变量的别名,和所引用变量共享内存定义定义:数据类型&引用变量名=变量名;使用使用:

4、引用函数的参数引用还可以做函数的返回值程序举例intmain()inta=1;int&b=a;/定义b是a的引用cout初始化后:n;couta=a&aendl;coutb=b&bendl;b=3;coutb=3后:n;couta=a&aendl;coutb=b&bendl;int&c=b;/定义c是b的引用,别名的别名c=4;coutc=4后:n;couta=a&aendl;coutb=b&bendl;coutc=c&cendl;system(pause);return0;程序举例voidswap(int&x,int&y);intmain()inta=2,b=3;couta=ata:addr

5、ess=&aendl;coutb=btb:address=&bendl;swap(a,b);/调用函数交换a,b的值couta=ata:address=&aendl;coutb=btb:address=&bendl;system(pause);return0;/函数的定义voidswap(int&x,int&y)inttmp;tmp=x;x=y;y=tmp;程序举例intvals10;/定义的全局数组变量interror=-1;intmax=0;int&maxValue(intx,inty);/引用做函数返回值int&put(intn);/返回值是引用类型intmain()res=0;cout

6、引用仅作函数返回值:n;res=maxValue(2,3);coutres=restmax=maxendl;cout引用作函数返回值,返回值作了左值:n;put(0)=10;/以put(0)函数值作为左值,等价vals0=10;put(9)=20;/以put(9)函数值作为左值,等价vals9=20;coutvals0t;coutvals9y?x:y;returnmax;/*功能:处理数组越界函数名称:put参数:n-整数类型返回值:整形变量的引用*/int&put(intn)if(n=0&n=9)returnvalsn;elsecoutsubscripterror;returnerror;返

7、回目录2.2.1标识符与关键字变量的定义与初始化2.2.22.2 变量与常量常量与符号常量2.2.3标识符与关键字标识符标识符:程序或系统定义的符号用来作为变量名、常量名、函数名、类型名、文件名等。由字母、数字、下划线组成,且由字母或下划线开头的字符串,中间不能有空格_sum,sum,stu_name,price等为合法的标识符。cout,52select,alot,-W,sin等为不合法标注符。关键字关键字:也称保留字是C+编译器预定义的、具有固定含义的标识符,不允许另作它用常用关键字intfalseifdefaultenumsizeofpublicconst_castshortvoidel

8、sereturnunionnewprotectedstatic_castunsignedtypedefswitchstructdeleteprivatereinterpret_castlongtypeidcaseclassautovirtualdynamic_castfloatdotemplatestaticusingexplicitdoublewhiletypenameexternnamespacetrycharforregisterthiscatchw_char_tbreakvolatileoperatorthrowboolgotomutablefriendtruecontinuecons

9、tinline变量的定义与初始化变量定义变量定义的语法:变量的类型变量的名称;变量的类型变量的名称;初始化初始化的方法inta=;intb(1);intc;c=1;常量与符号常量常量通过关键字关键字const来定义语法规则语法规则const变量类型变量名称;变量类型变量名称;或const变量类型变量名称变量类型变量名称=初始值;初始值;如:如:constdoublepi=3.14;返回目录2.3.1运算符表达式2.3.2类型转换2.3.32.3 运算符与表达式运算符查看详情1.算术运算符算术运算符:+、-、*、/、%、+、-2.赋值运算符赋值运算符:=、+=、-=、*=、/=、%=3.关系运算

10、符关系运算符:、=、=、!=4.逻辑运算符逻辑运算符:!、&、|5.条件运算符条件运算符:?:6.位运算符位运算符:、|、&7.sizeof运算符运算符(求字节运算符):sizeof8.逗号运算符逗号运算符:,9.其它运算符其它运算符:指针运算符(*、&)、分量运算符(*、-)、函数调用运算符()、强制类型转换运算符(type)返回运算符的优先级与结合性运算符优先级决定了在表达式中各个运算符执行的先后顺序括号会改变优先级运算符的结合方式有两种:左结合和右结合左结合表示运算对象先与其左边的运算符结合右结合表示运算对象优先与其右边的运算符结合表达式表达式是用于计算的式子,它由运算符、运算数和括号组

11、成表达式是用于计算的式子,它由运算符、运算数和括号组成算术表达式算术表达式:由算术运算符和位操作运算符组成的表达式逻辑表达式逻辑表达式:由逻辑运算符组成的表达式。其表达式值的类型为逻辑型关系表达式关系表达式:由关系运算符组成的表达式。其表达式值的类型为逻辑型赋值表达式赋值表达式:由赋值运算符组成的表达式条件表达式条件表达式:由三目运算符组成的表达式逗号表达式逗号表达式:用逗号将若干个表达式连起来组成的表达式类型转换命名空间命名空间1.隐式类型转换隐式类型转换隐式类型转换是由编译器自动完成的类型转换。当编译器遇到不同类型的数据参与同一运算时,会自动将它们转换为相同类型后再进行运算2显式类型转换显

12、式类型转换显式类型转换是由程序员显式指出的类型转换转换形式有两种类型名(表达式)类型名(表达式)(类型名)表达式(类型名)表达式3转换规则转换规则当参与运算的操作数必须是bool型时,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false位运算的操作数必须是整数赋值运算要求左值与右值的类型相同,若不同,系统自动转换为左值的类型返回目录2.4.1选择结构循环结构2.4.22.4 控制结构选择结构多分支结构:多分支结构:if(条件表达式1)语句1;elseif(条件表达式2)语句2;elseif(条件表达式n)语句n;else语句n+1;单分支结构:单分支结构:if(条件

13、表达式)语句1;双分支结构双分支结构:if(条件表达式)语句1;else语句2;switch语句语句switch(判断表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;/default:语句n+1;循环结构三要素:循环变量、循环体和循环终止条件循环结构for循环的一般结构循环的一般结构for(表达式1;表达式2;表达式3)语句;while循环的一般结构循环的一般结构while(表达式)语句;do-while循环的一般结构循环的一般结构do语句;while(表达式);expr循环体假(0)真(非0)whiledo循环体expr假(0)真(非0)while

14、程序举例程序2-7:计算这一天是这一年的第几天intmonthDays=0,30,28,31,30,31,30,31,31,30,31,30,31;intmain()intyear,month,day;coutyearmonthday;intsumDays=day;/总天数for(inti=1;imonth;i+)/忽略闰年sumDays=sumDays+monthDaysi;coutyear-month-dayiscoutyear年的第sumDays天n;system(pause);return0;程序举例程序2-8:输入两个整数m,n,计算其最大公约数int main()int a,b;c

15、out a b;int m=a,n=b;int r=m%n;while(r!=0)m=n;n=r;r=m%n;cout a ,b 的最大公约数是:n endl;system(pause);return 0;程序举例程序2-9:用公式求的近似值,直到最后一项的绝对值小于10-8为止。#include#include#includeusingnamespacestd;intmain()doubles=0,t=1;intsgn=1,k=1;dos=s+t;k=k+2;sgn=sgn*(-1);t=sgn/double(k);while(fabs(t)1e-8);coutsetprecision(15

16、)s*4endl;system(pause);return0;返回目录2.5.1一维数组二维数组2.5.2字符数组和字符串类2.5.32.5 数组一维数组概念:概念:同一类型的多个数据分配一段连续的内存空间定义:定义:数据元素类型数组变量名称数组元素的个数;数据元素类型数组变量名称=初值,初值,.;初始化:初始化:全部初化,inta=1,2,3,4,5,6;部分初始化,inta5=1,2,3,;访问:访问:下标运算符,数组名下标程序举例:数组使用#include#includeusingnamespacestd;intmain()/数组逆置处理intmyArray=1,2,3,4,5;intn

17、=sizeof(myArray)/sizeof(myArray0);/计算数组元素的个数inti,j,tmp;for(i=0,j=n-1;ij;i+,j-)tmp=myArrayi;myArrayi=myArrayj;myArrayj=tmp;for(i=0;in;i+)coutsetw(5)myArrayi;coutendl;system(pause);return0;二维数组概念:数组的元素又是数组,可看作矩阵概念:数组的元素又是数组,可看作矩阵定义:定义:数据元素类型数组变量名称数组元素的行数数据元素的列数;数据元素类型数组变量名称数据元素的列数=初值,初值,.;初始化初始化分行初始化:

18、例inta3=1,4,5;不分行初始化:例inta3=1,2,3,4,5;访问:访问:数组名下标下标程序举例:设计二维数组程序,输出九九乘法表:#include#include#includeusingnamespacestd;#defineCOL10#defineCOLUMN10intmain()intmatCOLCOLUMN=0;inti,j;for(i=1;iCOL;i+)/矩阵元素赋值,乘法表for(j=1;j=i;j+)matij=i*j;for(i=1;iCOL;i+)/输出乘法表for(j=1;j=i;j+)coutsetw(3)j*i=matij;coutendl;/将结果写到

19、文件中ofstreamoutFile(res.txt);/定义输出文件流for(i=1;iCOL;i+)for(j=1;j=i;j+)/将结果写到输出文件流中outFilesetw(3)j*i=matij;outFileendl;outFileendl;outFile.close();/关闭输出文件流fflush(stdin);/清空输入缓冲区getchar();return0;字符数组和字符串类概念概念:数组的每一个元素均为字符类型定义定义:char字符数组名称字符数组最多存放的字符元素个数;char*字符指针名=newcharN;string字符串变量名;程序举例:将数字字符串变为数字#i

20、nclude#include/C+字符串,是类类型usingnamespacestd;intmain()stringnumStr;longintnumber=0;intsingleNum;cout输入一个数字字符串numStr;inti=0;while(numStri!=0)/将单个字符变为数字,48是0的ASC码值singleNum=numStr.at(i)-48;number=number*10+singleNum;i+;coutnumStr=numStrendl;coutnumber=numberendl;fflush(stdin);getchar();return0;返回目录2.6.1

21、函数的定义函数原型的声明2.6.2函数的调用2.6.3内联函数2.6.4函数的重载2.6.5递归函数2.6.7带缺省值的函数2.6.62.6 函数函数的定义概念:概念:实现某一功能的相关语句组织在一起,并给之注明相应的名称,这种形式的组合就称为函数功能:功能:C+程序的基本模块,函数组成程序的基本模块,函数组成C+程序程序至少含有一个main函数main是程序运行的入口分类:分类:是否为系统预定义,分为库函数和用户自定义函数是否有参:有参函数和无参函数函数原型的声明编译器遇到一个函数调用时,需要判断该函数调用是否正确,该机制即函数原型。C+中,函数声明就是函数原型函数原型的声明函数原型是一条程

22、序语句,它必须以必须以“;”分号结束分号结束;由函数返回类型、函数名和参数表构成函数返回值类型函数名();intarea(int,int);intarea(intlength,intwidth);函数原型和函数定义在返回类型、函数名和参数表上必须完全一致函数的调用直接调用直接调用适用于函数的返回值为空,或返回值不需要被保存的情况表达式调用表达式调用将函数调用放到一个表达式中,让其参与运算一般用在赋值表达式中y=sin(x);嵌套调用嵌套调用一个函数调用的结果作另一个函数调用的参数m=max(a,max(b,c);参数传递参数传递传值传引用传地址C+的函数调用过程就是栈空间操作的过程栈空间操作的

23、过程(1)建立被调函数的栈空间;(2)保护调用函数的运行状态和返回地址;(3)传递参数;(4)将控制权转交给被调函数;(5)函数运行完成后,复制返回值到函数数据块的底部;(6)恢复调用函数的运行状态;(7)返回到调用函数。分析程序的执行过程intfuncA(intx,inty);intmain()inta=6,b=12;a=funcA(a,b);intfuncA(intx,inty)intn=5;n=x+y;returnn;main()b12a6 操作系统运行状态及返回地址返回值0运行程序,执行main()funcA()n5y12x6main()运行状态及返回地址返回值main()b12a6操

24、作系统运行状态及返回地址返回值0调用函数funcA(a,b)main函数的临函数的临时空间时空间funcA()n5 18y12x6main()运行状态及返回地址返回值 main()b12a6操作系统运行状态及返回地址返回值0调用函数funcA(a,b),执行n=x+y;funcA()n18y12x6main()运行状态及返回地址返回值 18main()b12a6操作系统运行状态及返回地址返回值0调用函数funcA(a,b),执行returnn;18126main()运行状态及返回地址 18main()b12a6 18操作系统运行状态及返回地址返回值0返回到main()函数中,a=funcA(a

25、,b);内联函数内联扩展(inlineexpansion)简称为内联(inline),内联函数也称为内嵌函数函数的定义或声明前加上关键字inline一个函数定义为内联函数后,在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代码,由此省去函数调用的空间分配、保存现场、参数传递和返回操作等,从而加快整个程序的执行速度内联函数可以在一开始仅定义或声明一次,但必须在函数被调用之前定义或声明函数的重载功能相似而参数类型不同的函数可以使用相同的函数名,这就是函数重载参数类型不同voidsort(int*arr,intn);voidsort(float*arr,intn);参数个数不

26、同intmax(inta,intb);intmax(inta,intb,intc);参数顺序不同voidfind(float*arr,intn,floatx);voidfind(float*arr,floatx,intn);#includeusingnamespacestd;intABS(int);doubleABS(double);floatABS(float);intmain()intx1=-12;doublex2=-12.0;floatx3=-12.0;coutABS(x1)endl;coutABS(x2)endl;coutABS(x3)0?a:-a);doubleABS(doublea

27、)return(a0?a:-a);floatABS(floata)return(a0?a:-a);程序举例:返回一个数的绝对值只要参数个数不同,参数类型不同,参数顺序不同,函数就可以重载。然而,只是返回类型不同则不允许重载。voidfunc(inta);voidfunc(chara);voidfunc(chara,intb);voidfunc(inta,charb);charfunc(inta);C+按下列三个步骤的先后顺序找到匹配的函数并调用之。寻找一个严格匹配严格匹配,如果找到了,就调用那个函数。通过相容类型的隐式转换隐式转换寻求一个匹配。通过用户定义的转换寻求一个匹配用户定义的转换寻求一

28、个匹配,若能查出唯一的一组转换,就用那个函数。#includeusingnamespacestd;voidprint(int);voidprint(double);intmain()print(1);print(1.0);print(a);print(3.14f);输出:int:1double:1int:97double:3.14voidprint(inta)coutint:aendl;voidprint(doublea)coutdouble:aendl;程序举例:编程求圆、矩形、梯形的面积doublearea(doubler)return3.14*r*r;doublearea(doubleh

29、,doublew)returnh*w;doublearea(doublea,doubleb,doubleh)return(a+b)*h/2;#includeusingnamespacestd;doublearea(doubler);doublearea(doubleh,doublew);doublearea(doublea,doubleb,doubleh);intmain()doubler=23.3;doubleh1=12,w=5,a=7,b=8,h2=3;coutarea(r)endl;coutarea(h1,w)endl;coutarea(a,b,h2);带缺省值的函数C+可以给函数声明中

30、的参数使用默认值,这样在函数调用时,对应的实参就可以省略。#includeusingnamespacestd;intfunc(inta=2);intmain()coutfunc(5)endl;coutfunc()endl;intfunc(inta)returna;默认参数规则一般来说,默认参数总是在函数声明时描述。函数参数默认值只能从后往前设置,而实参只能从前往后给出。例:voidfunc(inta=1,intb,intc=3);voidfunc(inta,intb=2,intc=3);func(10,15,20);func();func(12,13);func(2,20);递归函数在函数体中

31、出现调用自身的函数称为递归函数。例:阶乘n!的数学函数描述为其对应的C+函数描述为:unsignedf(unsignedn)if(n=1)return1;returnn*f(n-1);注意:n的取值范围1n12例:Fibonacci数列的数学描述为其等价的C+函数为:unsignedintf(unsignedintn)if(n=0|n=1)returnn;returnf(n-1)+f(n-2);n的取值范围1n46递归函数递归函数在运行中,其调用与被调函数的指令代码是同一个函数副本,只不过各个不同运行中的调用点,作为状态的一部分,在栈中被分别保护起来。因此,是C+的函数机制决定了递归操作的可能

32、性与形式。递归函数例:例:n!的函数,当调用的函数,当调用f(3)时,其运行栈描述如图所示时,其运行栈描述如图所示f(1)n=1f(2)函数的状态及返回地址返回值 1f(2)n=2f(3)函数的状态及返回地址返回值 2*f(1)f(3)n=3调用函数的状态及返回地址返回值 3*f(2)递归条件递归不能无限制地调用下去,因为栈空间是有限的,所以递归函数是有条件地调用自身。例如阶乘函数中的“if(n=1)return1;”当n为1时,函数就不再递归了。递归函数就有递归调用语句,且递归调用应有参数,参数值应该是逐渐逼近停止条件。例如f(n-1)相对f(n)来说,是逐渐逼近了停止条件。递归条件应先测试

33、,后递归调用。无条件递归的逻辑错误,编译器是检查不出来的。返回目录2.7 结构体体概念:概念:结构体则是任意类型元素的一个聚集,把类型不一样的一组数据放到一块连续的内存空间结构体类型的定义:结构体类型的定义:struct结构体类型名称结构体类型名称数据类型数据类型1成员名称;成员名称;数据类型数据类型2成员名称;成员名称;.;结构体变量的定义结构体类型名称结构体变量的名称;结构体成员的访问结构体变量名.结构体成员名程序举例:结构体类型的定义,数组,指针的综合应用#include#includeusingnamespacestd;/Point类型结构体的定义structPointintx,y;/

34、函数原型的声明voidinputPoint(Point*poly,intn);voidoutputPoint(Point*poly,intn);intmain()Pointpolygon5;/定义五边形intn=sizeof(polygon)/sizeof(polygon0);inputPoint(polygon,n);outputPoint(polygon,n);fflush(stdin);getchar();return0;/输入结构体数组元素的值voidinputPoint(Point*poly,intn)cout输入点数组元素的x,y值:endl;for(inti=0;in;i+)co

35、ut第ipolyi.xpolyi.y;/输出Point结构体元素的值voidoutputPoint(Point*poly,intn)cout输出数组元素的值endl;Point*pt=poly;for(;ptpoly+n;pt+)cout(x,y)endl;返回目录2.8 联合体联合体概念:概念:union可以用相同的存储空间存储不同类别的数据类型,从而节省内存空间所有成员相对于基地址的偏移量都为0联合体(union)中的各变量是“互斥”的联合类型的联合类型的定义定义形式形式union联合类型名数据类型1成员名称;数据类型2成员名称;.;程序举例:联合体类型的定义与应用typedefunion

36、chara;intb;doublec;Demo;intmain()charch=H;inti=5;doublec=3.14;coutch占sizeof(ch)个字节n;couti占sizeof(i)个字节n;coutc占sizeof(c)个字节nn;Demod;coutDemo类型变量d占sizeof(d)个字节n;d.a=ch;coutd.a=d.aendl;d.b=i;coutd.b=d.bendl;d.c=c;coutd.c=d.cendl;couta=d.ab=d.bc=d.cendl;system(pause);return0;返回目录2.9.1指针的定义与使用指针变量的基本操作2.

37、9.2动态内存分配2.9.3指针与函数2.9.4指针数组2.9.52.9 指针指针的定义与使用程序运行中的每一个变量都分配有一块内存空间,对应的内存的起始编号称为这个变量的地址地址直接访问直接访问:程序通过变量名来访问这块空间中的数据的访问方式指针变量:保存另一个变量地址的变量间接访问间接访问:通过指针变量来访问它所存的变量的方式多级指针多级指针:若指针变量所指向的变量的类型是指针类型指针变量的定义格式指针变量的定义格式一级指针一级指针定义:数据类型*变量名;二级指针二级指针定义:数据类型*变量名;三级指针三级指针定义:数据类型*变量名;程序举例:一级指针的简单使用intmain()intnu

38、m1=3;/定义整型变量的指针,并初始化指针变量的地址为num1的地址int*pointer=&num1;coutnum1=num1tnum1:address=&num1endl;coutpinter=pointertpoint:address=&pointercout*pointer=*pointerendl;system(“pause”);return0;指针变量的基本操作指针变量初始化初始化与赋值赋值的语法格式数据类型*指针变量=初始地址表达式;指针变量赋值指针变量赋值指针变量名=地址表达式;其他运算其他运算取值运算取值运算:*算术运算算术运算:+n,-n相减运算相减运算:p1-p2比较

39、运算比较运算:p1p2程序举例:指针的各种运算,通过数组中地址的运算呈现#include#includeusingnamespacestd;voidoutput(int*arr,intn);intmain()intintArray=1,2,3,4,5;intn=sizeof(intArray)/sizeof(intArray0);output(intArray,n);/数组名作函数的参数int*pPointer=intArray;inti=0;while(pPointer=arr;p-)/指针-运算coutsetw(3)*p;coutendl;动态内存分配运行的程序的内存空间内存分成5个区全局

40、数据区全局数据区(datatarea),代码区代码区(codearea),栈栈区区(stackarea)、堆区堆区(heaparea)、字符串常量字符串常量区区程序运行过程中才能确定数据大小时,需要根据问题的规模动态分配动态分配动态地分配内存new运算符运算符指针变量名=new类型名类型名(初值列表初值列表);指针变量名=new类型名类型名下标表达式下标表达式;指针变量=new类型名类型名下标表达式下标表达式1下标表达式下标表达式2.;内存释放deletedelete指针变量名;指针变量名;delete指针变量名;指针变量名;程序举例:动态申请一维数组int*NewArray(intn);/动

41、态申请一维数组的内存空间voidoutput(int*arr,intn);/显示数组元素的值intmain()intn;cout输入动态数组的长度:n;int*array=NewArray(n);for(inti=0;in;i+)arrayi=i;output(array,n);deletearray;system(pause);return0;/动态申请一维数组的内存空间int*NewArray(intn)int*p;p=newintn;returnp;/显示数组元素的值voidoutput(int*arr,intn)int*pointerArr=arr;for(;pointerArrarr

42、+n;pointerArr+)cout*pointerArr;coutendl;指针与函数指针作函数的参数指针作函数的参数指针作函数的参数是一种地址传递方式指针可以作为函数的形参,也可以作为函数的实参实参和形参指针变量指向同一内存地址,实现参数双向传递指针函数指针函数:指针类型函数函数声明其返回值为指针类型时,这个函数就称为指针型函数主要目的就是要在函数调用结束时把大量的数据从被调用函数返回到主调函数指针函数定义:数据类型*函数名(参数表)函数体函数指针函数指针:函数指针就是用来存储函数的入口地址的指针变量函数的指针定义格式:返回类型(*函数指针名)(形式参数表);函数指针赋值:函数指针名=函

43、数名;调用函数指针指向的函数:函数指针名(实参表);程序举例:使用函数指针实现各类函数的调用#include#includeusingnamespacestd;#defineFUN_MAX0#defineFUN_MIN1#defineSIZEsizeof(map)/sizeof(fun_map)stringmenu=计算两数的最大值,输入0,计算两数的最小值,输入1;intmax(intx,inty);intmin(intx,inty);voiddispMenu(stringmenu,intn);structfun_mapintmsg;int(*pfn)(int,int);/定义指向函数的指针

44、作结构体的成员;intmain()inta,b,m;intsel;/定义fun_map类型的数组并初始化fun_mapmap=FUN_MAX,&max,FUN_MIN,&min;/map0.msg=0;map0.pfn=&max;/map1.msg=1;map1.pfn=&min;intlenMenu=sizeof(menu)/sizeof(menu0);for(inti=0;iSIZE;i+)cout输入a,b的值:ab;dispMenu(menu,lenMenu);cinsel;if(sel=mapi.msg)m=mapi.pfn(a,b);coutm=my?x:y);intmin(int

45、x,inty)return(xy?x:y);voiddispMenu(stringmenu,intn)for(inti=0;in;i+)coutmenuiendl;coutendl;指针数组指针数组指针数组:数组元素为指针的数组一维指针数组的定义形式定义形式数据类型数据类型*数组名数组名数组元素的个数数组元素的个数;使用方式使用方式指针数组作为函数参数指针数组用于指向若干字符串程序举例:带参的main函数#includestdafx.h#includeusingnamespacestd;intmain(intargc,_TCHAR*argv)for(inti=0;iargc;i+)coutar

46、gviendl;system(pause);return0;返回目录2.10面向过程程序设计规范写清楚的注释写清楚的注释使用有意义的名字使用有意义的名字使程序结构清晰使程序结构清晰使用缩进来表示程序中的控制范围使用缩进来表示程序中的控制范围用户交互时能给出有效的提示信息用户交互时能给出有效的提示信息不要直接使用不要直接使用ASC码值。这样会影响程序的可移植性码值。这样会影响程序的可移植性注意整数的溢出注意整数的溢出尽量少的使用难理解的表示方式尽量少的使用难理解的表示方式在写关系表达式时,不要连用关系运算符在写关系表达式时,不要连用关系运算符使用循环结构时,不管循环体几个语句,最好都用花括号使用

47、循环结构时,不管循环体几个语句,最好都用花括号括起来括起来每个函数只做一件事情,不要将多个功能组合在一个函数每个函数只做一件事情,不要将多个功能组合在一个函数中中返回目录2.11菜单结构的设计与实现综合应用数组、循环、选择结构综合应用数组、循环、选择结构菜单结构的设计与实现菜单结构的设计与实现数组元素的输入输出、排序、最大值、最小值、均值的计算给用户提供一个交互的界面根据用户的选择执行数组的相应操作程序中的函数有程序中的函数有:voiddispMenu(stringmenu,intn);/显示菜单voidinputArray(intarr,intn);/输入数组元素的值voidoutputAr

48、ray(intarr,intn);/输出数组元素的值intmaxValue(intarr,intn);/计算数组元素的最大值intminValue(intarr,intn);/计算数组元素的最小值intaverage(intarr,intn);/计算数组元素的平均值voidsortSel(intarr,intn);/对数组元素做选择法排序2.12 本章小结(1)基本数据类型与各类构造类型。)基本数据类型与各类构造类型。(2)讲解了主要的表达式的使用方式和使用规则。)讲解了主要的表达式的使用方式和使用规则。(3)程序的控制结构。三种循环结构在)程序的控制结构。三种循环结构在C+中的使用。中的使用

49、。(4)一维数组,二组数组的定义、初始化及访问。)一维数组,二组数组的定义、初始化及访问。(5)函数的定义,声明,调用方式,调用机制,递归函数等)函数的定义,声明,调用方式,调用机制,递归函数等C中的知中的知识及识及C+中的内联函数,重载函数,带缺省参数值的函数。中的内联函数,重载函数,带缺省参数值的函数。(6)结构体及联合体类型的定义和使用。)结构体及联合体类型的定义和使用。(7)指针的定义、初始化、赋值、运算;动态内存分配与释放,指针)指针的定义、初始化、赋值、运算;动态内存分配与释放,指针函数,函数指针,指针数组。函数,函数指针,指针数组。3.1 变量的类型3.2 标识符的作用域与可见性

50、3.3 编译预处理命令3.4 多文件编程第3章 C+变量的类型及程序结构3.5 名字空间3.6 数学函数曲线绘制的设计与实现3.7 本章小结返回目录3.1.1全局变量与局部变量变量的存储类型3.1.2变量在内存中的存储3.1.33.1 变量的类型全局变量与局部变量1.全局变量(全局变量(globalvariable)定义在函数体外部的变量能被所有函数访问使用便于数据的共享同时也是很危险,易于被修改2.局部变量(局部变量(localvariable)定义在函数或复合语句中的变量只能在函数或复合语句中访问使用变量的存储类型auto:变量缺省的类别,局部的,动态存储区的栈区分配内存空间registe

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁