您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 南航C++(A)试卷
南京航空航天大学第1页(共11页)《C++语言程序设计》考试试题试卷代号:A班号学号姓名题号一二三四五六七八九十总分得分一.选择题:(每题2分,共30分,请将正确答案写在题号左边)1.在下列成对的表达式中,运算结果类型相同的一对是()A.7/2和7.0/2.0B.7/2.0和7/2C.7.0/2和7/2D.7.0/2.0和7.0/22.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是()A.(x=1)&&(x=10)&&(x=200)&&(x=210)B.(x=1)||(x=10)||(x=200)||(x=210)C.(x=1)&&(x=10)||(x=200)&&(x=210)D.(x=1)||(x=10)&&(x=200)||(x=210)3.使用值传递方式将实参传给形参,下列说法正确的是()A.引用类型形参不分配内存空间,仅仅是实参的别名B.引用类型形参分配内存空间,形参与实参占用不同的内存空间C.指针类型形参分配内存空间,形参接受实参传递的数值D.指针类型形参不分配内存空间,仅仅是实参的别名4.若有宏定义:#defineMOD(x,y)x%y则执行以下语句后输出为()intz,a=15,b=100;z=MOD(b,a);coutz++;A.11B.10C.6D.宏定义不合法5.若有以下定义和语句,则对数组元素a[1][2]的正确引用为()。inta[2][3],(*p)[3];p=a;A.(*(p+1))[2]B.*p[1][2]C.*(p+1)[2]D.*(p+1)+2本题分数30得分第2页(共11页)6.内联函数的特点是()A.减少代码量,加快访问速度B.减少代码量,减缓访问速度C.增加代码量,减缓访问速度D.增加代码量,加快访问速度7.C++类中定义的成员默认访问属性为()A.publicB.privateC.protectedD.friend8.类的私有成员可在何处被访问()A.本类的成员函数中B.本类及派生类的成员函数中C.通过对象名在任何位置D.不可访问9.对类A,拷贝构造函数的原型是()A.A::A(constA&);B.A::A(constA*);C.A::A(constA);D.A::A();10.下列关于析构函数描述正确的是()A.可以重载B.函数体中必须有delete语句C.返回类型必须是void类型D.不能指定返回类型11.如果类A被声明成类B的友元,正确的是()A.类A的成员函数即为类B的成员函数B.类B的成员函数即为类A的成员函数C.类A的成员函数不可以访问类B的成员D.类B不一定是类A的友元12.this指针存在的目的是()A.保证基类公有成员在派生类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在派生类中可以被访问D.保证基类私有成员在派生类中可以被访问13.在公有继承的情况下,允许派生类直接访问的基类成员包括()A.只能是公有成员B.公有成员和保护成员C.公有成员、保护成员和私有成员D.只能是保护成员14.下列关于虚函数的描述中,正确的是()A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中采用virtual说明一个虚函数后,派生类中相同原型的函数也是虚函数D.派生类中的虚函数必须与基类中相同函数名的虚函数具有不同的参数个数或类型15.下列关于运算符重载的描述中,正确的是()A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.一元运算符只能作为成员函数重载第3页(共11页)C.二元运算符重载为非成员函数时,参数表中有一个参数D.C++中可以重载所有的运算符二.写出下列程序的运行结果(每题3分,共24分)1.#includeiostream.hvoidmain(){intx=4;if(x++5)coutx;elsecoutx--;}程序运行结果为:。2.#includeiostream.hvoidfun(int&x,inty,int*z){intt=y;x=*z;*z=t;}voidmain(){inta[3]={23,42,56};fun(a[0],a[1],&a[2]);couta[0],a[1],a[2]endl;}程序运行结果为:。3.#includeiostream.hintdtoh(intc[],intn){inti=0;while(n){c[i++]=n%16;n/=16;}return(i);}voidmain(){intc[20],n=698,i;i=dtoh(c,n);for(i--;i=0;i--)if(0=c[i]&&c[i]=9)coutchar(c[i]+'0');elsecoutchar(c[i]-10+'A');}程序运行结果为:。本题分数24得分第4页(共11页)4.#includeiostream.h#includestring.hclassStudent{charNum[10];char*Name;intScore;public:Student(char*nump,char*namep,intscore){if(nump)strcpy(Num,nump);elsestrcpy(Num,);if(namep){Name=newchar[strlen(namep)+1];strcpy(Name,namep);}elseName=0;Score=score;coutConstructorCalled!\n;}~Student(){if(Name)delete[]Name;coutDesturctorCalled!\n;}voidShow(){coutNum'\t'Name'\t'Scoreendl;}};voidmain(){Studenta(0409204,George,90);a.Show();}程序运行结果为:。5.#includeiostream.hclassA{intnum1;staticintnum2;public:A(){num1=1;num2--;coutnum1'\t'num2endl;}staticintgetnum(A&n1){returnn1.num1+num2;}};intA::num2=5;voidmain(){An1,n2;coutA::getnum(n1)endl;}程序运行结果为:。第5页(共11页)6.#includeiostream.hclassA{protected:intx;public:A(inta=0){x=a;}voidShow(){coutA:x=x'\n';}};classB:publicA{protected:intx;public:B(inta,intb):A(a){x=b;}voidShow(){coutB:x=xendl;}};voidmain(void){Bb(2,8);b.A::Show();b.Show();}程序运行结果为:。7.#includeiostream.hclassSample{intx,y;public:Sample(inta=0,intb=0){x=a;y=b;coutx','ydefaultconstructor\n;}Sample(Sample&s){x=s.x;y=s.y;coutx','ycopyconstructor\n;}~Sample(){coutx','ydestructor\n;}voidadd(){x+=10;y+=10;}};voidmain(){Samplea(1,2);Sampleb=a;Sample*ptr=newSample(2,3);ptr-add();deleteptr;}程序运行结果为:。第6页(共11页)8.#includeiostream.hclassA{intx;public:A(){x=10;}virtualvoidprint(){cout”x=”x’\t’;}};classB:publicA{inty;public:B(){y=20;}voidprint(){cout”y=”y’\t’;}};classC:publicA{intz;public:C(){z=30;}voidprint(){cout”z=”z’\n’;}};voidmain(){Aa,*pa;Bb;Cc;pa=&a;pa-print();pa=&b;pa-print();pa=&c;pa-print();}程序运行结果为:。三.完善程序(每空2分,共16分)1.以下程序是用选择法对对数组a中的元素按由小到大顺序排序。请填空:#includeiostream.hvoidsort(inta[],intn){inti,j,p,t;for(i=0;in-1;i++){(1);for(j=i+1;jn;j++)if((2))p=j;if(p!=i){t=a[i];a[i]=a[p];a[p]=t;}}}voidmain(){inta[10]={2,6,9,4,1,7,14,18,56,5},i,n=10;(3);for(i=0;in;i++)couta[i];}本题分数16得分第7页(共11页)2.请完善程序,实现链表操作:#includeiostream.hclassNode{intdata;(4);public:friendclassList;};classList{Node*head;public:List(intd){head=newNode;head-data=d;head-next=NULL;}List(){head=NULL;}voidprint()//输出链表{Node*p;p=head;while(p!=NULL){coutp-data'\t';(5);}}~List(){while(head){Node*p=head;head=head-next;deletep;}}};voidmain(){Lista(100);a.print();}3.将数值1~100及其平方根写入文件sqrttable.txt#includeiostream.h(6)#includemath.hvoidmain(){doublex;ofstreamout;(7);for(x=1;x=100;x++)outx'\t'sqrt(x)endl;(8);}第8页(共11页)四.编程题(每题10分,共30分)1.编写一个函数voidmy_strcpy(chars1[],chars2[]),将数组s2中的字符串复制到数组s1中。要求:(1)必须自己编写函数实现字符串复制,不可调用系统strcpy函数。(2)在主函数中输入两个字符串,调用my_strcpy函数实现字符串复制,并在主函数中将复制后的字符串s1的内容输出。2.定义平面点Point类,用友元函数分别实现点类的前置++和后置++运算符的重载。要求:(1)定义平面点类(Point):私有数据成员:intx,y;构造函数:完成点的初始化友元函数:实现前置++运算符的重载友元函数:实现后置++运算符的重载函数:在屏幕上显示点的坐标(2)在主函数中建立4个Point对象p1,p2,p3,p4。p1的默认值为(2,3),在生成p2对象的时候,使用p1初始化p2对象。分别使用重载运算符计算++p1和p2++的值,将计算结果先后赋值给p3和p4对象,最后分别输出p1,p3和p2,p4的值。3.定义直角坐标系上的一个点Point类,并作为基类,派生出描述一个直线Line类(两点坐标确定一条直线),再派生出一个矩形Rectangle类(左上角和右下角坐标确
本文标题:南航C++(A)试卷
链接地址:https://www.777doc.com/doc-6749557 .html