找回密码
 注册

QQ登录

只需一步,快速开始

查看: 915|回复: 0

地大23春C++程序设计-模拟测试答案

[复制链接]
发表于 2023-2-1 10:54:04 | 显示全部楼层 |阅读模式
《C++程序设计》模拟题
一、单项选择题
1.下列为合法的c++常量的是(      ).
A.'105'
B.'Be'
C."x-y"
D.07ff
[答案]:C
   
2.表达式18/4*sqrt(4.0)/8值的数据类型为(      ).
A.int
B.float
C.double
D.不确定
[答案]:C
   
3.以下语句中无法正确赋值的是(      ).
A.charb[10]={'H','e','l','l','o','!'}
B.charb[10];b="Hello!"
C.char*b;b="Hello!"
D.charb[10]="Hello!"
[答案]:B
   
4.以下程序的输出结果是(      ).#include<iostream.h>void main(){ int i,j,x=0;  for(i=0;i<2;i++)  { x++;   for(j=0;j<3;j++)   { if(j%2)  continue;    x++;   }   x++;  }  cout<<x<<endl;}
A.4
B.8
C.6
D.12
[答案]:B
   
5.设有定义:unsigned op=2,则与语句op<<=1等价的语句为(      ).
A.op*=2
B.op/=2
C.op*=4
D.op/=4
[答案]:A
   
6.c++语言源程序文件的扩展名是(      ).
A."cpp"
B."obj"
C."exe"
D."c++"
[答案]:A
   
7.c++语言程序中可以对程序进行注释,注释部分必须用符合(      )括起来.
A."{"和"}"
B."["和"]"
C."(*"和"*)"
D."/*"和"*/"
[答案]
   
8.已知字符'b'的ascII码为98,执行printf("%d,%c",'b','b'+1);语句后输出为(      ).
A.98,b
B.语句不合法
C.98,99
D.98,c
[答案]
   
9.以下各项中,为非法常量数值的是(      ).
A.11
B.18
C.0xabcd
D.5L
[答案]:B
   
10.下列程序运行后,输出结果是(      ).#include <iostream.h>void main(){  int i=0,j=0,a=6;if((++i>0)||(++j>0)) a++;cout<<"i="<<i<<",j="<<j<<",a="<<a<<endl;}
A.i=0,j=0,a=6
B.i=1,j=1,a=7
C.i=1,j=0,a=7
D.i=0,j=1,a=7
[答案]:C
   
11.表达式-1? (0?0:-1)10?10:1)的值为(      ).
A.10
B.1
C.0
D.-1
[答案]
   
12.以下关于函数的叙述正确的是(      ).
A.函数中必须要有return语句
B.函数中可以有多个return语句,但只有一个被执行
C.return语句中必须有一个表达式
D.函数中定义的变量不能与其它函数中的变量同名
[答案]:B
   
13.若有以下的定义和语句,则值为5的表达式是(      ).int a[]={1,2,3,4,5,6,7,8,9,10};
A.a[5]
B.a[a[4]]
C.a[a[3]]
D.a[a[5]]
[答案]:C
   
14.设有以下结构体定义,则以下能输出字符串"grape"的语句为(      ).struct  ww{ int no;  char  name[10]; }cc[4]={1, "apple",2, "banana",3, "grape",4, "orange"};
A.cout<<cc[2]&name[0]<<endl
B.cout<<cc[2]name[0]<<endl
C.cout<<cc[2]&name<<endl
D.cout<<cc[2]name<<endl
[答案]
   
15.下面程序段的输出结果是(      ).char p1[10]= "abc", p2[]="ABC", str[50]= "xyz";strcpy(str+2, strcat(p1,p2));cout<<str<<endl;
A.xyabcABC
B.ZabcABC
C.YzabcABC
D.xyzabcABC
[答案]:A
   
16.以下选项中不正确的实型常量是(      ).
A.2.3
B.0.23
C.1E3.6
D.2.3
[答案]:C
   
17.若a,b都是int类型变量,(      )不是正确的赋值语句.
A.a=b=60
B.a=30
C.a=1,3
D.b=0
[答案]:C
   
18.下列各语句定义了数组,(      )是不正确的.
A.inta[1][3]
B.intx[2][2]={1,2,3,4}
C.intx[2][]={1,2,4,6}
D.intm[][3]={1,2,3,4,5,6}
[答案]:C
   
19.a,b均为double型变量,且a=5.5,b=2.5,则(int)a+b/b的值是(      ).
A.6.5
B.6
C.5.5
D.6
[答案]
   
20.以下各标识符中,正确的标识符是(      ).
A.a-b
B.123_
C._123
D.signed
[答案]:C
   
21.以下不能用作标识符的是(      ).
A._26
B.cout
C.case
D.Double
[答案]:C
   
22.满足x为奇数时值为真,x为偶数时值为假的表达式是(      ).
A.!(x%2==1)
B.x%2==0
C.x%2
D.!(x%2)
[答案]:C
   
