《C++程序设计期末考试卷(样卷3)》由会员分享,可在线阅读,更多相关《C++程序设计期末考试卷(样卷3)(11页珍藏版)》请在金锄头文库上搜索。
1、注意:将答案写在答题纸上。一. 选择题(以下每题有四个选项可供选择,请选择最正确的一个答案,将标号填入答题纸上)1、B能用作用户自定义标识符。A)friendB)_varC)3xyzD)Float2、面向对象程序设计将数据与放在一起,作为一个相互依存、不可分割的整体来处理。A) 对数据的操作B)信息C)数据隐藏D)数据抽象3、一个类的析构函数B。A) 唯一的B)允许重载C)至多可有两个D)只能是缺省的4、类型修饰符unsigned修饰A类型是错误的。A)charB)intC)longintD)float5、若执行完以下语句,i和j的值分别为C。inti;int&j=i;i=5;j=i+
2、1;A)5,5B)5,6C)6,6D)6,56、对于语句int*pa5:的描述,下列说法正确的是D。A) pa是一个指向数组的指针,所指向的数组是5个int型元素;B) pa是一个指向某数组中第5个元素的指针,该元素是int型变量;C) pa表示某个数组的第5个元素;D) pa是一个具有5个元素的指针数组,每个元素都是一个int型指针。7、假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下语句后,k的值为C。inti=100;int*ip=&i;intk=*ip;A)0x12345678B)0x21850043C)100D)不确定8、在C+中,一个
3、函数带有参数说明时,则参数的默认值应该在中给出。A)函数定义B)函数声明C)函数定义或声明D)函数调用9、指针可以用来表示数组元素,若已知语句:inta37;则下列表示中错误的是A。A)*(a+1)5B)*(*a+3)C)*(*(a+1)D)*(&a00+2)10、有如下定义:inta5,*p;p=a;则下列描述错误的是B。A)表达式p=p+1合法的B)表达式a=a+1是合法的C)表达式p-a是合法的D)表达式a+2是合法的11、#include<iostream.h>inta=3;intf(int);voidmain()inta=5;f(a);cout<<a=
4、<<a<<endl;voidf(intb)b=4;a+=b;程序的输出结果是C。A)3B)5C)7D)912、执行下列程序段时,输出B。ints1=0,s2=0,s3=0,s4=0;for(intt=1;t<=4;t+)switch(t)case4:s1+;break;case3:s2+;break;case2:s3+;default:s4+;cout<<s1<<”,”<<s2<<”,”<<s3<<”,”<<s4<A)语法出错B)1,1,1,2C)1,2,3,2D)1,1,2
5、,213、下列各类函数中,C不是类的成员函数。A)构造函数B)析构函数C)友元函数D)拷贝构造函数14、有关析构函数的说法不正确的是A。A) 析构函数有且只有一个B) 析构函数无任何函数类型C) 析构函数和构造函数一样可以有形参D) 析构函数的作用是在对象被撤销时收回先前分配的内存空间15、通常拷贝构造函数的参数是C。A) 某个对象名B) 某个对象的成员名C) 某个对象的引用名D) 某个对象的指针名16、若类A和类B的定义如下:classAinti,j;public:voidget();classB:publicAintk;public:voidmake();voidB:make()k=i*j
6、;则上述定义中,A_是非法的表达式。A)voidget();B)intk;C)voidmake();D)k=i*j;二、填空题1、数学式子X2+y2写成C+语言表达式是1。2、如果a=1,b=2,c=3,d=4,则条件表达式alt;b?a:clt;d?c的值为2。3、设有函数定义:intf1(void)return100,200;,调用f1时,函数返回值为。4、C+使用cin和cout进行输入输出操作的程序必须包含头文件4。5、用C+表达式描述命题“a与b中有一个小于c”:。6、函数调用语句fun(a+b,(x,y),fun(n+k,d,(a,b)中实参的个数为。7、定义内联函数所用的关键字7
7、,定义友元所用的关键字为8。8、执行常量定义语句constintsize=100*sizeof(int);后,符号常量size的值为。9、设m=1,n=2,则表达式m+=n和+m=n的值分别为10和11。10、任何类中允许有12、13、14三种类型的数据,数据和成员函数的默认类型为15。11、C+支持面向对象程序设计的四个要素是:封装性、抽象、16和17。三、阅读程序,写出程序运行结果1、写出下列程序的运行结果。#include<iostream.h>classCSamplepublic:CSample();voidDisplay();private:inti;staticintk
8、;CSample:CSample()i=0;k+;voidCSample:Display()cout<<”i=”<<i<<”,”<<”k=”<<k&intCSample:k=0;voidmain()CSamplea,b;a.Display();b.Display();程序的输出结果为122、写出下列程序的运行结果。#include<iostream.h>voidsplitfloat(floatx,int*p1,float*p2)*p1=(int)x;*p2=x-*p1;voidmain()intn;floatx,f;cin
9、>>x;splitfloat(x,&n,&f);cout<<”n=”<<n<<”,”<<”f=”<<f<&输入3.1415,输出结果为33、写出下列程序的运行结果。#include<iostream.h>classstudentpublic:student(char*pName=“noname”,intssID=0):id(ssID)cout<<“student:”<<pname<<endl;private:intid;lt;<endl;lt;en
10、dl;voidmain()students(“Randy”,9818);studentt(“Jenny”,9819);输出结果为4。4、写出下列程序的运行结果。#include<iostream.h>classSamplepublic:Sample()coutIt构造函数:ltndllt;e;voidfn(inti)staticSamplec;cout<<”i=”<<i<<endl;voidmain()fn(10);fn(20);运行结果为:7。5、#include<iostream.h>classBpublic:B();B(inti
11、,intj);voidprintb();private:inta,b;classApublic:A();A(inti,intj);voidprinta();private:Bc;A:A(inti,intj):c(i,j);voidA:printa()c.printb();B:B(inti,intj)a=i;b=j;voidB:printb()cout<<”a=”<<a<<”,”<<”b=”<<b<<endl;voidmain()Am(7,8);m.printa();输出结果为a=7,b=8四、改错题:指出下列程序的错误1、
12、#include<iostream.h>classApublic:voidA(inti=0)m=i;voidshow()cout<<m;voidA()private:intm;intmain()Aa(5);a.m+=10;a.show();12312、#include<iostream.h>classApublic:voidsetA(int);voidshowA();private:inta;classBpublic:voidsetB(int);voidshowB();private:intb;classC:publicA,privateBpublic:vo
13、idsetC(int,int,int);voidshowC();private:intc;voidA:setA(intx)a=x;voidB:setB(intx)b=x;voidC:setC(intx,inty,intz)SetA(x);SetB(y);c=z;intmain()Cobj;obj.setA(5);obj.showA();obj.setC(6,7,9);obj.showC();obj.setB(6);obj.showB();return0;(私有继承中,派生类对象访问了基类成员)(成员函数没有定义)五、程序填空:下面程序的功能是:从键盘上输入若干个整数按升序排序后输出;#incl
14、udelt;iostream.hgt;voidsort(inta,intn)for(inti=0;i<n-1;i+)for(intj=i+1;j<n;j+)if(1)intt=ai;ai=aj;aj=t;voidInput(int*p,intn)coutIt输入It“个整数。”ltltItendlfor(inti=0;ilt;n;i+)cingt;gt;2;voidOutput(int*p,intn)for(inti=0;ilt;n;i+)coutlltlt/tvoidmain(void)intx200,intnum;coutlt输入安排序数的个数:”cin>>num;Input(x,num);Sort(x,num);Out