您好,欢迎访问三七文档
1西安科技大学工程硕士研究生考试试卷学号______________研究生姓名______________班级______________考试科目______________考试日期______________课程学时______________开(闭)卷______________题号分数阅卷人12345678910总分注意事项1、考生必须遵守考场纪律2、答题必须写清楚题号3、自己要清楚,保持卷面清洁4、试题随试卷一起交回(试题写在黑板上时,答题时应该抄题)2C/C++面向对象程序设计考试试题(卷)年级与专业:姓名:一、选择填空题:1.以下叙述正确的是。A)在C程序中,main函数必须位于程序的最前面B)C程序的每行中只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的接写错误2.若x、i、j和k都是int型变量,则计算下面表达式后,x的值为。x=(i=4,j=16,k=32)A.4B.16C.32D.523.逻辑运算符两侧运算对象的数据类型。A.只能是0或1B.只能是0或非正数C.只能是整型或字符型数据D.可以是任何类型的数据4.执行以下语法后a的值为【】,b的值为【】。inta=5,b=6,w=1,x=2,y=3,z=4;(a=wx)&&(b=yz);【a】A.5B.0C.2D.1【b】A.6B.0C.1D.45.以下程序的运行结果是().main(){intm=5;if(m++5)coutmendl;elsecoutm--endl;}A.4B.5C.6D.76.下列有关类和对象的说法不正确的是。A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系是抽象与具体的关系7.在C++类中可以包含三种具有不同访问控制权的成员。A.friend、public和protectedB.private、public和protectedC.friend、public和virtualD.public、friend和template8.已知类A中一个成员函数说明如下:voidSet(A&a)则其中A&a的含义是。3A.指向类A的指针为aB.将a的地址值赋给函数名SetC.a是类A的对象引用,用来作函数Set()的形参D.A与a以逻辑与的关系作为函数Set()的参数9.派生类的对象对它的基类成员中可以访问的有。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员10.要求函数的功能是在一维数组a中查找x的值;若找到则返回所在的下标值,否则返回0。分析下列各函数,找出不符合要求的是。A.funa(int*a,intn,intx){*a=x;while(a[n]!=x)n--;returnn;}B.funb(int*a,intn,intx){intk;for(k=1;k=n;k++)if(a[k]==x)returnk;return0;}C.func(int*a,intn,intx){int*k;a[0]=x;k=a+n;while(*k!=x)k--;returnk-n;}D.fund(int*a,intn,intx){intk=0;dok++;while((kn+1)&&(a[k]!=x));if(a[k]==x)returnk;elsereturn0;}4二、阅读分析下列程序,写出运行结果:1.#includeiostream.hvoidmain(){intn,d;n=65432;coutThenumberinreverseorderis:;do{d=n%10;coutd-1;n/=10;}while(n!=0);coutendl;}运行结果为:2.#includeiostream.hvoidmain(){charstr1[]=tHiSisASTRing;charstr2[100];inti=0;do{if(str1[i]='a'&&str1[i]='z')str2[i]=str1[i]-'a'+'A';elsestr2[i]=str1[i];i++;}while(str1[i]!=NULL);str2[i]='\0';coutstr1endl;coutstr2endl;}运行结果为:53.#includeiostream.hf(inta[]){inti=0;while(a[i]=10){couta[i];i++;}}voidmain(){inta[]={1,5,10,9,11,7};f(a+1);}运行结果为:4.#includeiostream.hvoidmain(){inta[3][3]={1,3,5,7,9,11,13,15,17};intsum;sum=func(a)’cout\nsum=sum\n;}func(inta[][3]){inti,j,sum=0;for(i=0;i3;i++)for(j=0;j3;j++){a[[i][j]=i+j;if(i==j)sum=sum+a[i][j];}return(sum);}运行结果为:三、根据题目设计要求,分析并填空完成程序。1.下程序中的函数可计算S=1+1/2!+1/3!+……+1/n!,请填空完成程序。#includeiostream.hdoublefun(intn){6doubles=0.0,fac=①;intj;for(j=1;j=n;j++){fac=fac②;s=s+fac;}returns;}voidmain(){coutfun(6)endl;}解答:①②2.以下是一个采用类结构的方式求n!的程序,请完成填空。#includeiostream.hclassFactorial{intn;intfact;public:Factorial(int);voidCalculate();voidDisplay();};Factorial::Factorial(intval){n=①;fact=1;}voidFactorial::Calculate(){inti=n;while(i1)②;}voidFactorial::Display(){coutn!=factendl;}7voidmain(){intn;cout请输入n的值:;cinn;③;A.Calculate();A.Display();}解答①:②:③:3.从键盘输入n(0n100)个整数,计算并输出其中出现次数最多且数值最大的元素及其出现次数。#includestdio.h#definrN100voidmain(){inta[N],n,i,j,ind,c1,c2;do{printf(“输入n(0n100):\n”);scanf(“%d”,&n);}while(n=0||①);printf(“输入数组元素:\n”);for((i=0;in;i++)scanf(“%d”,&a[i]);for(c2=i=0;in;i++){for(c1=1,j=i+1;jn;j++)if(a[j]==a[i])②;if(③||c1==c2&&a[i]a[ind]){c2=c1;④;}}printf(“其中%d出现%d次\n”,a[ind],⑤);}解答①:②:③:④:⑤:84.下列程序中声明一个圆类circle和一个桌子类table,另外声明一个圆桌类roundtable,它是由circle和table两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度、面积和颜色。请填空完成程序。#includeiostream.h#includestring.hclasscircle{doubleradius;public:circle(doubler){radius=r;}doubleget_area(){return①;}};classtable{doubleheight;public:table(doubleh){height=h;}doubleget_height(){returnheight;}};classroundtable:publictable,publiccircle{char*color;public:roundtable(doubleh,doubler,charc[]):②{color=newchar[strlen(c)+1];③;}char*get_color(){returncolor;}};voidmain(){roundtablert(0.8,1.0,白色);cout圆桌数据:endl;cout圆桌高度:rt.get_height()endl;cout圆桌面积:rt.get_area()endl;cout圆桌颜色:rt.get_color()endl;}解答①:②:③:9四、编程题:1.设有一数列,包含10个数,已按升序排好。现要求编一程序,它能够把从指定位置(p1)开始到指定位置(p2)结束的n个数(p1p2)按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用函数调用方法。试编程。(例如:原数列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始到第8个结束的数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20。)2.采用类结构方式与递归方法,实现将十进制整数转换成二进制数(含整数与小数)。五、简答题1、面向对象程序设计的特点是什么?2、什么叫组合类?3、类有几种继承方式?比较各继承方式下基类成员访问属性的变化情况。4、什么叫做多态性?C++中是如何实现多态的?5、什么叫做抽象类?抽象类有何作用?
本文标题:C++试题
链接地址:https://www.777doc.com/doc-1840070 .html