23.在定义int * p [3];中,标识符p(      ).
A.是一个指向整型变量的指针
B.是一个指针数组,包含3个指向整型数据的指针变量
C.是一个函数指针,可以指向返回值类型为int型的函数
D.是一个指针变量,它可以指向一个具有三个元素的一维数组
[答案]:B
   
24.以下程序的输出结果是(      ). char  ss[16]= "test\0abc\n\t"; cout<<strlen(ss)<<’,’<<sizeof(ss)<<endl;
A.4,16
B.11,16
C.11,11
D.4,11
[答案]:A
   
25.以下程序段的输出结果为(      ).union u{char *name; int age; int income;} s;s.name="WangLing";s.age=28;s.income=1000;  cout<<s.age<<endl;
A.28
B.1000
C.0
D.WangLing
[答案]:B
   
26.在c++语言程序中,用关键字(      )定义无符号型变量.
A.unsigned
B.float
C.double
D.char
[答案]:A
   
27.以下语句不正确的语句是(      ).
A.if(x>y)1+2
B.if(x=y)&&(x!=0)x+=y
C.if(x!=y)cin>>x;elsecin>>y
D.if(x<y){x++;y++;}
[答案]:B
   
28.若变量已正确定义且k的值是4,计算表达式(j=k--)后,(      )是正确的.
A.j=4,k=4
B.j=4,k=3
C.j=3,k=4
D.j=3,k=3
[答案]:B
   
29.以下叙述中不正确的是(      ).
A.在函数中,通过return语句传回函数值
B.在函数中,可以有多条return语句
C.在c++中,主函数main后的一对圆括号中可以带行参
D.在c++中,调用函数,必须在一条独立的语句中完成
[答案]:D
   
30.x为整型变量,执行语句x=(x=5,x*4,x+5)>10?20x+5);后,x的值为(      ).
A.10
B.20
C.25
D.30
[答案]:A
   
二、问答题
1.标识符的命名规则是什么?
[答案]:由字母,数字,下划线组成(2分),第一个字符只能是字母或下划线(2分).
   
2.在C++语言中,重载有哪几种方式?
[答案]:函数重载和运算符重载
   
3.说明在派生类定义中,基类前public,private,protected是什么意思?
[答案]:不同的继承方式,导致不同访问属性的基类成员在派生类中的访问属性也有所不同1)public公有继承,使得基类公有和保护成员的访问属性在派生类中不变,而基类私有成员不可访问.(2)private私有继承,使得基类公有和保护成员都以私有成员身份出现在派生类中,而基类私有成员不可访问.(3)protected保护继承,基类公有和保护成员都以保护成员身份出现在派生类中,而基类私有成员不可访问.
   
4.#include<iostream.h>void main(){   int n=3,r(1);   do{       r*=n;    n--;  }while(n>=1);   cout<<r<<endl; }
[答案]:6
   
5.#include <iostream.h>class CPoint{ public:  CPoint(int xx=0, int yy=0) {X=xx; Y=yy; countP++; }   ~CPoint(){  countP--; }  void GetC() {cout<<"countP="<<countP<<endl;}private: int X,Y;   static int countP;};int CPoint::countP=0;void main(){ CPoint A(4,5),B;  A.GetC();  { CPoint C(1,2);C.GetC();  }  B.GetC();}
[答案]:countP=2
countP=3
countP=2
   
6.#include<iostream.h>void main(){   int n,r(1);   for(n=4;n>=1;n--)       r*=n;   cout<<r<<endl; }
[答案]:24
   
7.#include <iostream.h>template <typename T,typename P>class CPlus{public:    CPlus(T m1,P n1){m=m1;n=n1;} P plus(); T m;    P n;};template <typename T,typename P> CPlus<T,P>::plus(){ P s;      s=(P)(m+n);      return(s);}void main(){ CPlus<double,int> a(12.345,6);  cout<<"a="<<a.plus()<<endl; CPlus<int,float> b(14,2.56f);  cout<<"b="<<b.plus()<<endl;}
[答案]:a=18
   b=16.568.如果下面程序输入5,输出是什么?#include<iostream.h>void main(){  int n,r(1);   cin>>n;   while(n>=1)   {   r*=n;       n--;   }   cout<<r<<endl; }
[答案]:120
   
9.class类类型中,拷贝构造函数应具有哪些特征?
[答案]:拷贝构造函数的特点如下:
(1) 该函数名与类名相同,因为它也是一种构造函数,并且该函数也不被指定返回类型;(1分)
(2) 该函数只有一个参数,并且是对同类的某个对象的引用;(1分)
(3) 每个类都必须有一个拷贝构造函数;(1分)
(4) 在新建对象时,对对象进行初始化时调用,对象之间赋值不调用.(1分)10.C++语言标准数据类型(即已有的)有哪些?
[答案]:char,int,short,long,float,double,bool,void.
   
