C++语言程序设计.docx
- 文档编号:7361463
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:14
- 大小:23.89KB
C++语言程序设计.docx
《C++语言程序设计.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计.docx(14页珍藏版)》请在冰豆网上搜索。
C++语言程序设计
一、填空(每空2分,共20分)
1.C++目标程序经_______连接____后生成扩展名为exe的可执行程序文件。
2.16位计算机中整型占____2___个字节存储空间。
3.要在屏幕上显示"Hello,world!
"应执行语句cout<<"\"Hello,world!
\""。
4.表达式8&3的结果是___0_______。
5.作为语句的函数调用是通过__函数的副作用_____来体现的。
6.执行if(x>=0||x<=0)cout<<"abcd";elsecout<<"wxyz";屏幕上显示的是______abcd_________。
7.设一维整型数组data已进行了初始化,则其元素个数可由操作符sizeof通过表达式________sizeof(data/data[0])__________________计算出来。
8.若一全局变量只允许本程序文件中的函数使用,则定义它时应加上修饰符______static_________。
9.设有intw[3][4];,pw是与数组名w等价的数组指针,则pw应初始化为int(*pw)[4]=w;。
10.要使引用pr代表变量char*p;,则pr应初始化为___char*&pr=p;。
二、单项选择题(每空2分,共20分)
1.下列变量名中,(A)是合法的。
ACHINABbyte-sizeCdoubleDA+a
2.下列各种函数中,(C)不是类的成员函数。
A构造函数B析构函数C友元函数D拷贝构造函数
3.下列(A)是正确的语句。
A;Ba=17Cx+yDcout<<"\n"
4.循环while(inti=0)i--;执行次数是(A)。
A0B1C5D无限
5.设intf(int);和intg(int);是函数f和g的原形,以下将f作为语句调用的是(B
)。
Ag(f(3));Bf(g(3));Cg(f(3)+2);Dp=f(g(3)+1);
6.设int*p2=&x,*p1=a;p2=*b;则a和b的类型分别是(B)。
Aint*和intBint*和int**
Cint和int*Dint*和int*
7.设intx;,则经过(C)后,语句*px=0;可将x值置为0。
Aint*px;Bintconst*px=&x;
Cint*constpx=&x;Dconstint*px=&x;
8.设voidf1(int*m,long&n);inta;longb;则以下调用合法的是(B)。
Af1(a,b);Bf1(&a,b);
Cf1(a,&b);Df1(&a,&b);
9.以下结构类型可用来构造链表的是(B)。
Astructaa{inta;int*b;};Bstructbb{inta;bb*b;};
Cstructcc{int*a;ccb;};Dstructdd{int*a;aab;};
10.使用操作符setw对数据进行格式输出时,需要包含(C)文件。
Aiostream.hBfstream.hCiomanip.hDstdlib.h
三、回答问题(每题4分,共20分)
1.设int*p;,判断下列表达式的正确性(用T表正确,用F表错误)。
--++p(T)++(p--)(F)p----(F)(++p)--(T)
2.请初始化一维指针数组color,其初值表初值为"red","blue","white"和"black"。
char*color[]={"red","blue","white","black"};
3.设intx[]={99,98,97},&y=x[1];,
写出语句cout< cout< 98,194 4.设intfp(chara,intb=0,doublec=100.0);,判断下列重载函数的正确性。 (用T表正确,用F表错误)。 intfp();(T)voidfp(char);(F) intfp(char,int);(F)voidfp(char,int,int);(T) 5.要使语句p1=newlong*;p2=newfloat*[15];能正常执行,写出p1和p2的定义。 long**p1;float**p2; 四、(每题10分,共20分) 1.写出下列程序的执行结果。 #include voidfun(int,int,int*); voidmain() { intx,y,z; fun(2,3,&x); fun(4,x,&y); fun(x,y,&z); cout< } voidfun(inta,intb,int*c) {b*=a;*c=b-a;} 4,12,44 2.下列程序向a盘上的文本文件aaa.dat输出0至100间的整数,请将程序补充完全。 #include #include voidmain(void) { ofstreamf1("a: aaa.dat"); if(! f1(或f1.fail())){ cerr<<"a: aaa.datfilenotopen! "< exit (1); } for(inti=0;i<=100;i++)f1< f1.close(); } 五、(每题10分,共20分) 1.编程求数列1, , , , ,……的所有大于等于0.000001的数据项之和并输出结果。 1、#include voidmain() { intn=1,d=1; doubles=0.0,s0; while((s0=double(n)/d)>=0.000001) { s+=s0; d++; } cout< } 2.用递归方法设计函数intArrayMin(intd[],intsize);,其中d为数组,size为数组元素个数;ArrayMin返回d中的最小元素。 intArrayMin(intd[],intsize) { intk=d[size-1]; if(size==1)returnk; if(k<=ArrayMin(d,size-1))returnk; elsereturnArrayMin(d,size-1); } 一、单项选择题 1.下列表达式中正确的是 。 (B) A. (k++)++ B. k---j C. k--/=5 D. (k+3)=5 2.已知 int f(int); 和 int g(int); 分别是函数f和g的原型。 下列语句中,将函数f作为语句调用的有 。 (D) A. f(3)+g(3); B. p/=f(3); C. g(f(3)); D. f(g(3)); 3.下面四个程序段中,输出23个*号的程序段是 。 (C) A. for (int i=1; i<23; i++) cout <<’*’; B. for (int i=23; i>=0; i--) cout <<’*’; C. int i=23; while (i>0) { cout <<’*’; i--; } D. int i=0; while (0<=23) { cout <<’*’; i++; } 4.要定义一个int型二维数组a,并使其各元素具有初值: (B) 2 3 0 0 4 0 5 0 0 0 0 0 则正确的定义语句是 。 A.int a[][]={2,3,0,0,4,0,5,0,0,0,0,0}; B.int a[][4]= {2,3,0,0,4,0,5,0,0,0,0,0}; C.int a[3][4]= {{2,3},{4,,5}}; D.int a[][]={{2,3,0,0},{4,0,5,0},{0,0,0,0}}; 5.设有数组定义 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 则表达式 *(*(a+2)+1) 的值是 。 (B) A. 5 B. 6 C. 9 D. 10 6关于析构函数的说法错误的是(C) A析构函数只有一个 B析构函数无任何函数类型 C析构函数与构造函数一样可以有形参 D析构函数在对象被撤销是自动执行 7下列说法正确的是(C) A使用new建立动态对象的语法和建立动态变量的情况完全不同 Bnew和构造函数不能一同使用 C使用new建立一个动态对象时,自动调用构造函数 D使用new建立的动态对象在不用时必须调用析构函数删除 8在使用不同类型的对象对一个对象赋值时,完成类型转换的事(A) A构造函数 B析构函数 C友元函数 D外部函数 9已知类myClass中的一个成员函数说明如下: void SetMyClass(myClass& myData) 其中,myClass& myData 的含义是(D) A指向类myClass的指针为myData B将myData的地址赋给SetMyClass C变量myClass与myData按位相与作为SetMyClass的参数 DmyData是类myClass的对象引用,用来作为函数SetMyClass的形参。 10设置虚基类的主要目的是(B) A简化程序 B消除两义性 C提高运行效率 D减少目标代码 二.多项选择题 1有关析构函数说法正确的是(AD) A析构函数在对象生存期结束时被自动调用 B析构函数名与类名相同 C定义析构函数时,可以指定返回类行为void D析构函数不能指定参数 2一下类定义形式中正确的是(AB) class MyClass1{} class MyClass2{} class Myclass3{int cc=’a’;} class MyClass4{int cc;} 3下面程序段完全正确的是(ABD) A struct myStruct{ B struct myStruct { C class myClass{ D class myClass{ int num; int num; private: private: float f1 ; float f1; int i; int i; }; }; myClass member; myClass * p; int i=num; int i=num; }; }; 4下列说法正确的是: (ABC) Amain函数内声明的局部对象的构造函数在对象声明时自动调用 Bmain函数内声明的局部对象的构造函数在main函数结束时自动调用 C全局对象和静态对象的构造函数在main函数执行之前被调用 D全局对象和静态对象的构造函数在main函数结束之后被调用 5下面说法正确的是(AB) A构造函数可以进行类型转换 B构造函数用于确保编译器检出对象初始化方面的错误 C初始化和赋值是等价的 D程序必须用于定义的初始化和赋值进行操作 6对于下面的程序,有两义性的语句是(AD) classA{public: void f1( );}; classB{public: void f1( ); void f2 ( );}; classC: public A,private B{ public: void f2( ); void f3( );}; C data A data .f1( ); B data.A: : f1( ); C data.f2( ); D void C: : f3( ){ f1( ); } 7关于多重继承两义性的描述中正确的是(ABD) A一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现两义性 B解决两义性的最常用的方法是对成员名的限定法 C基类和派生类是派生类中同时出现的同名函数,也存在两义性问题 D一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现两义性 8抽象类应含有(CD) A.至少一个虚函数 B.至多一个虚函数是纯虚函数 C.至多一个虚函数 D.至少一个虚函数是纯虚函数 二、填空题 1.表达式x=x+1表示成增量表达式为 。 (++x ) 2.关系表达式x+y>5的相反表达式为 (x+y<=5) 3.执行语句 i=10; do { cout <<’*’; i--; } while (i+3); 后,将显示出 个*号(14 ) 4.设有下面的定义 int s[10]={1,2,3,4,5,6,7,8,9,10}; int sum=0; 请完善下面的语句实现求数组s的所有元素之和,并保存在变量sum中: for ( int ; ; j++ ) ;(j=0 j<10 sum+=s[j] ) 5.假定a是一个二维数组,则a[i][j]的指针访问方式为 。 (*(*(a+i)+j) 或 *(a[i]+j) ) 三、下列程序运行后的输出结果 1. # include int a=5; void main() { int a=10,b=20; cout < { int a=0,b=0; for (int i=1; i<6; i++) { a+=i; b+=a; } cout < :
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言程序设计