C++PPT总结
C++PPT总结
1、世界上第一种计算机高级语言诞生于1954年,它是FORTRAN语言。
2、C++是由AT&TBell(贝尔)实验室的BjarneStroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。3、C++与C的区别和联系:
1)C++全面兼容C,包括它的语法和函数库.
2)C++对C原有的一些不完善的地方做了补充性的修改和修正.
3)C语言是一种面向过程的语言,C++是C的基础上引入了面向对象的机制.4)C++针对当前程序设计邻域的泛型编程,引入了模板机制.4、C++与C的特点和优点:
1)是一种高级程序设计语言,语言简洁易读易懂.
2)C是一种底层语言,即可设计系统软件,也可设计应用软件.3)它具有一些低级语言的特征,所以效率很高.
4)它同时也是计算机领域中的一种文化,可以这样说C语言是计算机语言中的普通话.5)历史比较长,成熟稳定,相对应的编程资源非常丰富.
6)因为现代主流的操作系统本身就是用C实现的,所以移植性好.5、C++简单程序的含义和结构
6、include:称为文件包含命令,其意义是把引号“”或尖括号<>内指定的文件包含到本程序来,成为本程序的一部分。““和<>的区别在于,系统在寻打包含的文件时的路径不同,使用“”时会从当前目录开始寻找,找不到再到系统目录找,使用时,则只在系统目录中寻找.7、自增1,自减1运算符均为单目运算,都具有右结合性
8、算法的基本控制结构有三种:顺序结构、选择结构、循环结构.9、取地址运算符&;取内容运算符*10、指针赋值的两种方式:inta;inta;int*p;int*p=&a;p=&a;第1页(共2页)
11、用字符数组和字符指针变量都可实现字符串的存储和运算。但两者是有区别的:字符指针变量可以赋为不同的地址做为值,而字符数组不可以.
12、函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种指针的表示符号。指针就是用来存储地址的变量,我们可以通过指针找到地址,再通过地址找到该地址存储的值。
13、通过指针程序员可以直接对内存进行操作,这样的优点是使程序紧凑简洁,高效;不过由于它的概念比较复杂,使用起来比较灵活,因此初学者常常容易犯错。14、地址就是内存中的一个片段,使用&符号来获取某一个变量的地址。
charstr[]="123456";char*p=str;cout
扩展阅读:C++试题总结
C++PPT试题
1、以下叙述正确的是(D)
A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符2、下列计算机语言中,CPU能直接识别的是(D)
A)A)自然语言B)高级语言C)汇编语言D)机器语言3、以下叙述中正确的是(A)
A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符C)构成C程序的基本单位是函数,所有函数名都可以由用户命名D)分号是C语句之间的分隔符,不是语句的一部分4、以下不能定义为用户标识符的是(D)
A)scanfB)VoidC)_3com_D)int
5、C++语言相对于C语言所做的最大变化是。(C)
A,效率更高B,所带的库函数C,增加了面向对象的特征D,语言表达更直观6、在计算机系统中,一个字节的二进制位数为(B)
A)16B)8C)4D)由CPU的型号决定7、在C语言中,合法的长整型常数是(A)
A)OLB)4962710C)324562&D)216D8、以下选项中合法的字符常量是(B)
A)"B"B)"\\x10"C)68D)D9、以下选项中,非法的字符常量是(C)
A)"\\t"B)"\\17"C)"n"D)"\\xaa10、以下选项中不属于C语言的类型的是(D)
A)signedshortintB)unsignedlongintC)unsignedintD)longshort
11、一个long类型的变量,在内存中占用几个字节。(C)A)1字节B)2字节C)4字节D)8字节
12、假定x和y为double型,则表达式x=2,y=x+3/2的值是(D)
A)3.500000B)3C)2.000000D)3.00000013、2、以下合法的赋值语句是(AD)
A)x=y=100B)d--;C)x+y;D)c=int(a+b);14、设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为(C)
A)0B)1C)2D)3
15、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是(D)
A)x||yB)x|yC)x&yD)x^y16、十进制数127转换成二进制数是(B)
A)11111111B)01111111C)10000000D)1111111017、若有定义:inta=8,b=5,C;,执行语句C=a/b+0.4;后,C的值为(B)
A)1.4B)1C)2.0D)2
第1页(共17页)
18、若变量a是int类型,并执行了语句:a="A"+1.6;,则正确的叙述是(D)
A)a的值是字符CB)a的值是浮点型
C)不允许字符型和浮点型相加D)a的值是字符"A"的ASCII值加上1。19、结构化程序设计所规定的三种基本控制结构是(C)
A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数20、有定义语句:inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是(C)A)if(c25、将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编写一程序,用赋初值的方法使c1,c2,c3,c4,c55个变量的值分别为‘C’,‘h’,‘i’,‘n’,‘a’,经过运算,使c1,c2,c3,c4,c5分别为‘G’,‘l’,‘m’,‘r’,‘e’,并输出。#includeusingnamespacestd;intmain()
{charc1="C",c2="h",c3="i",c4="n",c5="a";c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;
cout27、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)A)地址传递B)单向值传递
C)由实参传给形参,再由形参传回实参D)传递方式由用户指定28、以下函数值的类型是(A)
fun(floatx){floaty;y=3*x-4;returny;}A)intB)不确定C)voidD)float
29、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D)
A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参30、下面的特点中不属于引用机制的是(A)A)效率更高B)节省内存占用C)可以改变参数的值D)代码书写更简洁31、下面对递归机制描述正确的是(D)
A)在某个分支中一定有对自身的调用B)可以有,也可以没有反回值C)可以有参数,也可以没有参数D)在函数内部一定有分支结构32、若定义:inta=511,*b=&a;,则printf(“%d\\n”,*b);的输出结果为(D)A)无确定值B)a的地址C)512D)51133、若有定义:intaa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C)A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+134、若有定义:intaa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C)A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1
35、若有以下定义和语句(C)ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+336、在说明语句:int*f();中,标识符f代表的是(C)
A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名37、以下选项中,能定义s为合法的结构体变量的是(B)38、A)typedefstructabcB)struct{doublea;{doublea;charb[10];charb[10];}s;}s;C)structABCD)typedefABC{doublea;{doublea;charb[10];charb[10];}}ABCs;ABCs;39、structst
{intx;int*y;}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
第4页(共17页)
main()#include{p=aa;#includeprintf("%d\\n",++(p->x));usingnamespacestd;}以上程序的输出是(C)constintn=5;A)10B)11C)51D)60structstudent40、编写一个函数print,打印一个学生的成绩数组,{charnum[6];该数组中有五个学生的数据,每个学生的数据包括charname[8];num(学号),name(姓名),score[3](3门课的成intscore[4];#include绩)。用主函数输入这些数据,}stu[n];usingnamespacestd;classBox{public:voidget_value();voidvolume();voiddisplay();public:floatlengh;floatwidth;floatheight;floatvol;};voidBox::get_value(){coutlengh;cin>>width;cin>>height;}voidBox::volume(){vol=lengh*width*height;}voidBox::display(){cout41、变量a所占内存字节数是(A)
A)4B)5C)6D)8unionU
{charst[4];inti;charl;}a;
42、以下对枚举类型名的定义中正确的是(B)
A)enuma={one,two,three};B)enuma{one=9,two=11,three};C)enuma={“one”,“two”,“three”};D)enuma{“one”,“two”,“three”};#include"iostream"43、类的示例usingnamespacestd;"iostream"#includeclassSaleProductnamespacestd;using{public:classStudentintnumber;{intcount;:publicfloatprice;number;intfloatMoreDis;score;intSaleProduct(intn,intc,floatp){number=n;Student(intn,ints)count=c;{price=p;number=n;MoreDis=1;score=s;if(c>=10)}{};MoreDis=9.8;voidmain()}{Student}stu[5]={Student(001,20),Student(0002,30),Stu};dent(0003,50),Student(0004,70),Student(0005,voidgetSum(SaleProduct*p)90)};{Student*p=stu;floatdiscount=0.8;coutC++试题
一、选择填空题(共20小题,每小题2分,共40分)。1.关于C++与C语言关系的描述中,(D)是错误的。a.C语言是C++语言的一个子集b.C语言与C++语言是兼容的
c.C++语言对C语言进行了一些改进d.C++语言和C语言都是面向对象的2.按照标识符的要求,(A)符号不能组成标识符。a.连接符b.下划线c.大小写字母d.数字字符
3.为了避免嵌套的if-else语句的二义性,C语言规定else总是与(C)组成配对关系。a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if4.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(C)。a.1b.0c.6d.2
5.设"char**s;",以下正确的表达式是(B)。
a.s="computer";b.*s="computer";c.**s="computer";d.*s="c";6.对于"int*pa[5];"的描述中,(D)是正确的。
a.pa是一个指向数组的指针,所指向的数组是5个int型元素
b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量c.pa[5]表示某个元素的第5个元素的值
d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7.已知:intm=10;在下列表示引用的方法中,(A)是正确的。a.int&x=m;b.int&y=10;c.int&z;d.float&t=&m;8.下列for循环的次数为(B)。for(i=0,x=0;!x&&ia.structstudent{intno;
charname[10];floatscore;};
b.structstud[20]{intno;
charname[10];floatscore;};
c.structstudent{intno;
charname[10];floatscore;}stud[20];d.struct{intno;
charname[10];floatscore;}stud[100];
15.将两个字符串连接起来组成一个字符串时,选用(C)函数。a.strlen()b.strcpy()c.strcat()d.strcmp()16.(D)不是构造函数的特征
a.构造函数的函数名与类名相同b.构造函数可以重载c.构造函数可以设置缺省参数d.构造函数必须指定类型说明
17.已知:类A中一个成员函数说明如下:voidSet(A&a);其中,A&的含义是(C)。a.指向类A的指针为a
b.将a的地址值赋给变量Set
c.a是类A对象的引用,用来作函数Set()的参数d.变量A与a按位与作为函数Set()的参数
18.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,(A)是正确的。a.voidprint()const;b.constvoidprint();c.voidconstprint();d.voidprint(const);19.关于虚函数的描述中,(C)是正确的。
a.虚函数是一个static类型的成员函数b.虚函数是一个非成员函数
c.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数d.派生类的虚函数与基类的虚函数具有不同的参数个数和类型20.关于new运算符的下列描述中,(D)是错的。a.它可以用来动态创建对象和对象数组
b.使用它创建的对象和对象数组可以使用运算符delete删除c.使用它创建对象时要调用构造函数
d.使用它创建对象数组时必须指定初始值二、问答题(15分)
1、(3分)虚析构函数有什么作用?对象销毁时要调用析构函数,如果不是定义的虚析构函数,基类指针只能访问基类析构,不能访问派生类析构,若定义的虚析构则可以解决这问
第8页(共17页)
题。
解答要点:
对象销毁时,需要调用析构函数。在多态调用时,是用基类的指针访问派生类的对象。如果析构函数是非虚函数,则基类指针只能访问基类的析构函数,而不能访问派生类的析构函数,导致派生类对象销毁时,没有调用派生类的析构函数,只是调用了基类的析构函数。如果把析构函数定义成虚函数,则可克服这个问题。
2、(3分)拷贝构造函数在哪几种情况下调用?用一个对象初始化另一个对象时;当用对象作为函数参数传递时;当函数返回对象时3、(4分)函数重载与函数覆盖有什么不同,它们与多态有什么关系?函数重载函数名相同,而函数参数个数,函数类型不同;覆盖是指函数名,函数个数,函数类型都相同。C++是通过虚函数的覆盖,实现多态的功能。解答要点:
函数重载是指函数名相同,而函数的参数个数或类型不同;覆盖是指在派生类中成员函数与基类成员函数的函数名、参数个数、类型与返回值均相同;C++中正是通过虚函数的覆盖,实现多态的功能。
4、(3分)C++继承是如何工作的?解答要点:
继承使得派生类能够使用基类的公有和保护成员,从而实现代码的复用,派生类可以增加成员,也可以隐藏和覆盖基类的成员。对于公有继承,基类成员的访问权限在派生类保持不变。
5、(2分)类与对象有什么区别?解答要点:
类是类型,是对象的抽象,对象是类的具体实例。一个类可以有多个对象,每个对象都有自己的存储单元,而类不占存储单元。三、(6分)分析下面程序的运行结果#includeclassB{
public:B(){}
B(inti){b=i;}
virtualvoidvirfun(){
coutintd;
voidvirfun(){
cout{
if(tos==SIZE)
cout}//Matchwhile(*str...)statementreturncount;}
《试题二》
一、(共20分,每题2分)单项选择
1.已定义了一个类A并有语句A*pa=newA(5);那么以下说法正确的是:(A)A.该语句会创建A类的一个对象,并将此对象的地址赋给指针pa;B.该语句会创建A类的5个对象,且它们的地址是连续的;
C.当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放;D.类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数;
2.定义类A的非静态成员函数A&f(A&one)时,需有语句returnexp;则exp不能是:(B)A.类A中类型为A的静态数据成员B.f中用语句Aa=one;定义的量aC.oneD.*this
3.在一个类中,下列哪些成员可以是多个?(D)A.无参构造函数B.析构函数C.原型相同的非静态成员函数D.静态成员函数
4.对类T中的下列成员,若不考虑代码优化,一般来说它们中的哪个执行起来最慢?(C)A.缺省的无参构造函数B.缺省的拷贝构造函数
C.Tf(){Tt;returnt;}D.不能判定A、B、C哪个最慢
5.对函数原型为int&min(int&a,int&b);的全局函数,下列语句块哪个是错误的:(C)A.intx=10,y=5;min(x,y)=100;B.intx=10,y=5,z;z=min(x,y+=x);C.intx=10,y=5;min(x,10)=y;D.intx=10,y=5;x=min(x,y);6.关于拷贝构造函数错误的说法有:(B)
A.拷贝构造函数是一种特殊的构造函数,且不能在类中进行函数重载。
B.若自定义派生类的拷贝构造函数,那么也必须自定义基类的拷贝构造函数。C.拷贝构造函数只能有一个参数,且为常量引用或非常量引用。D.拷贝构造函数不允许在函数体中使用return语句。7.下列对虚基类声明正确的是:(B)
A.classvirtualB:publicAB.classB:virtualpublicAC.classB:publicAvirtualD.virtualclassB:publicA
8.若有语句A*constp=newB;,其中类B是从类A直接派生得到的,那么下列说法错误的是:(D)
A.若要执行语句p->f();,那么类A中一定有一个与f()函数匹配的函数声明。B.类B一定是通过public继承方式从类A派生的。
C.类B的构造函数中,至少有一个无参的或提供全部缺省参数的构造函数。D.通过指针p,只能访问类中的常量成员函数或静态成员函数。9.下面说明的哪个数据不能作为类T的数据成员定义。(D)
A.T*pTB.classQ{}q1,q2;C.staticTt;D.constTt;10.下列哪种运算符可以被重载:(D)A.sizeofB.::C.?:D.[]二、(共15分,每题3分)回答下列各题,可以举例说明。
1.说明基类中的public、protected和private成员分别在public、protected和private继承方式下在派生类中的可访问性。
第12页(共17页)
重点是基类中的任何Private在派生类中都是不可访问的.
2.若类A有私有数据成员intn,哪些情况下,在一个函数的函数体中能够直接访问A类的数据成员n。(至少三种)
如:a)voidA::f(){intk=n;}b)voidA::g(A&one){n+=one.n;}c)A的友员函数inth(A&one){returnone.n;}
3.哪些情况下,定义构造函数时必须使用初始化列表。(至少三种)
a)有常量数据成员b)有引用数据成员c)使用基类的带参数的构造函数初始化4.将一个基类的析构函数定义为虚函数的作用和目的是什么?
如:基类A,子类B,A*p=newB;当deletep;时,若无虚析构函数,只析构基类部分。5.为什么在类中不能用成员函数voidf(int&)重载(overload)本类的成员函数intf(int)?
如:inta=100;f(a);这时两个都可以了,有二义性。三、(共10分,每题1分)判断正误,只需回答“正确”或“错误”。1.this指针既可以是指向常量对象的非常量指针,也可以是指向非常量对象的常量指针。(×)2.即使不创建类的实例对象,也可以在main函数中访问该类的公有静态成员函数。(√)3.在一个函数体内不允许定义其它函数,同样在一个类中也不允许定义其它类。(×)4.若想在一个cpp文件中使用一个模板类,那么在预编译后,此文件必须含有该模板类的全部声明和定义。(√)
5.在捕获异常时,异常会进行自动类型转换并按照异常类型的同一性进行匹配。(×)6.一个抽象类的后裔类,既可以是抽象类,也可以是具体类。(√)7.类A中的转换函数可定义为:intoperatorA()const{return0;}.(×)8.类的多个实例对象可共享本类的虚拟表。(√)
9.用const修饰的成员函数只能通过常量对象调用。(×)
10.类B是类A的派生类,类C是类A的友员类,那么类C也是类B的友员类。(×)
C++期末试题
一、判断题(每小题1分,共10分)
(√)1、说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。(×)2、所有的表达式都有值。
(√)3、程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
(×)4、类的静态数据成员需要在定义每个类的对象时进行初始化。(×)5、基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
(√)6、当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。
(×)7、当函数的返回值是数组类型的,传递的是数组第一个元素的地址。(√)8、如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
(×)9、字符串’hello,world”在内存中存放时,占用11个字节的空间。(√)10、用new动态申请的内存空间,必须用delete来释放。二、单项选择题:(每小题2分,共30分)
1.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为____A__。A.mainB.MAINC.nameD.function
第13页(共17页)
2.设x和y均为bool量,则x&&y为真的条件是__A____。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假3.下面的哪一个保留字不能作为函数的返回类型?___C____。A.voidB.intC.newD.1ong
4.假定a为一个整型数组名,则元素a[4]的字节地址为___B____。A.a十4B.a十8C.a十16D.a十325.C++源程序文件的缺省扩展名为___A___。
A.cppB.exeC.objD.lik6.在下面的二维数组定义中,正确的是(C)。
A.inta[5][];B.inta[][5];C.inta[][3]={{1,3,5},{2}};D.inta[](10);7.以下正确的说法是___B____。
A.用户调用标准库函数前,必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统不允许用户重新定义标准库函数D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中8.文件包含命令中被包含的文件的扩展名____C___。
A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp9.要使语句“p=newint[10][20];”能够正常执行,p应定义为___D____。A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];10.有关构造函数的说法不正确的是___C____。
A、构造函数名字和类的名字一样。B.构造函数无任何函数类型。
C.构造函数有且只有一个D.构造函数在说明类对象时自动执行。11.假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它,则书写格式最好为____A___。
A.aB.AA::aC.a()D.AA::a()12、下列关键字中,____B___不是类定义中使用的关键字。A.classB.switchC.privateD.public
13.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储____A___个整数。
A.nB.n+1C.n-1D.1
14.假定AB为一个类,则执行“ABa,b(3),*p;”语句时共调用该类构造函数的次数为___A____。
A.2B.3C.4D.5
15.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是___B____。A.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符三、填空题:(每空2分,共20分)
1、从一条函数原型语句“intfun1(void);”可知,该函数的返回类型为int,该函数带有0个参数。
2、假定x是一个逻辑量,则x||false的值为_x__。
3、作为语句标号使用的C++保留字case和defaule只能用于switch语句的定义体中。4、若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上类名和类区分符
5、C++支持两种多态性:编译时的多态性和运行时时的多态性。
第14页(共17页)
6、假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NULL):a(aa),b(bb){}”,则该类中至少包含有2个数据成员。
7、类是用户定义的类型,具有类类型的变量称作对象。
四、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面(每小题6分,共18分)
1.打印出2至99之间的所有素数(即不能被任何数整除的数)。(每空2分)#include#includevoidmain(){inti,n;
for(n=2;nclassAdd{
private:intx,y;
public:Add(inta,intb){x=a;y=b;
coutvoidfunc(char*str){cout
友情提示:本文中关于《C++PPT总结》给出的范例仅供您参考拓展思维使用,C++PPT总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。