C++试题.docx
- 文档编号:28541499
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:20
- 大小:21.95KB
C++试题.docx
《C++试题.docx》由会员分享,可在线阅读,更多相关《C++试题.docx(20页珍藏版)》请在冰豆网上搜索。
C++试题
第一套
一、单选题
1、在每个C++程序中都必须包含有这样一个函数,该函数的函数名为a。
A.mainB.MAINC.nameD.function
2、设x和y均为bool量,则x&&y为真的条件是a。
A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假
3、下面的哪个保留字不能作为函数的返回类型?
c。
A.voidB.intC.newD.long
4、假定a为一个整型数组名,则元素a[4]的字节地址为ac。
A.a+4B.a+8C.a+16D.a+32
5、假定AB为一个类,则执行“ABa(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为b。
A.3B.4C.6D.9
6、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:
b。
A.ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)
C.operator+(ABa)D.AB&operator+()
二、填空题)
1、C++语言中的每条基本语句以;作为结束符,每条复合语句以}
作为结束符。
2、执行“cout< 3、float和double类型的大小分别为4和8。 4、算术表达式对应的C++表达式为。 5、关系表达式x+y>5的相反表达式为。 6、假定一个一维数组的定义为“char*a[8];”,则该数组所含元素的个数为8,所占存储空间的字节数为4。 7、变量分为全局和局部两种,局部变量没有赋初值时,其值是不确定的。 8、假定a是一个二维数组,则a[i][j]的指针访问方式为*(a[i]+j)。 9、假定一个结构类型定义为 “structD{inta;union{intb;doublec;};D*d[2];};”, 则该类型的大小为20字节。 10、对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的函数体实现。 11、假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为20。 12、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为AB: : bb。 三、给出下列程序运行后的输出结果 1、#include voidSB(charch){ switch(ch){ case'A': case'a': cout<<"well! ";break; case'B': case'b': cout<<"good! ";break; case'C': case'c': cout<<"pass! ";break; default: cout<<"nad! ";break; } } voidmain(){ chara1='b',a2='C',a3='f'; SB(a1);SB(a2);SB(a3);SB('A'); cout< } 2、#include #include voidmain(){ Char*a[5]={"student","worker","cadre","soldier","peasant"}; char*p1,*p2; p1=p2=a[0]; for(inti=0;i<5;i++){ if(strcmp(a[i],p1)>0)p1=a[i]; if(strcmp(a[i],p2)<0)p2=a[i]; } cout< } 3、#include inta=5; voidmain() { inta=10,b=20; cout< {inta=0,b=0; for(inti=1;i<6;i++){ a+=i;b+=a; } cout< : a< } cout< } 4、#include intLB(int*a,intn){ ints=1; for(inti=0;i s*=*a++; returns; } voidmain(){ inta[]={1,2,3,4,5,6,7,8}; intb=LB(a,5)+LB(&a[3],3); cout<<"b="< } 5、#include #include structWorker{ charname[15];//姓名 intage;//年龄 floatpay;//工资 }; voidmain(){ Workerx; char*t="liouting"; intd=38;floatf=493; strcpy(x.name,t); x.age=d;x.pay=f; cout< } 6、#include classA{ inta; public: A(intaa=0){a=aa;} ~A(){cout<<"DestructorA! "< }; classB: publicA{ intb; public: B(intaa=0,intbb=0): A(aa){b=bb;} ~B(){cout<<"DestructorB! "< }; voidmain(){ Bx(5),y(6,7);//后定义的变量将先被释放 } 四、写出下列每个函数的功能 1、#include intSA(inta,intb){ if(a>b)return1; elseif(a==b)return0; elsereturn-1; } 2、floatFI(intn){ //n为大于等于1的整数 floatx,y=0; do{ cin>>x; n--;y+=x*x; }while(n>0); returny; } 3、template voidWE(Typea[],Typeb[],intn){ for(inti=0;i b[n-i-1]=a[i]; } 4、structStrNode{ charname[15];//字符串域 StrNode*next;//指针域 }; voidQB(StrNode*&f,intn){ if(n==0){f=NULL;return;} f=newStrNode; cin>>f->name; StrNode*p=f; while(--n){ p=p->next=newStrNode; cin>>p->name; } p->next=NULL; } 五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1.dat”中。 ******************************************************************************* ******************************************************************************* C++语言程序设计试题 答案及评分标准 (供参考) 2001年3月 一、单选题(每小题1分,共6分) 评分标准: 选对者得1分,否则不得分。 1、A2、A3、C4、C5、B6、B 二、填空题(每小题2分,共24分) 评分标准: 每题与参考答案相同者得2分,否则不得分。 1、: }2、C 3、484、(x*y*y)/(3*a)+4*b-1 5、x+y<=56、832 7、局部8、*(a[i]+j)或*(*(a+i)+j) 9、2010、初始化表函数体 11、1012、AB: : bb 三、给出下列程序运行后的输出结果(每小题6分,共36分) 评分标准: 每题与参考答案的数据和显示格式完全相同者得6分,否则酌情给分。 1、good! pass! bad! well! 2、workercadre 3、1020 15355 1020 4、b=240 5、liouting38493 6、DestructorB! 7 DestructorA! 6 DestructorB! 0 DestructorA! 5 四、写出下列每个函数的功能(每小题6分,共24分) 评分标准: 每题与参考答案的叙述含义相同者得6分,否则酌情给分。 1、比较两个整数a和b的大小,若a>b则返回1,若a==b则返回0,若a 2、求出从键盘上输入的n个常数的平方和并返回。 3、模板函数,把数组a的每个元素按逆序放入数组b中。 4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。 五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1.dat”中。 (10分) 评分标准: 见参考程序中的注释。 #include #include #include voidmain(){ ofstreamfout("a: xxk1.dat");//定义输出文件流并打开文件得2分 if(! fout){ cerr<<"文件没有打开! "< exit (1); }//可有可无 intx; cin>>x; while(x! =-1){ fout< cin>>x; }//能够从键盘向文件正确输出数据得6分 fout.close();//关闭输出文件流得1分 } 第二套 一、选择题 1.由C++目标文件连接而成的可执行文件的缺省扩展名为。 A.cppB.exe C.objD.lik 2.在下面的一维数组定义中,哪一个有语法错误。 A.inta[]={1,2,3}B.inta[10]={0} C.inta[]D.inta[5] 3.在下面的函数声明中,存在着语法错误的是。 A.voidBC(inta,int)B.voidBD(int,int) C.voidBE(int,int=5)D.intBF(intx;inty) 4.假定AB为一个类,则该类的拷贝构造函数的声明语句为。 A.AB&(ABx)B.AB(ABx) C.AB(AB&)D.AB(AB*x) 5.对于结构中定义的成员,其隐含访问权限为。 A.publicB.protected C.privateD.static 6.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为。 A.ios: : inB.ios: : out C.ios: : int|ios: : outD.没有 二、填空题 1.执行“cout<<43<<’-‘<<18<<’=’<<43-18< 2.已知’A’~’Z’的ASCII码为65~90,当执行“charch=14*5+2;cout< 3.使用const语句定义一个标识符常量时,则必须对它同时进行初始化。 4.表达式x=x+1表示成增量表达式为++x。 5.若x=5,y=10,则x>y和x<=y的逻辑值分别为和。 6.执行“typedefintABC[10];”语句把ABC定义为具有10个整型元素的数组类型 。 7.假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p所指对象的值为26。 8.假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为a+(i*N)*sizeof(a[0][0])或a+i*sizeof(a[i]) 。 9.假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为*(p->b) 。 10.设px是指向一个类动态对象的指针变量,则执行“deletepx;”语句时,将自动调用该类的析构函数 。 11.若需要把一个函数“voidF();”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句: 。 12.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用 头文件。 三、下列程序运行后的输出结果 1.#include voidmain() { ints=0; for(inti=1;;i++){ if(s>50)break; if(i%2==0)s+=i; } cout<<"i,s="< } 2.#include voidmain() { chara[]="abcdabcabfgacd"; inti1=0,i2=0,i=0; while(a[i]){ if(a[i]=='a')i1++; if(a[i]=='b')i2++; i++; } cout< } 3.#include voidmain() { inta[9]={2,4,6,8,10,12,14,16,18}; for(inti=0;i<9;i++){ cout< if((i+1)%3==0)cout< } } 4.#include voidLE(int*a,int*b){ intx=*a; *a=*b;*b=x; cout<<*a<<''<<*b< } voidmain() { intx=10,y=25; LE(&x,&y);cout< } 5.#include classA{ inta,b; public: A(){a=b=0;} A(intaa,intbb){ a=aa;b=bb; cout< } }; voidmain() { Ax,y(2,3),z(4,5); } 6.#include template classFF{ TTa1,a2,a3; public: FF(TTb1,TTb2,TTb3){ a1=b1;a2=b2;a3=b3; } TTSum(){returna1+a2+a3;} }; voidmain() { FF cout< } 四、写出下列每个函数的功能 1.doubleSF(doublex,intn){ //n为大于等于0的整数 doublep=1,s=1; for(inti=1;i<=n;i++){ p*=x; s+=p/(i+1); } returns; } 2.floatFH(){ floatx,y=0,n=0; cin>>x; while(x! =-1){ n++;y+=x; cin>>x; } if(n==0)returny;elsereturny/n; } 3.#include voidWA(inta[],intn){ for(inti=0;i intk=i; for(intj=i+1;j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 试题