2023年C++面向对象程序设计复习题集_第1页
2023年C++面向对象程序设计复习题集_第2页
2023年C++面向对象程序设计复习题集_第3页
2023年C++面向对象程序设计复习题集_第4页
2023年C++面向对象程序设计复习题集_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++面向对象程序设计复习题集一、单项选择题1.C++源程序文献的默认扩展名为(A)。A.cppB.exeC.objD.lik2.由C++源程序文献编译而成的目的文献的默认扩展名为(C)。A.cppB.exeC.objD.lik3.由C++目的文献连接而成的可执行文献的默认扩展名为(B)。A.cppB.exeC.objD.lik4.C++程序从上机到得到结果的几个操作环节依次是(B)。A.编译、编辑、连接、运营B.编辑、编译、连接、运营C.编译、运营、编辑、连接D.编辑、运营、编辑、连接5.以下标记符中不全是保存字的是(B)。A.caseforintB.defaultthenwhileC.boolclasslongD.gotoreturnchar6.能作为C++程序的基本单位是(C)。A.字符B.语句C.函数D.源程序文献7.程序中主函数的名字为(A)。A.mainB.MAINC.MainD.任意标记符8.C++程序的基本模块为(D)。A.表达式B.标记符C.语句D.函数9.可用作C++语言用户标记符的一组标记符是(B)。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof10.存储以下数据,占用存储字节最多的是(D)。A.0B.‘0’C.“0”D.0.011.程序运营中需要从键盘上输入多于一个数据时,各数据之间应使用(D)符号作为分隔符。A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是(C)。A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能对的表达代数式的表达式是(D)。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<<(a,b);”的输出结果是(D)。A.15B.26,15C.15,26D.2615.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为(C)。A.1B.0C.与x值相同D.与x值相反16.x>0&&x<=10的相反表达式为(A)。A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>1017.x>0||y==5的相反表达式为(B)。A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==518.设x和y均为bool量,则x&&y为真的条件是(A)。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假19.设x和y均为bool量,则x||y为假的条件是(C)。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假20.字符串”a+b=12\n”的长度为(B)。A.6B.7C.8D.921.假定下列x和y均为int型变量,则不对的的赋值为(B)。A.x+=y++B.x++=y++C.x=++yD.++x=++y22.下列的符号常量定义中,错误的定义是(C)。A.constM=10;B.constintM=20;C.constcharch;D.constboolmark=true;23.循环语句“for(inti=0;i<n;i++)cout<<i*i<<’’;”中循环体执行的次数为(C)。A.1B.n-1C.nD.n+124.在下面循环语句中循环体执行的次数为(B)。for(inti=0;i<n;i++)if(i>n/2)break;A.n/2B.n/2+1C.n/2-1D.n-125.在下面循环语句中内层循环体S语句的执行总次数为(D)。for(inti=0;i<n;i++)for(intj=i;j<n;j++)S;A.n2B.(n+1)/2C.n(n-1)/2D.n(n+1)/226.在下面循环语句中循环体执行的次数为(C)。inti=0,s=0;while(s<20){i++;s+=i;}A.4B.5C.6D.727.在下面循环语句中循环体执行的次数为(A)。inti=0;doi++;while(i*i<10);A.4B.3C.5D.228.当解决特定问题时的循环次数已知时,通常采用(A)来解决。A.for循环B.while循环C.do循环D.switch语句29.循环体至少被执行一次的语句为(C)。A.for循环B.while循环C.do循环D.任一种循环30.switch语句可以改写为(B)语句。A.forB.ifC.doD.while31.do语句可以改写为(D)语句。A.复合B.ifC.switchD.while32.在下面的一维数组定义中,哪一个有语法错误。(C)A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];33.在下面的字符数组定义中,哪一个有语法错误。(D)。A.chara[20]=”abcdefg”;B.chara[]=”x+y=55.”;C.chara[15];D.chara[10]=’5’;34.在下面的二维数组定义中,对的的是(C)。A.inta[5][];B.inta[][5];C.inta[][3]={{1,3,5},{2}};D.inta[](10);35.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为(C)。A.2B.4C.6D.836.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。A.0B.4C.8D.637.若定义了函数double*function(),则函数function的返回值为(B)。A.实数型B.实数的地址C.指向函数的指针D.函数的地址38.以下说法中对的的是(B)。A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C.C++函数必须有返回值,否则不能使用函数D.C++程序中有调用关系的所有函数必须放在同一个程序文献中39.以下叙述中不对的的是(C)。A.在一个函数中,可以有多条return语句B.函数的定义不能嵌套,但函数的调用可以嵌套C.函数必须有返回值D.不同的函数中可以使用相同名字的变量40.函数重载是指(A)。A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同41.以下关于函数模板叙述对的的是(C)。A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型42.下列(C)的调用方式是引用调用。A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值43.为了提高程序的运营速度,可将不太复杂的功能用函数实现,此函数应选择(A)。A.内联函数B.重载函数C.递归函数D.函数模板44.函数原型语句对的的是(B)。A.intFunction(voida);B.voidFunction(int);C.intFunction(a);D.voidint(doublea);45.C++中函数返回值的类型是由(B)决定的。A.return语句中表达式的类型B.该函数定义时的类型C.调用函数时的调用语句D.系统根据结果46.以下函数的返回结果是(A)。intfunction(char*x){char*p=x;while(*p++);return(p-x-1);}A.求字符串的长度B.将字符串x连接到字符串p后面C.将字符串x复制到字符串p中D.将字符串x反向存放47.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为(B)个。A.1B.2C.4D.548.设有如下函数定义intf(char*s){char*p=s;while(*p!=’\0’)p++;return(p-s);}在主函数中用cout<<f(“good”)调用上述函数,则输出结果为(B)。A.3B.4C.5D.649.以下对的的函数原型语句是(C)。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(int,int);D.doublefun(intx,y);50.以下对的的说法是(B)。A.用户调用标准库函数前,必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统不允许用户重新定义标准库函数D.用户调用标准库函数前,不必使用预编译命令将该函数所在文献涉及到用户源文献中51.函数调用不可以(D)。A.出现在一个表达式中B.出现在执行语句中C.作为一个函数的实参D.作为一个函数的形参52.以下对的的描述是(B)。A.函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套53.若用数组名作为函数调用的实参,传递给形参的是(A)。A.数组的首地址B.数组中第一个元素的值C.数组所有元素的值D.数组元素的个数54.以下错误的描述是(D)。A.被调用函数中可以不用return语句B.被调用函数中可以用多个return语句C.被调用函数中,假如有返回值,就一定要有return语句D.被调用函数中,一个return语句可返回多个值给调用函数55.以下对的的描述是(C)。A.不允许设立参数的默认值B.设立参数的默认值只能在定义函数时设立C.设立参数的默认值时,应当设立右边的参数D.设立参数的默认值时,应当所有参数都设立56.采用重载函数的目的是(D)。A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性57.将两个字符串连接起来组成一个字符串时,选用(C)函数。A.strlen()B.strcap()C.strcat()D.strcmp()58.以下叙述中对的的是(B)。A.使用#define可认为常量定义一个名字,该名字在程序中可以再赋此外的值B.使用const定义的常量名有类型之分,其值在程序运营时是不可改变的C.在程序中使用内联函数使程序的可读性变差D.在定义函数时可以在形参表的任何位置给出缺省形参值59.下面的标记符中,(C)是文献级作用域。A.函数形参B.语句标号C.外部静态类标记符D.自动类标记符60.以下叙述不对的的是(D)。A.宏替换不占用运营时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表达61.C++语言的编译系统对宏命令的解决是(D)。A.在程序运营时进行B.在程序连接时进行C.和C++程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行62.当#include后面的文献名用双引号括起来时,寻找被包含文献的方式是(B)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录63.当#include后面的文献名用尖括号括起来时,寻找被包含文献的方式是(A)。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录64.在下面存储类中,(C)对象的可见性与生存期不一致。A.外部类B.自动类C.内部静态类D.寄存器类65.在下面存储类中,(A)的对象不是局部变量。A.外部静态类B.自动类C.函数形参D.寄存器类66.关于局部变量,下面说法对的的是(C)。A.定义该变量的程序文献中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问67.文献包含命令中被包含的文献的扩展名(C)。A.必须是.hB.不能是.hC.可以是.h或.cppD.必须是.cpp68.预解决命令在程序中都是以(B)符号开头的。A.*B.#C.&D.@69.设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为(B)。A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数70.用new运算符创建一个含10个元素的一维整型数组的对的语句是(C)。A.int*p=newa[10];B.int*p=newfloat[10];C.int*p=newint[10];D.int*p=newint[10]={1,2,3,4,5}71.下列给字符数组赋初值时,对的的是(A)。A.chars1[]=”abcdef”;B.chars2[4]=”abcd”;C.chars3[2][3]={“abc”,”xyz”};D.chars4[4][]={‘a’,’x’,’s’,’t’};72.设有定义“staticintdata[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为(D)。A.115B.124C.130D.16073.假定变量m定义为“intm=7;”,则定义变量p的对的语句为(B)。A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;74.假定k是一个double类型的变量,则关于变量p的对的定义语句为(D)。A.doublep=&k;B.int*p=&k;C.double&p=*k;D.char*p=”Thankyou!”;75.变量s的定义为“char*s=”Helloworld!”;”,要使变量p指向s所指向的同一个字符串,则应选取(A)。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;76.关于void指针,下列说法对的的是(C)。A.void指针就是未指向任何数据的指针B.void指针就是已定义而未初始化的指针C.指向任何类型数据的指针可直接赋值给一个void指针D.void指针值可直接赋给一个非void指针77.假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不对的的语句为(D)。A.x=pa[3];B.x=*(a+3);C.x=a[3];D.x=*pa+3;78.假定有定义“intb[10];int*pb;”,则不对的的赋值语句为(D)。A.pb=b;B.pb=&b[0];C.*pb=newint;D.pb=b[5];79.假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增长(C)。A.1B.4C.sizeof(double)D.sizeof(p)80.假定p指向的字符串为”string”,则cout<<p+3的输出结果为(C)。A.stringB.ringC.ingD.i81.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。A.cout<<*p;B.cout<<p;C.cout<<&p;D.cout<<(void*)p;82.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。A.int*p=newint[30];B.int*p=newint(30);C.int*p=new[30];D.*p=newint[30];83.假定p是具有int**类型的指针变量,则给p赋值的对的语句为(B)。A.p=newint;B.p=newint*;C.p=newint**;D.p=newint[10];84.要使语句“p=newint[10][20];”可以正常执行,p应被事先定义为(D)。A.int*p;B.int**p;C.int*p[20];D.int(*p)[20];85.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;”,则对的的语句为(A)。A.strcpy(book->title,”WangTao”);B.strcpy(book.title,”WangTao”);C.strcpy(*book.title,”WangTao”);D.strcpy((*book)->title,”WangTao”);86.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则不对的的语句为(A)。A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};C.BOOK*x=newBOOK;D.BOOK*x=book;87.假定有“structBOOK{chartitle[40];floatprice;}book;”,则对的的语句为(B)。A.BOOK&x=&book;B.BOOK&x=book;C.BOOK&x=newBOOK;D.BOOK&x=BOOK;88.下列对引用的陈述中不对的的是(C)。A.每一个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作事实上作用于它所引用的对象C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D.不需要单独为引用分派存储空间89.假定变量a和pa定义为“doublea[10],*pa=a;”,要将12.35赋值给a中的下标为5的元素,不对的的语句是(D)。A.pa[5]=12.35;B.a[5]=12.35;C.*(pa+5)=12.35;D.*(a[0]+5)=12.35;90.假定变量b和pb定义为“intb[10],*pb=b;”,要将24赋值给b[1]元素中,不对的的语句是(C)。A.*(pb+1)=24;B.*(b+1)=24;C.*++b=24;D.*++pb=24;91.假定指针变量p定义为“int*p=newint(100);”,要释放p所指向的动态内存,应使用语句(A)。A.deletep;B.delete*p;C.delete&p;D.delete[]p;92.假定指针变量p定义为“int*p=newint[30];”,要释放p所指向的动态内存,应使用语句(D)。A.deletep;B.delete*p;C.delete&p;D.delete[]p;93.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;94.关于消息,下列说法中不对的的是(B)。A.发送消息的对象请求服务,接受消息的对象提供服务B.消息的发送者必须了解消息的接受者如何相应消息C.在C++中,消息的发送具体体现为对接受消息的对象的某个函数的调用D.每个对象只能接受某些特定格式的消息95.关于封装,下列说法中不对的的是(D)。A.通过封装,对象的所有属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽也许地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的96.面向对象方法的多态性是指(C)。A.一个类可以派生出多个特殊类B.一个对象在不同的运营环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的97.软件产品在需求发生变化、运营环境发生变化或发现软件产品自身的错误或局限性时进行相应的软件更新的难易限度叫做软件的(A)。A.可维护性B.可复用性C.兼容性D.对的性98.软件产品可被所有或部分地再用于新的应用的能力叫做软件的(B)。A.可维护性B.可复用性C.兼容性D.对的性99.软件产品与其他软件产品组合成一个整体的难易限度叫做软件的(C)。A.可维护性B.可复用性C.兼容性D.对的性100.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的(D)。A.可维护性B.可复用性C.兼容性D.对的性二、填空题1.C++语言是在__C____语言的基础上发展起来的。2.C++语言的编译单位是扩展名为___.cpp_____的__程序_____文献。3.行尾使用注释的开始标记符为____//____。4.多行注释的开始标记符和结束标记符分别为_/*________和___*/_____。5.用于输出表达式值的标准输出流对象是_cout_____。6.用于从键盘上为变量输入值的标准输入流对象是___cin___。7.一个完整程序中必须有一个名为__main____的函数。8.一个函数的函数体就是一条__复合_____语句。9.当执行cin语句时,从键盘上输入每个数据后必须接着输入一个_空白_____符,然后才干继续输入下一个数据。10.在C++程序中包含一个头文献或程序文献的预编译命令为__#include______。11.程序中的预解决命令是指以__#___字符开头的命令。12.一条表达式语句必须以___分号___作为结束符。13.在#include命令中所包含的头文献,可以是系统定义的头文献,也可以是___用户(或编程者)____定义的头文献。14.使用#include命令可以包含一个头文献,也可以包含一个_程序___文献。15.一个函数定义由_函数头____和__函数体____两部分组成。16.若一个函数的定义处在调用它的函数之前,则在程序开始可以省去该函数的_原型(或声明)____语句。17.C++头文献和源程序文献的扩展名分别为___.h___和___.cpp___。18.程序文献的编译错误分为___警告(warning)____和__致命(error)___两类。19.当使用__void____保存字作为函数类型时,该函数不返回任何值。20.当函数参数表用__void____保存字表达时,则表达该参数表为空。21.从一条函数原型语句“intfun1(void);”可知,该函数的返回类型为__int____,该函数带有_0___个参数。22.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到_____下一行___的开始位置。23.假定x=5,y=6,则表达式x++*++y的值为____35______。24.假定x=5,y=6,则表达式x--*--y的值为_____25_____。25.假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为___6_______和___30_______。26.假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为____4______和____11______。27.C++常数0x145相应的十进制值为_____325_____。28.C++常数0345相应的十进制值为_____2_____。29.十进制常数245相应的十六进制的C++表达为____0xf5______。30.十进制常数245相应的八进制的C++表达为____0365______。31.signedchar类型的值域范围是__-128______至__+127______之间的整数。32.int和float类型的数据分别占用__4_____和____4____个字节。33.float和double类型的数据分别占用____4_____和____8____个字节。34.bool和char类型的数据分别占用____1_____和_____1___个字节。35.unsignedshortint和int类型的长度分别为_____2____和___4_____。36.字符串”This\’sabook.\n”的长度为_____15_____。37.字符串”\nThis\’sapen\n\n”的长度为_____15_____。38.在C++中存储字符串”abcdef”至少需要____7____个字节。39.在C++中存储字符串”a+b=c”至少需要____6____个字节。40.假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为____1____和___3_____。41.假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为____3______和_____3.2____。42.假定x是一个逻辑量,则x&&true的值为____x_____。43.假定x是一个逻辑量,则x||true的值为_____true(或1)____。44.假定x是一个逻辑量,则x&&false的值为_____false(或0)____。45.假定x是一个逻辑量,则x||false的值为____x______。46.假定x是一个逻辑量,则!x||false的值为____!x______。47.假定x是一个逻辑量,则x&&!x的值为_____false(或0)_____。48.假定x是一个逻辑量,则x||!x的值为____true(或1)_____。49.数学算式的C++表达式为______(x+y)/(2*x*y)______。50.数学算式的C++表达式为____3*x*y/(x+y)_______。51.数学算式的C++表达式为____1/(a*x*x+b*y*y)____________。52.设enumPrintstatus{ready,busy,error};则cout<<busy的输出结果是_1____。53.设enumPrintstatus{ready=2,busy,error};则cout<<busy的输出结果是__3____。54.常数-4.205和6.7E-9分别具有____4______和_____2_____位有效数字。55.枚举类型中的每个枚举值都是一个_____枚举常量_____,它的值为一个___整数______。56.常数100和3.62的数据类型分别为____int____和___double_____。57.若x=5,y=10,则计算y*=++x表达式后,x和y的值分别为_6___和___60___。58.假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为___4___和__1____。59.假定x=10,则表达式x<=10?20:30的值为__20____。60.表达式sqrt(81)和pow(6,3)的值分别为___9___和__216____。61.含随机函数的表达式rand()%20的值在__0___至__9____区间内。62.在switch语句中,每个语句标号所含关键字case后面的表达式必须是整型_常量______。63.在if语句中,每个else关键字与它前面同层次并且最接近的____if____关键字相配套。64.作为语句标号使用的C++保存字case和default只能用于____switch____语句的定义体中。65.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时__不断止______执行。66.若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被反复执行____11__次后正常结束。67.若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改I的值,则循环体将被反复执行___10___次后正常结束。68.当在程序中执行到___break_____语句时,将结束本层循环类语句或switch语句的执行。69.当在程序中执行到____continut____语句时,将结束所在循环语句中循环体的一次执行。70.在程序中执行到___return__语句时,将结束所在函数的执行过程,返回到调用该函数的位置。71.在程序执行完___主(或main)__函数后,将结束整个程序的执行过程,返回到操作系统下的C++集成开发窗口。72.元素类型为int的数组a[10]共占用__40_____字节的存储空间。73.元素类型为double的二维数组a[4][6]共占用_192__字节的存储空间。74.元素类型为char的二维数组a[10][30]共占用__300___字节的存储空间。75.存储字符’a’和字符串”a”分别需要占用___1___和__2____个字节。76.空串的长度为__0___,存储它需要占用____1___个字节。77.字符串”\’a\’xy=4\n”的长度为__8____。78.字符串”a:\\xxk\\数据”的长度为_11___。79.用于存储一个长度为n的字符串的字符数组的长度至少为___n+1___。80.若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为___cin>>a___。81.若a是一个字符数组,则向屏幕输出a中所存字符串的表达式为____cout<<a____。82.一个二维字符数组a[10][20]可以存储_____10___个字符串,每个字符串的长度至多为___19_____。83.对一个二维字符数组a进行初始化的数据为{”123”,”456”,”789”},则a[1]元素相应的字符串为_”456”_____。84.strlen(”apple”)的值为__5___,strcmp(”a”,”A”)的值为___1___。85.若需要把一个字符串”aaa”赋值到字符数组a中,则需要执行__strcpy(或strcpy(a,”aaa”))___函数的调用来实现。86.假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则a[1][1]和a[2][3]分别被初始化为___8____和___0_____。87.在C++语言中,一个函数由函数头和__函数体______组成。88.重载一个函数的条件是:该函数必须在参数的个数或参数的__类型____上与其它同名函数有所不同。89.假如一个函数只允许同一文献中的函数调用,则应在该函数定义前加上___static____C++保存字。90.若“doublex=100;”是文献F1.CPP中的一个全局变量定义语句,若文献F2.CPP中的某个函数需要访问此x,则应在文献F2.CPP中添加对x的声明语句为__externdoublex_____。91.定义一个函数模板要用到的第一个修饰符是___template___。92.在函数模板的参数中,用class修饰的参数称为_虚拟类型(或类型)___参数。93.假如一个函数直接或间接地调用自身,这样的调用称为____递归_____调用。94.已知intcubin(intn){returnn*n*n;}和doublecubin(doublen){returnn*n*n;}是一个函数模板的两个实例,假定类型参数用T表达,则该函数模板的定义是_____template<classT>Tcubin(Tn){returnn*n*n;______。95.对于无返回值函数,定义函数时要用____void_____修饰函数类型。96.假如一个函数定义使用了____static____修饰,则该函数不允许被其它文献中的函数调用。97.假如一个函数中有多个默认参数,则默认参数必须所有处在形参表的__右边或(后面)___部分。98.定义外部变量时,不用存储类说明符__extern_____,而声明外部变量时用它。99.调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的__头文献____。100.函数形参的作用域是该函数的_____函数体_______。101.C++提供的预解决命令有宏定义命令,条件编译命令和____文献包含命令_______。102.程序的编译是以___文献____为单位进行的。103.C++程序运营时的内存空间可以提成全局数据区,堆区,栈区和__代码区(程序区)______。104.全局变量和静态局部变量具有静态生存期,存放在内存的___全局数据_______区中。105.局部变量具有局部生存期,存放在内存的___栈______区中。106.若二维数组a有m列,设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]在数组中位置序号的公式为___I*m+j+1_________。107.若有定义“doublea[3][5];”,则a数组中行下标和列下标的最大值分别为___2_____和___4____。108.若有定义“structAA{inta;charb;doublec;}x;”,则x占用空间大小为__13______字节。109.当定义一个结构体变量时,系统分派给该变量的内存大小等于各成员所需内存大小的___总和____。110.一个指针类型的对象占用内存的___4____个字节的存储空间。111.一个指针指向一个数据对象,它保存着该数据对象的___地址_____,若数据对象为DataType类型,则相应的指针类型为_DataType*_____。112.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为__(char*)p____。113.假定一个数据对象为int*类型,则指向该对象的指针类型为_int**______。114.假定p是一个指向整数对象的指针,则用__*p______表达该整数对象,用___&p_____表达指针变量p的地址。115.假定p是一个指针,则*p++运算一方面访问___*p_____,然后使___p_____的值增1。116.假定p是一个指针,则(*p)++运算一方面访问___*p_____,然后使___*p_____的值增1。117.假定p所指对象的值为25,p+1所指对象的值为42,则*p++的值为__25______。118.假定p所指对象的值为25,p+1所指对象的值为42,则*++p的值为___42_____。119.假定p所指对象的值为25,p+1所指对象的值为42,则执行(*p)++运算后,p所指对象的值为___26_____。120.假定p所指对象的值为25,p+1所指对象的值为42,则执行*p++运算后,p所指对象的值为____42____。121.假定对数组a[]进行初始化的数据为{2,7,9,6,5,7,10},则a[2]和a[5]分别被初始化为____9____和____7____。三、程序填空,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。1、打印出100到200之间的所有素数(即除1和它自身再没有其他约数的数)。#include<iostream.h>#include<math.h>voidmain(){inti,j;for(i=100;i<=200;i++){inttemp=int(sqrt(i));for(j=2;(1);j++)if(i%j==0)(2);if((3))cout<<i<<'';}cout<<'\n';}(1)j<=temp(2)break(3)j>temp2、斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,规定每行输出5个数。#include<iostream.h>voidmain(){intf,f1,f2,i;cout<<”斐波那契数列:\n”;f1=0;f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i++){f=______(1)______;cout<<setw(6)<<f;if(_____(2)______)cout<<endl;f1=f2;f2=____(3)_______;}cout<<endl;}(1)f1+f2(2)i%5==0(3)f3、计算的值。#include<iostream.h>voidmain(){ doublex,p1=1,p2=1,s=0; inti,j=1; cout<<"输入x的值:"; cin>>x; for(i=1;i<=10;i++){ p1*=___(1)_____; p2*=____(2)____; s+=j*p1/p2;//j的值为(-1)i+1 j=____(3)____; } cout<<s<<endl;}(1)x(2)I(3)-j4、采用辗转相除法求出两个整数的最大公约数。#include<iostream.h>voidmain(){inta,b; cout<<"请输入两个正整数:"; cin>>a>>b; while(a<=0||__(1)___){cout<<"重新输入:";cin>>a>>b;} while(b){ intr;r=a%b; ___(2)___;___(3)___;//分别修改a和b的值 } cout<<a<<endl;//输出最大公约数}(1)b<=0(2)a=b(3)b=r5、把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。#include<iostream.h>voidmain(){ intx; cout<<"请输入一个整数,若小于3则重输:"; docin>>x;while(___(1)___); inti=2; do{ while(___(2)___){ cout<<i<<''; x/=i; } ___(3)___; }while(i<x); if(x!=1)cout<<x; cout<<endl;}(1)x<3(或x<=2)(2)x%i==0(3)i++6、下面函数是求两个整型参数a和b的最小公倍数。intf2(inta,intb){ inti=2,p=1; do{ while(a%i==0&&___(1)___){ p*=i;a/=i;b/=i; } ___(2)___; }while(a>=i&&___(3)___); returnp*a*b;}(1)b%i==0(2)i++(或++i)(3)b>=i7、在输出屏幕上打印出一个由字符’*’组成的等腰三角形,该三角形的高为5行,从上到下每行的字符数依次为1,3,5,7,9。#include<iostream.h>voidmain(){ inti,j; for(i=1;___(1)___;i++){ for(j=1;j<=9;j++) if(j<=5-i||___(2)___)cout<<’’; else___(3)___; cout<<endl; }}(1)i<=5(2)j>=5+i(3)cout<<’*’8、记录字符串中英文字母个数的程序。#include<iostream.h>intcount(charstr[]);voidmain(){chars1[80];cout<<”Enteraline:”;cin>>s1;cout<<”count=”<<count(s1)<<endl;}intcount(charstr[]){intnum=0;//给记录变量赋初值for(inti=0;str[i];i++)if(str[i]>=’a’&&str[i]<=’z’||___(1)___)___(2)___;___(3)___;}(1)str[i]>=’A’&&str[i]<=’Z’(2)num++(3)returnnum9、主函数调用一个fun函数将字符串逆序。#include<iostream.h>#include<string.h>___(1)___;voidmain(){chars[80];cin>>s;___(2)___;cout<<”逆序后的字符串:”<<s<<endl;}voidfun(charss[]){intn=strlen(ss);for(inti=0;___(3)____;i++){charc=ss[i];ss[i]=ss[n–1–i];ss[n–1–i]=c;}}(1)voidfun(charss[])(2)fun(s)(3)i<n/210、从一个字符串中删除所有同一个给定字符后得到一个新字符串并输出。#include<iostream.h>constintlen=20;voiddelstr(chara[],charb[],charc);voidmain(){ charstr1[len],str2[len];charch; cout<<"输入一个字符串:"; cin>>str1; cout<<"输入一个待删除的字符:";cin>>ch; delstr(str1,str2,ch);cout<<str2<<endl;}voiddelstr(chara[],charb[],charc){ intj=0; for(inti=0;___(1)___;i++) if(___(2)___)b[j++]=a[i]; b[j]=___(2)___;}(1)a[i](或a[i]!=’\0’)(2)a[i]!=c3)'\0'11、采用指针访问方式从键盘给数组a[N]输入数据,然后对元素值重新按逆序存放并输出。#include<iostream.h>constintN=8;voidmain(){inta[N],*p,*q;for(p=a;p<a+N;p++)___(1)___;p=a;q=a+N-1;while(p<q){ intr=*p;*p=*q;*q=r;___(2)___;___(3)___; }for(p=a;p<a+N;p++)cout<<*p<<'';cout<<endl;}(1)cin>>*p(2)p++(或++p)(3)q--(或--q)12、从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的顺序进行的。#include<iostream.h>voidmain(){ intx;cout<<"输入一个整数:";cin>>x;inta[20],k=0,r;do{ r=x%2;a[k++]=r;x=___(1)___; }while(___(2)___);for(--k;k>=0;k--)___(3)___;cout<<endl;}(1)x/2(2)x!=0(3)cout<<a[k]13、对数组a[n]按升序进行的选择排序算法voidSelectSort(inta[],___(1)___){ inti,j,k; for(i=1;i<n;i++){//进行n-1次选择和互换k=i-1; for(j=i;j<n;j++) if(a[j]<a[k])___(2)___; intx=a[i-1];a[i-1]=a[k];___(3)___; }}(1)intn(2)k=j(3)a[k]=x14、对数组a[n]按升序进行的插入排序算法voidInsertSort(___(1)___,intn){ inti,j,x; for(i=1;i<n;i++){//进行n-1次循环x=a[i]; for(j=i-1;j>=0;j--)//为x顺序向前寻找合适的插入位置 if(x<a[j])___(2)___;else___(3)___; a[j+1]=x; }}(1)inta[](或int*a)(2)a[j+1]=a[j](3)break15、用插入排序方法对table指针数组中size个指针所指向的字符串进行按升序排序的算法。voidsort(char*table[],intsize){for(inti=1,___(1)___;i++){char*p=table[i];for(intj=i-1;j>=0;j--)if(strcmp(p,table[j])<0)___(2)___;elsebreak;table[j+1]=___(3)___;}}(1)i<size(2)table[j+1]=table[j](3)p16、假定有定义为“structNODE{intdata;NODE*next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。voidf5(NODE*&L,inttable[],intn){ if(n<=0){L=NULL;return;} L=newNODE;//生成附加的头结点 inti=0; NODE*p=L; while(___(1)___){ p=p->next=___(2)___; p->data=___(3)___; i++; } p->next=NULL;//把最后一个结点的指针域置空 p=L; L=L->next;//使L指向链表的第一个带值的结点 deletep;}(1)i<n(2)newNODE(3)table[i]17、假定有定义为“structNODE{intdata;NODE*next;};”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。voidf6(NODE*&L,inttable[],intn){ L=NULL; if(n<=0)return; inti=0; NODE*p; while(___(1)___){ p=newNODE; p->data=___(2)___; p->next=L; ___(3)___; i++; }}(1)i<n(2)table[i](3)L=p18、假定有定义为“structNODE{intdata;NODE*next;};”,下面算法是依次显示输出以L为表头指针的链表中各结点的值。voidf7(NODE*L){ for(___(1)___;p!=NULL;___(2)___) cout<<___(3)___<<''; cout<<endl;}(1)NODE*p=L(2)p=p->next(3)p->data19、假定有定义为“structNODE{intdata;NODE*next;};”,下面算法是把以L为表头指针的链表中各结点依次按相反顺序链接并返回新链表的表头指针。NODE*f8(NODE*L){ if(L==NULL)returnNULL; NODE*p=NULL,*q=L,*t; while(q!=NULL){ t=q; q=___(1)___; t->next=___(2)___; p=t; } ___(3)___;}(1)q->next(2)p(3)returnp四、写出程序运营结果1.#include<iostream.h>#include<stdlib.h>voidmain(){ inta[8]={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(ma

温馨提示

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

评论

0/150

提交评论