C++语言程序设计复习题一、单选题1.在定义函数的格式类型修饰符函数名(形式参数表)函数体;中,函数体可以是()。A、基本语句B、复合语句C、空语句D、语句序列2.A>B&&A<=B的值()。A、为trueB、为falseC、与A>B的值相同D、与A<=B的值相同3.每一个实在参数就是一个()。A、表达式B、常量C、变量D、函数调用4.假定AB为一个类,则该类的拷贝构造函数的声明语句为________。AAB&(ABx);BAB(ABx)CAB(AB&x);DAB(AB*x)5.对于结构中定义的成员,其隐含访问权限为________。ApublicBprotectedCprivateDstatic6.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为________。Aios::inBios::outCios::in|ios::outD没有7.在PC机中运行的C++语言程序,char类型的数据占字节。A、1B、2C、3D、48.指出下列哪种基本类型是错误的B。A、floatB、integerC、charD、long9.若a,b,c均为整型变量,则表达式a=2,b=a+2,c=0的值为。A、不定B、2C、4D、010.设chart=’A’;则表达式5+0.6+t值的数据类型为。A、intB、floatC、不确定D、double11.以下为不正确的if语句。A、if(xy);B、if(x==y)x+y;C、if(x!=y)cinxelseciny;D、if(xy){x++;y++;}12.指向数组元素为整型的一维数组的指针变量的定义是。A、int*p()B、int(*p)()C、int*p[4]D、int(*p)[4]13.以下关于switch语句和break语句的描述中不正确的是。A、break语句不能用于循环语句和switch语句外的任何其它语句B、switch语句中使用break语句或continue语句的作用相同C、在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环D、在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。14.下列关于函数定义的说法,正确的是。A、函数定义时,可以嵌套B、函数定义不可以嵌套,但可以嵌套调用C、主函数main()内可以定义函数D、函数定义可以嵌套,调用也可以嵌套。15.若有以下说明语句inta[3][4]={2,3,4,5,3,4,5,6,4,5,6,7};则正确对数组元素引用为。A、*(a+1)B、*(a[3]+2)C、a[1]+3D、a[0][0]16.若定义如下的共同体类型变量x,则x所占用的内存字节数为(以IBMPC机为例)uniondata{inti;charch;doublef;}x;A、7B、11C、8D、10二、填空题1.应用程序TEST.CPP中只有一个函数,这个函数的名称是main。2.5|6,5&6和5^6的值分别是7,4和3。3.不借助于其他变量交换x和y两个变量的值,应顺序执行的三个赋值语句是x=x+y,y=x-y和x=x-y。4.下面的语句显示输出8行8列数组h的主对角线上的所有元素,请补充完整:for(i=0;i8;i++)couth[i][i]'';5.若一函数是以return;结束运行的,说明该函数是无参函数。6.若正常执行了如下语句:intm[20],*p1=&m[5],*p2=m+17,n;n=p2-p1;则n的值为12。7.已知'A'一'Z'的ASCII码为65—90,当执行charch=14*5+2;coutchendl;语句序列后,得到的输出结果为H。8.float和double类型的长度分别为4和8。9.表达式x=x+l表示成增量表达式为x++。10.假定p所指对象的值为36,p+l所指对象的值为49,则*++p的值为49。11.假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为*(x.a)。12.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的函数体实现。13.在C++程序中,语句之间必须用;分隔。14.在C++程序中,=运算符优先级最低。15.在C++语言中,在IBMPC机环境下,double型数据占8字节。16.若k为int型变量,则下列语句的输出为16。k=017;cout++k;17.表达式b*b-4*a*c0是判断一元二次方式ax2+bx+c=0有实根的表达式。18.表达式(b=10)&&(c=0)的值为0。19.已知a的ASCII的十进制代码为97,则表达式10+15.2-27*(‘a’-‘b’)的值为52.2。20.在C++语言中,&作为双目运算符时表示的是按位与,而作为单目运算时表示的是引用。21.一个函数由函数名和函数体两部分构成。22.C++在执行过程中不检查数组是否越界。23.C++语言规定,调用一个函数时,实参数变量与形参数变量之间的数据传递是。24.指针变量的指针是地址。25.结构体变量中的成员的引用一般形式:结构变量名.成员名。26.写出满足AB则把A+B赋给M的if语句if(AB)M=A+B。27.写出指向int型变量的指针变量p的一个定义语句:int*p。三、给出下列程序运行后的输出结果1.#includeiostream.hvoidSB(charch){switch(ch){case'A':case'a':coutwell!;break;case'B':case'b':coutgood!;break;case'C':case'c':coutpass!;break;default:coutbad!;break;}coutendl;}voidmain(){chara[6]=Abcaf;for(inti=0;a[i];i++)SB(a[i]);}答案:well!good!pass!well!bad!2.#includeiostream.hvoidmain(){inta[10]={36,25,48,14,55,40,72,40,86,27};intb1,b2;b1=b2=a[0];for(inti=1;i10;i++)if(a[i]b1){if(b1b2)b2=b1;b1=a[i];}coutb1''b2endl;}答案:86723.#includeiomanip.hvoidmain(){inta[8]={3,5,7,9,11,13,15,17};int*p=a;for(inti=0;i8;i++){*p+=10;coutsetw(5)*p++;if((i+1)%3==0)coutendl;}}答案:13152719212325274.#includeiomanip.hvoidLE(int*a,int*b){intx=*a;*a=*b;*b=x;cout*a''*bendl;}voidmain(){intx=10,y=25;LE(&x,&y);coutx''yendl;}答案:251025105.#includeiostream.hclassA{inta,b;public:A(){a=b=0;}A(intaa,intbb){a=aa;b=bb;couta''bendl;}};voidmain(){Ax,y(2,3),z(4,5);}答案:(下面是四个数,中间有空格)23456.#includeiostream.hvoidmain(){intm=3,x=4,y=4,z=7;m=(mx)?x++:m;m=(my)?y++:m;m=(mz)?z++:m;cout“m=”mendl”x=”xendl”y=”yendl”z=”z;}程序运行后的输出结果为:答案:m=7x=5y=4z=87.#includeiostream.hvoidsort(intx,inty,intz){intt;if(xy){t=x;x=y;y=t;}if(xz){t=x;x=z;z=t;}if(yz){t=y;y=z;z=t;}cout“x=”x’‘”y=”y’‘”z=”z;}voidmain(){inta,b,c;cinabc;cout“a=”a’‘”b=”b’‘”c=”c;sort(a,b,c);cout“a=”a’‘”b=”b’‘”c=”c;}假设输入为:1068CR则程序运行后的输出结果为:参考答案:a=10b=6c=8x=6y=8z=10a=10b=6c=88.#includeiostream.hvoidprnstr(char*str,intm,intn){inti;for(i=1;im;i++){cout“*”;str++;}for(i=1;(i=n)&&(*str);i++)court*str++;while(*str){cout“*”;str++;}coutendl;}voidmain(){char*p=“information”;prnstr(p,3,4);}程序运行后的输出结果为:答案:**form*****四、写出下列每个函数的功能1.intCount(doublea[],intn){doublem=0;inti;for(i=0;in;i++)m+=a[i];m=m/n;intc=0;for(i=0;in;i++)if(a[i]=m)c++;returnc;}答案:计算并返回参数数组中大于等于参数数组中所有元素平均值的元素个数2.longfact(longn){if(n=1L)return1L;returnn*fact(n-1L);}答案:通过函数递归调用,计算并返回参数n的阶乘3.#includeiostream.hvoidWA(inta[],intn){for(inti=0;in-1;i++){intk=i;for(intj=i+1;jn;j++)if(a[j]a[k])k=j;intx=a[i];a[i]=a[k];a[k]=x;}}答案:对参数数组中的元素进行升序排序4.#includeiomanip.h#includefstream.hvoidJB(char*fname)//可把以fname所指字符串作为文件标识符的文件称为fname文件,//假定该文件中保存着一批字符串,每个字符串的长度均小于20。{ifstreamfin(fname);chara[20];inti=0;while(fina){coutaendl;i++;}fin.close();couti=iendl;}答案:依次把参数fname所指的文件中字符输入到字符串数组a中,并输出文件中字符个数五、编程题1.设计一程序,它输入一个整数,判断它是否是整数序列32,52,31,86,3,44,11,7,55,63中的一个;若是,显示该整数在序列中的序号(注:最小序号是1),否则显示0。答案:#includeiostream.hintgetno(intval){inta[]={32,52,31,86,3,44,11,7,55,63};for(inti=0;i10;i++)if(val==a[i])return(i+1);return(0);}voidmain(){intval;cinval;coutgetno(val);}2.编写一个程序,统计输入的一行字符中数字、空格及其它字符分别有多少个。答案:#includeiostream.hvoidmain(){inti,eng=0,numb=0,blan=0,others=0;chara[100];cin.getline(a,100);for(i=0;a[i