C++程序设计-模拟题

发布时间:2023-08-04 00:08:24浏览次数:59
《C++程序设计》模拟题一、单项选择题1.下列为合法的 c++常量的是( ).A.'105'B.'Be'C."x-y"D.07ff[答案]:C 2.表达式 18/4*sqrt(4.0)/8 值的数据类型为( ).A.intB.floatC.doubleD.不确定[答案]: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.4B.8C.6D.12[答案]:B 5.设有定义:unsigned op=2,则与语句 op<<=1 等价的语句为( ).A.op*=2B.op/=2C.op*=4D.op/=4[答案]:A 6.c++语言源程序文件的扩展名是( ).A."cpp"B."obj"C."exe"D."c++"[答案]:A 7.c++语言程序中可以对程序进行注释,注释部分必须用符合( )括起来.A."{"和"}"B."["和"]"C."(*"和"*)"D."/*"和"*/"[答案]:D 8.已知字符'b'的 ascII 码为 98,执行 printf("%d,%c",'b','b'+1);语句后输出为( ).A.98,bB.语句不合法C.98,99D.98,c[答案]:D 9.以下各项中,为非法常量数值的是( ).A.11B.18C.0xabcdD.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=6B.i=1,j=1,a=7C.i=1,j=0,a=7D.i=0,j=1,a=7[答案]:C 11.表达式-1? (0?0:-1):(10?10:1)的值为( ).A.10B.1C.0D.-1[答案]:D 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]<<endlB.cout<<cc[2]name[0]<<endlC.cout<<cc[2]&name<<endlD.cout<<cc[2]name<<endl[答案]:D 15.下面程序段的输出结果是( ).char p1[10]= "abc", p2[]="ABC", str[50]= "xyz";strcpy(str+2,strcat(p1,p2));cout<<str<<endl;A.xyabcABCB.ZabcABCC.YzabcABCD.xyzabcABC[答案]:A 16.以下选项中不正确的实型常量是( ).A.2.3B.0.23C.1E3.6D.2.3[答案]:C 17.若 a,b 都是 int 类型变量,( )不是正确的赋值语句.A.a=b=60B.a=30C.a=1,3D.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.5B.6C.5.5D.6[答案]:D 20.以下各标识符中,正确的标识符是( ).A.a-bB.123_C._123D.signed[答案]:C 21.以下不能用作标识符的是( ).A._26B.coutC.caseD.Double[答案]:C 22.满足 x 为奇数时值为真,x 为偶数时值为假的表达式是( ).A.!(x%2==1)B.x%2==0C.x%2D.!(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,16B.11,16C.11,11D.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.28B.1000C.0D.WangLing[答案]:B 26.在 c++语言程序中,用关键字( )定义无符号型变量.A.unsignedB.floatC.doubleD.char[答案]:A 27.以下语句不正确的语句是( ).A.if(x>y)1+2B.if(x=y)&&(x!=0)x+=yC.if(x!=y)cin>>x;elsecin>>yD.if(x<y){x++;y++;}[答案]:B 28.若变量已正确定义且 k 的值是 4,计算表达式(j=k--)后,( )是正确的.A.j=4,k=4B.j=4,k=3C.j=3,k=4D.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?20:(x+5);后,x 的值为( ).A.10B.20C.25D.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=2countP=3countP=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>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; }};classC: 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 1constructing B 2constructing 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;voidmain(){ myclass m1(1,2),m2(4,5); m1.print(); { myclass m3(6,7); m3.print(); } m2.print();}[答案]:23223.#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 createdA object is createdA object is createdA object is destroyedA 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
文档格式: docx,价格: 5下载文档
返回顶部