C++程序设计模拟试题1406.pdf
C+程序设计模拟试题 一、选择和填空:1.C+程序的基本单位是()A.程序行 B.语句 C.函数 D.字符 2.假设所有变量均为整型.则表达式(a=4,b=6,a+,a+b)的值是_ 3.下列程序段运行后 x 的值是:_ a=b=c=0;x=35;if(!a)x-;else if (b);if(c)x=3;else x=5;4.若有定义:float w;int a,b;则合法的 switch 语句是 A.switch(w)case 1.0:cout*n;case 2.0:cout*n;B.switch(a);case 1 cout*n;case 2 cout*n;C.switch(b)case 1:cout*n;default:coutn;case 1:cout*n;D.switch(a+b)case 1:cout*n;case 2:cout*n;default:cout0;y-)if(y%3=0)cout-y;continue;7.关于内嵌函数,以下说法正确的是:A.内嵌函数中可以存在循环结构和 SWITCH 结构.B.内嵌函数可以在调用之后定义,只要在调用前声明即可.C.使用内嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.D.内嵌函数可长可短.8.下列程序的输出结果是:_ int rfact(int n)int c;if(n=1)c=1;else c=n*rfact(n-1);return(c);void main()coutrfact(5);9.以下程序的输出的结果是:_ int x=3;void incre()static int x=1;x+;coutx;void main()int i;for(i=1;i=x;i+)incre();10.请选出以下程序的输出结果:_#define MIN(x,y)(x)(y)?(x):(y)void main()int i,j,k;i=10;j=15;k=10*MIN(i,j);coutk;11.若有下面的说明和定义,则 sizeof(ua)和 sizeof(aa)的值分别是 _ struct aa short r1;double r2;float r3;union uu char u15;long u22;ua;mya;12.合法的数组定义是 A.int a=”string”B.int a5=0,1,2,3,4,5 C.char a=”string”D.char a=0,1,2,3,4,5 13.若有以下说明:int w34=0,1,2,4,5,8;int(*p)4=w;则数值为 4 的表达式是 A.*w1+1 B.p+,*(p+1)C.w22 D.P11 14.设有说明语句 int(*ptr)m;其中的标识符 ptr 是 A.m 个指向整型变量的指针 B.指向 m 个整型变量的函数指针 C.一个指向具有 m 个整型元素的一维数组的指针 D.具有 m 个指针元素的一维指针数组,每个元素都只能指向整型变量 15.若有以下说明:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 6 的表达式是 A.*p+6 B.*(p+6)C.*p+=5 D.P+5 16.有如下程序 include void main()char ch25=“6937”,“8254”,*p2;int i,j,s=0;for(i=0;i2;i+)pi=chi;for(i=0;i0;j+=2)s=10*s+pij-0;coutsendl;该程序的输出结果是_ 17.下面程序的输出是 include sub1(char a,char b)char c;c=a;a=b;b=c;sub2(char*a,char b)char c;c=*a;*a=b;b=c;sub3(char*a,char*b)char c;c=*a;*a=*b;*b=c;void main()char a,b;a=A;b=B;sub3(&a,&b);coutab;a=A;b=B;sub2(&a,b);coutab;a=A;b=B;sub1(a,b);coutadata.a D.p.data 19.以下程序的输出结果是 _ include fun(int n,int*s)int f1,f2;if(n=1|n=2)*s=1;else fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;void main()int x;fun(6,&x);coutxendl;20.以下程序的输出结果是 _ include main()char*s=12134211;int v4=0,0,0,0,k,i;for(k=0;sk;k+)switch(sk)case 1:i=0;case 2:i=1;case 3:i=2;case 4:i=3;vi+;for(k=0;k4;k+)coutvk;21.在 c+类中,一个保护成员是通过关键字_加以说明的 A.virtual B.protected C.public D.protect 22.每个类()构造函数。A.只能有一个 B.只可有公有的 C.可以有多个 D.只可有缺省的 23.假定一个类的构造函数为 A(int aa,int bb)a=aa-;b=a*bb-;,则执行 A x(8,9);语句后,x.a 和 x.b 的值分别为_ 24.类的释放函数是在什么时间被自动调用的?A.类创建时 B.创建对象时 C.删除对象时 D.不自动调用 25.若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()A.私有成员 B.公有成员 C.保护成员 D.保护成员或私有成员 26.在 C+中,对于基类的 public 成员,当以 protected 方式派生一个新类时,该成员将成为派生类的_成员。A.private B.protected C.public D.非法 27.C+对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是()A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 28.继承机制的作用是 A.信息隐藏 B.数据封装 C.定义新类 D.数据抽象 29.下列哪一个不是类的特性()A.多态性 B.继承性 C.封装性 D.虚拟性 30 若类 Y 是类 X 的友元类,则下列哪种访问关系是正确的 A.类 Y 的成员不能访问类 X 的私有成员 B.类 Y 的成员可以访问类 X 的私有成员 C.类 X 的成员可以访问类 Y 的私有成员 D.只有类 X 的公共成员才能访问类 Y 的私有成员 31、在每个 C+程序中都必须包含有这样一个函数,该函数是整个应用程序的入口,该函数的函数名为_。32、设 x 和 y 均为 bool量,则 x&y为假的条件是_。A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假 33、下面的哪个保留字不能作为函数的返回类型?_。A.void B.int C.new D.long 34、假定 a 为一个整型数组名,则元素 a4的字节地址为_。A.a+4 B.a+8 C.a+16 D.a+32 35、C+语言是从早期的 C 语言逐渐发展演变而来的。与 C 语言相比,它在求解问题方法上进行的最大改进是_。A.面向过程 B.面向对象 C.安全性 D.复用性 36、C+语言的跳转语句中,对于 break和 continue说法正确的是_。A break语句只应用于循环体中 B continue语句只应用于循环体中 C.break是无条件跳转语句,continue不是 D.break和 continue的跳转范围不够明确,容易产生问题 37、for(int x=0,y=0;!x&y=A&ch=Z B ch=Z C A=ch=A&ch n;switch(n)case 1:case 2:cout 1;case 3:case 4:cout 2;break;default:cout 3;时,若键盘输入 1,则屏幕显示_。51 下列单词中,哪个是合法的 C+变量名?A.x+y B._xyz C.8xyz D.52 设 x、y、z 和 k 都是 int 型变量,则执行表达式:x=(y=7,z=14,k=21)后,x 的值为_。53.有如下程序 void main()float x=2.0,y;if(x0.0)y=0.0;else if(x10.0)y=1.0/x;else y=1.0;couty;该程序的输出结果是_。54 void main()int x=1,a=0,b=0;switch(x)case 0:b+;case 1:a+;case 2:a+;b+;couta”,”8;y=+i)coutx-“”y“”;56 以下程序中,while 循环的循环次数是 void main()int i=0;while(i10)if(i1)continue;if(i=5)break;i+;A.1 B.10 C.6 D.死循环,不能确定次数 57 关于内嵌函数,以下说法错误的是:A.使用内嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.B.内嵌函数必须在调用之前定义.C.内嵌函数中可以存在循环结构.D.内嵌函数必须是短小的.58 以下程序的执行结果是:_。int fun(int n)int s;if(n=1|n=2)s=2;else s=n-fun(n-1);return s;void main()coutfun(3);59 下列程序的输出结果是:int x=10;int fun (int x)static int a=3;a+=x;return(a);void main()int x=3,n;n=fun(x);coutn”,”;n=fun(x);coutn;60.下列程序执行后的输出结果是_。#define MA(x)x*(x-1)void main()int a=1,b=2,c;c=MA(1+a+b);coutc;61 若有下面的说明和定义,则 sizeof(struct aa)的值是_。struct aa short r1;double r2;float r3;union uu char u15;long u22;ua;mya;62.给出以下定义:char x=”abcdefgh”;char y=a,b,c,d,e,f,g,h;则正确的叙述为 A.数组 x 和数组 y 等价 B.数组 x 和数组 y 的长度相同 C.数组 x 的长度大于数组 y 的长度 D.数组 x 的长度小于数组 y 的长度 63.以下程序的输出结果是_。include main()int i,x33=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)coutxi2-i”,”;64 以下程序执行后,a 的值是_。main()int a,k=4,m=6,*p1=&k,*p2=&m;a=p1=&m;coutaendl;65.若有以下定义:char s20=”programming”,*ps=s;则不能代表字符 o 的表达式是 A.ps+2 B.s2 C.ps2 D.ps+=2,*ps 66 有以下程序 include void main()char a=”programming”,b=”language”;char*p1,*p2;int i;p1=a;p2=b;for(i=0;i7;i+)if(*(p1+i)=*(p2+i)cout*(p1+i);输出结果是_。67.以下程序的输出结果是:include main()char ch34=“123”,“456”,“78”,*p3;int i;for(i=0;i3;i+)pi=chi;for(i=0;i3;i+)coutpi;68.有以下程序 include int fun(int x,int y,int*cp,int*dp)*cp=x+y;*dp=x-y;void main()int a,b,c,d;a=30;b=50;fun(a,b,&c,&d);coutc”,”dendl;输出结果是_。69.以下程序的输出结果是_。#include main()char*a=“abcdefghi”;int k;fun(a);couta;fun(char*s)int x,y;char c;for(x=0,y=strlen(s)-1;xy;x+)/strlen()函数返回参数字符串的实际长度 c=sy;sy=sx;sx=c;70.下面程序的输出是_。include sub1(char a,char b)char c;c=a;a=b;b=c;sub2(char*a,char b)char c;c=*a;*a=b;b=c;void main()char a,b;a=A;b=B;sub2(&a,b);coutab;a=A;b=B;sub1(a,b);coutab;71 一个类的构造函数()。A.可以有不同的返回类型 B.只能返回整型 C.只能返回 void 型 D.没有任何返回类型 72 引入友元的主要目的是为了()。A.增强数据安全性 B.提高程序的可靠性 C.提高程序的效率和灵活性 D.保证类的封装性 73 在 c+中,一个虚函数是通过关键字()放在其基类说明的前面来加以说明。A.virtual B.protected C.operator D.this 74.对基类和派生类的关系描述中,错误的是()A.派生类是基类的具体化 B.基类继承了派生类的属性 C.派生类是基类定义的延续 D.派生类是基类的特殊化 75 在派生关系中,()。A.构造函数和释放函数是不能继承的 B.构造函数可以继承,但释放函数不可以继承 C.构造函数不可以继承,但释放函数可以继承 D.构造函数和释放函数都能继承 76 类的构造函数被自动调用执行的情况是在定义该类的()A.成员函数时 B.数据成员时 C.对象时 D.友元函数时 77 假定一个类的构造函数 A(int aa,intbb)a=aa;b=a*bb;,则执行 A x(4,5);语句后,x.a 和 x.b 的值分别为_。78.假定 AB 为一个类,则执行 AB x;语句时将自动调用该类的 A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值重载函数 79 下列不能作为类的成员的是()A.自身类对象的指针 B.自身类对象 C.另一个类对象的指针 D.另一个类的对象 80 在 32 位系统中,类的定义如下,试问类 B 的对象占据内存多少字节空间?_。class A int b;protected:int a;public:A(int n)a=n;class B:public A int c;81 C+语言中的每条基本语句以_作为结束符,每条复合语句以_作为结束符。82、执行“cout char(C+6)endl;”语句后得到的输出结果为_。83、假定一个一维数组的定义为“char *a10;”,则该数组所含元素的个数为_,所占存储空间的字节数为_。84、变量分为全局和局部两种,_变量没有赋初值时,其值是不确定的。85、假定 a 是一个二维数组,则 aij的指针访问方式为_。86、假定一个结构类型定义为“struct D int a;union int b;double c;D *d2;”,则该类型的大小为_字节。87、对一个类中的数据成员的初始化可以通过类中的_函数实现,而释放一个类对象之前自动调用的为_函数。88、字符串以_为结束标志。二、给出下列程序运行后的输出结果 1、#include void SB(char ch)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;void main()char a1=b,a2=C,a3=f;SB(a1);SB(a2);SB(a3);SB(A);cout endl;2、#include#include void main()char*a5=student,worker,cadre,soldier,peasant;char*p1,*p2;p1=p2=a0;for(int i=0;i0)p1=ai;if(strcmp(ai,p2)0)p2=ai;cout p1 p2endl;3、#include int a=5;void main()int a=10,b=20;cout a bendl;int a=0,b=0;for(int i=1;i6;i+)a+=i;b+=a;cout a b:aendl;cout a bendl;4、#include int LB(int*a,int n)int s=1;for(int i=0;in;i+)s*=*a+;return s;void main()int a=1,2,3,4,5,6,7,8;int b=LB(a,5)+LB(&a3,3);cout b=bendl;5、#include#include struct Worker char name15;/姓名 int age;/年龄 float pay;/工资;void main()Worker x;char*t=liouting;int d=38;float f=493;strcpy(x.name,t);x.age=d;x.pay=f;cout x.name x.age x.payendl;6、#include class A int a;public:A(int aa=0)a=aa;A()cout Destructor A!aendl;class B:public A int b;public:B(int aa=0,int bb=0):A(aa)b=bb;B()cout Destructor B!bendl;void main()B x(5),y(6,7);/后定义的变量将先被释放 7.#include class sample public:sample();sample(int);sample();void display();protected:int x;sample:sample()x=0;cout”constructing normallyn”;sample:sample(int m)x=m;cout”constructing with a number:”xendl;sample:sample()cout”destructingn”;void sample:display()cout”display a number:”xendl;void main()sample obj1;sample obj2(20);obj1.display();obj2.display();8、#include class complex public:complex(double,double);complex(complex&);complex();complex operator+(complex&);complex&operator=(complex&);void display();protected:double real;double image;complex:complex(double x,double y)real=x,image=y;complex:complex(complex&x)cout”Runing copy constructorn”real=x.real;image=x.image;complex:complex()real=image=0.0;complex complex:operator+(complex&x)return complex(real+x.real,image+x.image);complex&complex:operator=(complex&x)cout”Runing assign operatorn”;real+=x.real;image+=x.image;return*this;viod complex:display()coutreal”+”image”i”endl;void main()complex c1(2,5);complex c2(c1);complex c3;c3=c1+c2;c3.display();9、源程序:#include long fac(int n)long f;if(n0)coutn0,data error!endl;else if(n=0)f=1;else f=fac(n-1)*n;return(f);void main()long fac(int n);int n;long y;coutn;y=fac(n);coutn!=yendl;程序运行后,从键盘输入 5,则输出结果是_ 三、编程题:见实验三到实验八的每次实验的前两个编程题