第1页共11页南昌大学2009~2010学年第一学期期末考试试卷试卷编号:(A)卷课程编号:T61050004课程名称:C++程序设计考试形式:闭卷适用班级:非计算机专业姓名:学号:班级:学院:专业:考试日期:2010、1、22题号一二三四五六七八九十总分累分人签名题分3010202020100得分考生注意事项:1、本试卷共8页,请查看试卷中是否有缺页或破损。如有立即举手报告以便更换。2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。一、单项选择题(每小题2分,共30分)得分评阅人1、C++程序从上机到得到结果的几个操作步骤依次是________。A.编译、编辑、连接、运行B.编辑、编译、连接、运行C.编译、运行、编辑、连接D.编辑、运行、编辑、连接2、设inta=15,b=26;,则cout(a,b);的输出结果是________。A.15B.26,15C.15,26D.263、x0&&x=10的相反表达式为________。A.x=0||x10B.x=0&&x10C.x=0||x=10D.x0&&x104、在下面循环语句中循环体执行的次数为________。inti=0,s=0;while(s20){i++;s+=i;}A.4B.5C.6D.75、在下面的二维数组定义中,正确的是________。A.inta[5][];B.inta[][5];C.inta[][3]={{1,3,5},{2}};D.inta[](10);说明:请将前面4个大题的答案写到答题卡上第2页共11页6、以下叙述中不正确的是________。A.在一个函数中,可以有多条return语句B.函数的定义不能嵌套,但函数的调用可以嵌套C.函数必须有返回值D.不同的函数中可以使用相同名字的变量7、为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择________。A.内联函数B.重载函数C.递归函数D.函数模板8、若用数组名作为函数调用的实参,传递给形参的是________。A.数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数9、类的构造函数是在定义该类的一个________时被自动调用执行的。A.成员函数B.数据成员C.对象D.友元函数10、设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是________。A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);C.intm=max(22,59,70);D.intm=max(59,max(22,70));11、对classpoint,如使用point*ptr=newpoint[2];创建对象数组,则删除此数组使用的语句是________。A.deleteptr[2];B.delete[]ptr;C.deleteptr[];D.delete[2]ptr;12、类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为________。A.未初始化B.等于a.xC.等于0D.随机13、假定一条定义语句为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为________。A.x=pa[3];B.x=*(a+3);C.x=a[3];D.x=*pa+3;14、假定k是一个double类型的变量,则关于变量p的正确定义语句为________。A.doublep=&k;B.int*p=&k;C.double&p=*k;D.char*p=”Thankyou!”;15、定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为________。A.int*p=newint[30];B.int*p=newint(30);C.int*p=new[30];D.*p=newint[30];第3页共11页二、判断题,对的画√,错的画×(每小题1分,共10分)得分评阅人()1、在说明语句inta(15),&b=a,*p=&a;中,b的值与*p的值是不相等的。()2、break语句也可以用于switch体内,它可退出switch语句。()3、在一个被调用函数中,一个return语句可返回多个值给调用函数。()4、宏定义命令是以分号结束的。()5、do-while循环语句的循环体至少执行一次。()6、函数形参的作用域是该函数的函数体。()7、静态类标识符在它的作用域之外是不存在的。()8、对象成员的表示与结构变量成员表示相同,使用运算符.或-。()9、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。()10、constchar*p说明了p是指向字符串的常量指针。三、填空题(每空2分,共20分)得分评阅人1、一个完整程序中必须有一个名为_【1】_的函数。2、程序中的预处理命令是指以___【2】___字符开头的命令。3、假定x=5,y=6,则执行表达式y*=x++计算后,y的值为____【3】___。4、为语句标号使用的C++保留字case和default只能用于___【4】___语句的定义体中。5、若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上___【5】_____关键字。6、若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上___【6】____和两个冒号分隔符。7、假定用户只为类AB定义了一个构造函数“AB(intaa,intbb=0){a=aa;b=bb;}”,则定义该类的对象时,其实参表中至多带有___【7】__个实参。8、完成下面类中的成员函数的定义。classpoint{private:intm,n;第4页共11页public:point(int,int);point(point&);};point::point(inta,intb){m=a;n=b;}point::point(__【8】_){m=t.m;n=t.n;}9、完成下面类中的成员函数的定义。classA{inta,b;public:A(intaa=0,intbb=0)__【9】___{}//分别用aa和bb对应初始化a和b};main(){Ax(5),y(x);//定义类A的对象x并用5初始化,同时定义y并用x初始化___【10】__;//定义p指针,使之指向对象x}四、阅读程序,写出各程序运行后的输出结果(每小题5分,共20分)得分评阅人1、#includeiostreamusingnamespacestd;voidfun(inta,int*b,int*c,int&d);voidmain(){inta1=10,a2=20,a3=30,a4=40;fun(a1,&a2,&a3,a4);cout”a1=”a1endl;cout”a2=”a2endl;cout”a3=”a3endl;cout”a4=”a4endl;}voidfun(inta,int*b,int*c,int&d){a++;b++;(*c)++;d++;return;}第5页共11页2、#includeiostream.hvoidmain(){inti,j,k;for(i=1;i=4;i++){for(k=1;k=4-i;k++)cout'';for(j=1;j=2*i-1;j++)cout'*';coutendl;}}3、#includeiostream.hclassCE{private:inta,b;intgetvalue(){return(ab?a:b);}public:intc;voidSetValue(intx1,intx2,intx3){a=x1;b=x2;c=x3;}intGetValue();};intCE::GetValue(){intd=getvalue();return(dc?d:c);}voidmain(){intx=5,y=12,z=8;CEex;ex.SetValue(x,y,z);coutex.GetValue()endl;ex.SetValue(x+y,y-z,20);coutex.GetValue()endl;第6页共11页}4、#includeiostream.hclassPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){coutPoint:x''y'\n';}~Point(){coutPointdestructor!\n;}};classCircle{Pointcenter;//圆心位置intradius;//半径public:Circle(intcx,intcy,intr):center(cx,cy),radius(r){coutCircleradius:radius'\n';}~Circle(){coutCircledestructor!\n;}};voidmain(){Circlec(3,4,5);}五、程序设计题(每小题10分,共20分)得分评阅人1、设计一程序,它输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。第7页共11页2、定义一个处理日期的类CDate,它有3个私有数据成员:Year,Month,Day和若干个公有成员函数,并实现如下要求:①构造函数重载;②成员函数设置缺省参数;③定义一个成员函数PrintDate来打印日期;④定义一个非静态成员函数SetDate来设置日期。第8页共11页第9页共11页C++程序设计答题卡1、单项选择题(每小题2分,共30分)得分评阅人2、判断题(每小题1分,共10分)得分评阅人3、填空题(每空2分,共20分)得分评阅人【1】【2】【3】【4】【5】【6】【7】【8】【9】【10】4、程序阅读题(每小题5分,共20分)得分评阅人1、2、3、4、12345678910111213141512345678910第10页共11页南昌大学2009~2010学年第一学期期末考试试卷C++程序设计(A卷)参考答案一、单项选择题(每小题2分,共30分)二、判断题(每小题1分,共10分)三、填空题(每空2分,共20分)【1】main【2】#【3】30【4】switch【5】const【6】类名【7】两(或2)【8】point&t【9】:a(aa),b(bb)【10】A*p=&x四、程序阅读题(每小题5分,共20分)1、a1=10a2=20a3=31a4=412、****************3、12204、Point:34Circleradius:5Circledestructor!Pointdestructor!1B2D3B4C5C6C7A8A9C10C11B12B13D14D15B1×2√3×4×5√6√7×8√9√10×第11页共11页五、程序设计题(每小题10分,共20分)1、#includeiostream.h#defineSIZE10voidmain(){intdata[SIZE];intm;cout请输入SIZE个整数:;for(m=0;mSIZE;m++)cindata[m];intj=0,k=0;for(inti=1;iSIZE;i++)if(data[i]data[j])j=i;elseif(data[i]data[k])k=i;if(j0){intd=data[0];data[0]=data[k];data[k]=d;}if(kSIZE-1){intd=data[SIZE-1];data[SIZE-1]=data[j];data[j]=d;}coutendl排序后:;for(m=0;mSIZE;m++)coutdata[m];}2