您好,欢迎访问三七文档
注:答案可能会有错误,同学们在看的时候要注意自己判断,正好也当复习了哈~~祝大家考试顺利!!一、选择题(1)已知下列语句中的x和y都是int型变量,其中不正确的语句是DA)y+=++x;B)++x+=y;C)y=x++;D)x++=y;(2)若x是一个bool型变量,y是一个值为100的int型变量,则表达式!x&&y0的值[]。DA)为trueB)为falseC)与x的值相同D)与x的值相反(3)执行语句序列intn;cinn;switch(n){case1:case2:cout'X';case3:case4:cout'Y';break;default:cout'Z';}时,不可能出现的情况是[]。AA)显示:XB)显示:YC)显示:ZD)显示:XY(4)执行语句序列intx;cinx;if(x250)cout'X';if(x250)cout'Y';elsecout'X';时,不可能出现的情况是[]。CA)显示:XB)显示:YC)显示:XYD)显示:XX二、填空题(1)执行intx=2,y=7;y-=++x-2;后,x的值是__3__,y的值是__6__。(2)执行intx=9,y=-5;y+=x--+2;后,x的值是_8____,y的值是__6____。(3)与等价的for语句是:_________。for(i=0;i100;i++)couti;(4)与i=100;while(i0)couti--;等价的for语句是:___________for(i=100;i0;i--)couti;一、选择题(1)要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是[]。AA)intvect[]={30,50,-88};B)intvect[]={30,50,-88,0,0};C)intvect[5]={30,50,-88};D)intvect[5]={30,50,-88,0,0};(2)已知某应用系统中已经定义了函数fun,其原形是intfun(char='A');则下列函数中,可以在同一系统中加以重载的是[]。CA)intfun();B)intfun(char);C)intfun(char,int);D)intfun(char,double=0.0);(3)若指针p定义为constchar*p=Luchy!;则[]。AA)p所指向的数据不可改变,p在定义时可以不初始化。B)p所指向的数据不可改变,p在定义时必须初始化。C)p本身不可改变,p在定义时可以不初始化。D)p本身不可改变,p在定义时必须初始化。(4)已知数组A和指针p定义为:intA[20][10],*p;,要使p指向A的首元素,正确的赋值表达式是[]。DA)p=&A或p=A[0][0]B)p=A或p=&A[0][0]C)p=&A[0]或p=A[0][0]D)p=A[0]或p=&A[0][0](5)已知函数func的原形是doublefunc(doouble*pd,int&ri);变量x和y的定义是doublex;inty;把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是[]。BA)func(x,&y);B)func(&x,y);C)func(&x,&y);D)func(x,y);(6)若变量p的定义为int**p=newint*(newint[5]);,则释放所申请到的动态空间的语句是:_______________。delete[]*p,p(7)要使字符串变量str具有初值Lucky,正确的定义语句是[]。CA)charstr[]={'L','u','c','k','y'};B)charstr[5]={'L','u','c','k','y'};C)charstr[]=Lucky;D)charstr[5]=Lucky;(8)已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是[]。AA)intMAT[][10]B)intMAT[3][]C)intMAT[10][3]D)intMAT[][](9)若指针p定义为char*constp=Luchy!;则[]。DA)p所指向的数据不可改变,p在定义时可以不初始化。B)p所指向的数据不可改变,p在定义时必须初始化。C)p本身不可改变,p在定义时可以不初始化。D)p本身不可改变,p在定义时必须初始化。(10)在下列表达式中,与下标引用A[i][j]不等效的是[]。AA)*(A+i+j)B)*(A[i]+j)C)*(*(A+i)+j)D)(*(A+i))[j](11)要使语句p=newdouble[20];能够正常执行,变量p应定义为[]。DA)doublep[20];B)doublep;C)double(*p)[20];D)double*p;二、填空题(1)已知数组A是一个有25个单元的int型数组,下面的语句试图按相反的顺序显示这25个单元中的整数,请补充完整:for(inti=24;i=0;i--)coutA[i]'';for(inti=24;;)cout'';(2)若p是double型指针变量,其指针值为8080,则p-2的指针值为。8064(4)已知数组A定义为longA[3][10];,P是一个一维数组;要使下标访问A[i][j]与P[i][j]等效,数组P应定义为:___________。long*p[]={A[0],A[1],A[2]};long*p[]={&A[0][0],&A[1][0],&A[2][0]};(5)已知函数reverse的原形是:char*reverse(constchar*);,pf是指向reverse的指针,则pf的定义是:_____________________。char*(*pf)(constchar*)=reverse;(6)若变量p的定义为int**p=newint*(newint[5]);,则释放所申请到的动态空间的语句应是:_____________________。delete[]*p,p(7)已知数组A是一个有25个单元的int型数组,下面的语句序列试图求出这25个整数之和,并将结果显示在屏幕上,请补充完整:for(inti=0;i25;i++)s+=A[i];ints=0for(inti=0;;);couts;(9)p1、p2都是字符指针,p1指向字符串GOOD_MORNING,p2-p1的值为8,则执行cout*p2;时显示在屏幕上的是___________________。N(10)已知执行语句for(inti=0;i3;i++)coutCOLOR[i]',';后屏幕上显示的是:Red,Blue,Yello,由此可知,一维数组COLOR的定义是:_____________。char*COLOR[]={Red,Blue,Yello};其中[]中可以有3或其他比3大的整数。(11)已知指针变量pf的定义是:char*(*pf)(int)=ITOS;,则函数ITOS的原形是:_____________________。char*ITOS(int);(12)若变量p的定义为int&p=*newint;,则释放所申请到的动态空间的语句应是:__________________________。delete&p;三、程序分析题:读懂程序,描述程序的输出结果(1)#includeiostream.hvoidhalfSort(intdata[],intleadings,intsize){for(inti=0;ileadings;i++){ints=i;for(intj=i+1;jsize;j++)if(data[j]data[s])s=j;if(s!=i){intx=data[i];data[i]=data[s];data[s]=x;}}}voidmain(){inta[]={21,12,53,74,25,16,7,38};halfSort(a,3,8);for(inti=0;i8;i++)couta[i]'';}程序输出结果:712167425532138(2)#includeiostream.hvoidhalfSort(intdata[],intleadings,intsize){for(inti=0;ileadings;i++){ints=i;for(intj=i+1;jsize;j++)if(data[j]data[s])s=j;if(s!=i){intx=data[i];data[i]=data[s];data[s]=x;}}}voidmain(){inta[]={21,12,53,74,25,16,7,38};halfSort(a,3,8);for(inti=0;i8;i++)couta[i]'';}程序输出结果:745338212516712四、程序设计题⑴函数voidMin_Max(intdata[],intsize);的参数data是一个具有size个元素的一维数组。Min_Max的功能是:调整存储于data中的整数序列的排列顺序,使得最小整数成为数组的第一个元素,最大整数成为数组的最后一个元素,其他整数应尽可能地保持在原来的位置上。例如,执行语句序列intA[]={88,33,55,22,44,99,77,66};#defineSIZE(sizeof(A)/sizeof(A[0]))Min_Max(A,SIZE);for(inti=0;iSIZE);i++)coutA[i]',';后,显示在屏幕上的应当是:22,33,55,88,44,66,77,99,请实现函数Min_Max。voidMin_Max(intdata[],intsize){intmin=0,max=size-1;for(inti=0;isize;i++)if(data[i]data[min])min=i;elseif(data[i]data[max])max=i;if(min0){intd=data[0];data[0]=data[min];data[min]=d;if(max==0)max=min;}if(maxsize-1){intd=data[size-1];data[size-1]=data[max];data[max]=d;}}⑵函数char*allTrim(char*str);的功能是去除参数字符串str的前导空格和尾部空格(如果有的话),其返回值就是参数字符串str。例如,执行下面的语句序列chars[]=ABCDXYZ;couts'!';coutendlallTrim(s)'!';coutendls'!';后,显示在屏幕上的应当是:ABCDXYZ!ABCDXYZ!ABCDXYZ!请实现函数allTrim。char*allTrim(char*str){for(inti=strlen(str)-1;i=0&&*(str+i)=='';i--)*(str+i)='\0';char*p1=str,*p2=str;while(*p2=='')p2++;while(*p2)*p1++=*p2++;*p1='\0';returnstr;}一、选择题(1)执行下列语句序列structAA{intival;charcval;};structBB{intival;AAra;};structCC{intival;AAra;BBrb;};CCrc={66,{rc.ival+1,rc.ra.ival+1},{69,{70,71}}};coutrc.ival','rc.ra.ival','rc.rb.ra.ival;后,显示在屏幕上的是[]。CA)66,67,68B)67,68,69C)66,67,70D)67,69,70(2)类的默认的无参构造函数[]。DA)在任何情况下都存在
本文标题:C++ 习题及答案
链接地址:https://www.777doc.com/doc-2904162 .html