11.类定义体中,有些函数之前有关键字virtual的意义是什么?
[答案]:该函数为虚拟函数,指定为动态绑定方式.运行时该函数才与调用函数进行绑定.
   
12.#include<iostream.h>int change(int x,int &y,int &z,int *dp){   z=x--+--y;  *dp=x-y--;        return(x+y);}void main(){    int a=4,b=4,c=4,d=4;  a=change(a,b,c,&d);  cout<<a<<','<<b<<','<<c<<','<<d<<endl;}  
[答案]:5,2,7,0
   
13.#include<iostream.h>void main(){   int i,n=6,r(1);   for(i=1;i<=n;i++)       r*=i;   cout<<r<<endl; }
[答案]:720
   
14.#include<iostream.h>int change(int x,int &y,int &z,int *dp){   z=x--+--y;  *dp=x-y--;        return(x+y);}void main(){    int a=8,b=8,c=8,d=8;  a=change(a,b,c,&d);  cout<<a<<','<<b<<','<<c<<','<<d<<endl;}  
[答案]:13,6,15,0
   
15.#include<iostream.h>class CPoint{     private:int X,Y;  public:   CPoint(int i, int j) {X=i; Y=j;}   virtual int Area(){  return 0;}};class CRectangle:public CPoint{     private:int W,H;  public:   CRectangle(int i, int j, int k, int l) :CPoint(i,j) {W=k;  H=l; }   int Area() {return  W*H;}};void fun(CPoint &s) { cout<<"Area="<<s.Area()<<endl;  }void main()  { CRectangle r(2, 3, 6, 8);  fun(r);  }
[答案]:Area=48
   
16.#include <iostream.h>int fun(int n){   int r;  if(n==1||n==2)     r=1;  else   r=fun(n-1)+fun(n-2);    return  r;}void main(){  cout<<fun(6)<<endl;  }
[答案]:8
   
17.什么叫类?什么叫对象?
[答案]:类是封装了数据和方法的一种抽象数据类型(2分).
对象是类的一个实例(2分).18.在C++语言中,请说明结构体和联合体的异同点.
[答案]:结构体数据类型的变量可以同时存储int,long,char和double型等已有数据类型的数据,这些数据使用不同的存储空间,而联合体虽然表面上可以存储int,long,char或double等已有数据类型的数据,但它们共享其占用空间最多的成员所分配的存储空间,对某个成员赋值将影响其它成员的数值.
   
19.函数之间的参数传递的形式有哪几种?
[答案]:传值传递方式,地址传递方式,引用方式.
   
20.#include <iostream.h>class B{ public:   B(int i) {  cout<<"constructing B "<<i<<endl;  }};class C: public B{ public:   C(int a, int b,int c):B(a),memberB(b)   { cout<<"constructing C "<<c<<endl;}private:   B memberB;};void main(){ C obj(1,2,3);  }
[答案]:constructing B 1
constructing B 2
constructing C 321.#include<iostream.h>class CPoint{     private:int X,Y;  public:   CPoint(int i, int j) {X=i; Y=j;}   virtual int Area(){  return 0;}};class CTriangle:public CPoint{     private:int W,H;  public:   CTriangle (int i, int j, int k, int l) :CPoint(i,j) {W=k;  H=l; }   int Area() {return  W*H/2;}};void fun(CPoint &s) { cout<<"Area="<<s.Area()<<endl;  }void main()  { CTriangle r(9, 8, 7, 6);  fun(r);  }
[答案]:Area=21
   
22.#include <iostream.h>class myclass{private:  int a,b;    static int s;  public:    myclass(int x,int y){ a=x;  b=y; s++; }  ~myclass(){s--;}    void print(){  cout <<s<< endl; }} ;int myclass::s=0;void main(){   myclass m1(1,2),m2(4,5);    m1.print();  { myclass  m3(6,7);   m3.print();  }  m2.print();}
[答案]:2
3
223.#include <iostream.h>class point    {      private:int x,y;     public:          point(int a=0,int b=0){  cout <<"A object is created"<<endl; }          ~point(){  cout<<"A object is destroyed"<<endl; }   };void main(){  point  a1,a2,*p;p= new point;}
[答案]:A object is created
A object is created
A object is created
A object is destroyed
A object is destroyed24.#include<iostream.h>int  t(int x,int &y,int *cp,int z){   --x;  ++y;  *cp=--x+y++;  z=x+*cp ;    return z;  }void main(){    int a=3, b=3,c(3),d(3);    d+=t(a,b,&c,d);    cout<<a<<b<<c<<d<<endl; }
[答案]:3559
   
附件是答案,转载注明 无忧答案网

QQ|手机版|小黑屋|网站地图|无忧答案网 ( 冀ICP备18010495号-1 )

GMT+8, 2024-5-5 00:16

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表