搜档网
当前位置:搜档网 › 强化训练试卷B

强化训练试卷B

强化训练试卷B
强化训练试卷B

2系,611班C++强化训练试卷B

(1) 本卷中的选择题,凡未注明(多选),均只有一个正确答案;

(2) 所有答题均应填写在答题纸上对应的序号栏内,仅写在试题栏中不予评分;

(3) 答题时,要求书写工整,如果字迹过于潦草、模糊不清造成无法辨认,视为错答;

(4) 答题结束后,请交答题纸。保留试卷,以备课堂使用。

一.选择题(25分)

1.一幅具有真彩色(24位)、分辨率为1024╳768的数字图象,在没有进行数据压缩时,它的数

据量大约是(1) 。

A.900KB B. 18MB C. 3.75MB D. 2.25MB

2.已知X的补码为10011000,则它的原码是(2)

A. 01101000

B. 01100111

C. 11101000

D. 10011000

3.IP地址是一串很难记忆的数字,于是人们开发了(3) ,该系统给主机赋予一个用字母代

表的名字,并负责IP地址与名字之间的转换。

A.DNS域名系统B.WINDOWS NT系统

C.UNIX系统D.FTP系统

4.下面是关于计算机中定点数和浮点数的一些叙述,正确的是(4) 。

A.浮点数是既有整数部分又有小数部分的数,定点数只能表示纯小数

B.浮点数的尾数越长,所表示的数的精度就越高

C.定点数可表示的数值范围总是大于浮点数所表示的范围

D.浮点数使用二进制表示,定点数使用十进制表示

5.系统软件是给其他软件提供服务的程序集合,下面的叙述中错误的是(5) 。

A.系统软件与计算机硬件有关。

B.在通用计算机系统中系统软件几乎是必不可少的。

C.操作系统是系统软件之一。

D.IE浏览器也是一种系统软件。

6.微机硬件系统中地址总线的宽度(位数)对(6) 影响最大。

A. 存储器的访问速度

B. CPU可直接访问的存储器空间大小

C. 存储器的字长

D. 存储器的稳定性

7.企业内部网是采用TCP/IP技术,集LAN、W AN和数据服务为一体的一种网络,它也称为

(7) 。

A. 局域网

B. 广域网

C. Intranet

D. Internet

8.下列网络协议中,不用于收发电子邮件的是__(8)____。

A. IMAP

B. POP3

C. SMTP

D. FTP

9.Internet使用TCP/IP协议实现了全球范围的计算机网络的互连,连接在Internet上的每一台主

机都有一个IP地址,下面不能作为IP地址的是_ (9) 。

A.201.109.39.68

B. 120.34.0.18

C.21.18.33.48

D.127.0.257.1

10.假设某用户上网时输入https://www.sodocs.net/doc/0117789132.html,,其中的http是(10) 。

A.超文本传输协议

B. 文件传输协议

C. 计算机主机域名

D. TCP/IP协议

11.若定义函数

int f(int x) {x++; return x;}

执行以下语句:

int a=5; f(a)+f(a);

则a的值是(11)。

A.5 B. 6 C. 7 D.8

12.以下的函数原形说明中存在语法错误的是(12)。

A.void f(int a ,int) B. void f2(int ,int);

C. void f3(int , int =5)

D. int f4(int x ; int y)

13.对于基类中的private成员,其在公有派生类中的访问权限为(13)。

A.不可访问 B. private

C. protected

D. public

14.下面关于基类与派生类的叙述正确的是(14)。

A.派生类对象不能赋给基类对象

B.派生类对象的地址不能赋给其基类的指针变量

C.基类对象不能赋给派生类对象

D.基类对象的地址能赋给派生类的指针变量

15.下列有关运算符重载的叙述正确的是(15)。

A.非静态成员函数重载运算符时带this指针

B.友元函数重载运算符时带this指针

C.成员函数与友元函数重载运算符时都不带this指针

D.用成员函数与友元函数重载同一运算符时,两者的参数类型与参数个数相同

16.设有以下说明语句:

char s1[20]=”hello”,s2[20]=”China”,const char *ptr=s1;

以下语句中不符合C++语法规则的语句是(16)

A.strcpy(s2 , ptr) B. ptr=s2 C. ptr=ptr+4 D. *ptr =*s2

17.设有类的定义:

class M{

public:

int *v;

M( ){}

M(int i ){v=new int(i) ; }

};

下列表示中,定义该类的对象m对其成员v进行正确操作的是(17)。

A.M m;m.v=10 B. M m ; *m.v=10

C. Mm; m.*v=10

D. M m(10)

18.若有“char p[]=”A\OBC\ODBC\n”;”,则strlen(p+4)的值是(18)。

A.5 B. 2 C. 1 D. 0

19.设函数声明语句中的参数表为(int &a , int &b ,int c),函数体中a,b,c三个变量的值都发生变

化;主函数中调用此函数的实参表为(x,y,z),调用函数语句执行后,以下叙述正确的是(19)。

A. 变量x和y的值发生变化

B. 变量x和y的值不发生变化

C. 变量x、y、z的值都发生变化

D. 只有变量z的值发生变化

20.以下选取项正确的是(20)。

A.char *a=”china” ; 等价于char *a; *a=”china”;

B.char str[]=”china”; 等价于char str[10]; str[] = {“china”};

C.char c[4]=”abc”;d[4]=”abc” ; 等价于char c[4]=d[4]=”abc”;

D.char *s=”china” ; 等价于char *s; s=”china”;

21.以下选项中错误的是(21)。

A.派生类可以继承多个基类

B.抽象类必须是虚基类

C.派生类可以有多个虚基类

D.可以有多个派生类继承同一个基类

22.若定义类A:

class A{

public:

A(int x=0);

};

执行语句“A a(4) , b[3] ,* p[2] ;”,则自动调用该类的构造函数的次数为(22)。

A.6 B. 4 C. 3 D. 1

23.若有类定义

class Term{

… …

public:

int addterm( );

};

作用域运算符::正确使用的是(23)。

A)int Term:: addterm( ){…}

B)int::Term addterm( ){…}

C)int Term addte rm::( ){…}

D)int Term addterm( )::{…}

24.如果定义了字符变量ch,以下(24)语句可以实现将键入的字符(包括空格、回车及间隔

符)赋予ch。

A.ci n>>ch

B. cin>>get(ch)

C. cin.get(ch)

D. ch=get()

25.设有说明:static int a[][2]={{1,2},{3,4,}}; int *pa,(*pb)[2];则执行语句

pb=a; pa=pb[0];后,(*(pa+3))值是: (25)

A. 4

B. 2

C. &a[1][0]

D. &a[0][1]

二.填空(15分)

1.函数重载是指函数名相同,但函数的(1)或函数的(2)不同。

2.在C++中,编译预处理包含三方面的内容,它们分别是包含文件、(3)和(4)。

3.在C++中,运算符的重载有两种实现方法,一种是通过成员函数来实现,另一种则是通过(5)来实现。

4.当一个类只能作为派生类的基类,不能用来说明这种类的对象时,这种类称为(6)。

5.在C++中函数的参数传递方式有三种:第一种是值传递; 第二种是指针传递; 第三种是

(7)传递;

6.设有语句”int a=5,b=7,c=15,d; d=b>a||(c=a+b)”;则c的值是(8)。

7.任何一个类至少包含两个构造函数,一个是缺省的构造函数或用户显式定义的构造函数。另一个是(9)。

8.若有宏定义:#defin X 2

#defin Y(n)((X+1)*n)

则执行语句:z=2*(X+Y(X+2));后,z的值是: (10) 。

9. C++允许用户利用fstream类来定义非标准的文件对象。当被定义的对象是调用重载运算符”>>”或”<<”来读取或写入文件时,这个文件必定是__(11)__文件。

10.设有说明语句:

char s[]=”123\t456\00089”,*p=s;

执行以下两个语句:

cout<<*(p+5)<<’\n’;

cout<<(p+5) <<’\n’;

则输出分别为(12)和(13)。

11.在C++中,将多态性分为静态多态性和动态多态性两种。函数重载属于(14),虚函数属于(15)。

三.阅读程序,回答问题(总共45分)

1.

#include

class A

{ int x,y;

public:

A(int a,int b){x=a; y=b; cout<<"ABC"<<'\t';}

A(){ x=3; y=4; cout<<"CBA"<<'\n';}

void Show()

{ cout<<"x="<

~A(){cout<<"XYZ"<<'\n';}

};

void main(void)

{

A *s1=new A(1,2),*s2=new A; s2->Show();

delete s1; delete s2;

}

问题一:本程序的执行后输出是 (1) (6分)问题二:如果将语句s2->Show()改为s1->Show(),执行结果是(2) (6分)

2.下面程序的输出是_(3)_ (1分) #include

fun3(int x)

{static int a=3;

a=x;

return(a);

}

void main()

{int k=2,m=1,n;

n=fun3(k);

n=fun3(m+n);

cout<

}

3.

#include

class A

{ int x;

public:

void Show()

{ cout<<"x="<

A(int a=10)

{ x=a; cout<<"A"<<'\n'; }

~A(){cout<<"~A"<<'\n';}

};

void main(void)

{

A f; f.Show(); f=20; f.Show();

}

问题一:本程序共输出(4)行,依次是 (5) (5分)

4.以下程序第一行输出是__(6)__,第二行输出是___(7)___ (2分)#include

void sub(int n){

int m, r ;

if(n==0)

{cout<<"**"<

m=n/10; r=n%10;

sub(m);

cout<<"**"<

cout<<"++"<

}

void main( ){

int a=1234;

sub(a);

cout<<"++"<

5.

#include "iostream.h"

class A{

public:

virtual void fun(){cout<<"A::fun"<<'\t';}

A(){fun();}

void g(){fun();}

};

class B:public A{

public:

B(){fun();}

void fun(){cout<<"B::fun"<<'\t';}

};

void main() { B b; b.g(); }

问题:程序的输出依次是 (8) (3分)

6.写出执行下面小程序的输出结果(9)。(5分)

void ac(float x);

bc( );

int m=10;

void main( ){

int i,s=0;

float x;

x=0.5;

ac(x);

for(i=0;i<4;i++){

s=s+bc();

cout<<``&``<

}

}

void ac(float x){

int i=0;

float s=0;

while(i<40){

s=s+i*x;

i=i+m;

}

cout<

}

bc( ){

static int s;

s=s+2*m;

cout<<``s=``<

return s;

}

7.下面程序的输出是_(10)_ 。(3分)#include "iostream.h"

#define PR(ar) cout<

void main()

{

int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;

for(j=3;j;j--)

{

switch(j)

{

case 1:

case 2: PR(*p++);break;

case 3: PR(*(--p));

default:;

}

}

}

8.设有以下说明,请根据说明语句的顺序回答以下问题:(4分)

1) const float a=1;

2) float &x=a;

3) float b[3],&t=b[2];

4) int &top=*new int;

5) const int *p=∑

6) const char *const s1;

7) const float *const s2=b;

8) const float *const s3=&b;

9) enum grade{math,eng,phy,com};

10) enm grade=math;

11) grade sum=math;

问题一:以上正确的说明语句是:(11)

问题二:含有正确表示引用类型说明的语句是:(12)

问题三:正确的常量说明语句是:(13)

问题四:正确说明枚举变量的语句是:(14)

9.执行下面的程序后,file1.txt中的内容是(15)(1分) #include

char getonech(char s[])

{ static int k;

return s[k++]; }

void main(){

char *s=”AB123AB”;

ofstream f1(“file1.txt”);

char ch;

while(ch=getchar(s))

f1.put(ch);

f1.close();

}

10.下面程序中编译有错误的语句的标号为(16)的语句(2分)#include

class D{

int x,y;

public:

D(int a,int b=0){x=a;y=b;cout<<"a"<

D(int a){x=a,y=0;cout<<"b"<

void SetXY(int a,int b){x=a,y=b;} //C

int GetX(){ return x ;} //D

int GetY(){return y;} //E

};

void main()

{

D a(3,3); //F

D b(9); //G

cout<

}

其错误原因是:(17)。

A)形、实参个数不一致。

B)构造函数冲突。

C)缺少类型转换构造函数。

D)缺少拷贝构造函数。

11.阅读以下程序,完成以下选项 (2分) #include

class test03{

int x,y;

public:

int right,bottom;

test03(int a=10,int b=20)

{ x=a; y=b; cout<

test03(int a, int b)

{ x=a; y=a-b; cout<

};

void main(void)

{ test03 a(20,10),b; }

该程序(18)

A.有错,因为对象a、b与构造函数的形参同名

B.有错,因为对象b没有对应的缺省构造函数可调

C.有错,因为构造函数不符合重载规则

D.正确,因为第一个构造函数是缺省构造函数,第二个是带参构造函数。执行结果为

20 10

10 20

在该程序中(19)

A.将对象b写成b( )都是调用缺省构造函数

B.只有对象b改成b( )才是调用缺省构造函数

C.将对象a写成a( ),对象b写成b(20,10)才能正确调用

D.以上说法都不正确

四.完善程序(20分)

1.函数featch_int(char *ps ,int pi[])的功能是:将ps所指向的字符串中的连续数字作为一

个整数,依次取出整数并放到整形数组pi中,函数返回从字符串中取出的整数的个数.主函数中完成字符串的输入,并输出提取的所有整数。

例如:输入的字符串:“sfs345 fds456 df56j”,则输出:345 456 56

#include

int featch_int(char *ps,int pi[]){

int len=0;

while(*ps)

if(!(*ps>='0'&&*ps<='9')) (1) ;

else {

int num=0;

while( (2) ){

num=num*10+*ps-'0';

ps++;

}

(3) ;

len++;

}

return (4) ;

}

void main( ){

char str[300];

int b[50],n,i;

cout<<"请输入一个含有数字的字符串:\n";

cin.getline(str,200);

n=featch_int( (5) );

cout<<"其中有"<

for(i=0;i

cout<

if((i+1)%5==0) cout<<'\n';

}

coud<

}

2.已建立一条无序链表,head指向链首,链表上结点的数据结构为

Struct Node{

double num;

Node next;

};

以下函数 sort(Node *head) 的功能是:将参数head所指向链表上的各个结点,按num值升序排序,并返回排序后链表的链着指针。

算法提示:先让h指向空链,依次从head所指向的链表上取下一个结点,然后将取下的结点插入到已排序的h所指向的链表上。

#include

Node* sort(Node *head)

{

if(head==0) return head;

Node *h,*p;

h=0;

while(head){

p=head;

(6) ;

Node *p1,*p2;

if(h==0){

h=p;

(7) ;

}

else if( (8)){

p->next=h;

h=p;

}

else {

p2=p1=h;

while(p2->next && p2->numnum){

p1=p2;

(9) ;

}

if( (10)){

p2->next=p;

p->nex=0;

}

}

}

return h;

}

3.以下程序实现一个由动态数组构成的线性表的类,在该类的线性表中存放若干个实数。通过重

载运算符实现两个线性对应元素间的赋值,重载提取运算符完成线性表的输入,重载插入运算符完成线性表的输出。

#include

class List{

int size;

double *list;

public:

List(int=1,double=0.0);

~List(){delete []list;};

List & operator=(const List&);

friend ostream& operator<<(ostream &,List &);

friend istream& operator>>(istream &,List &);

};

List::List(int sz,double t){

size=sz;

list= (11) ;

for(int i=0;i

}

List & List::operator=(const List& v){

if(&v!=this){

delete[]list;

size=v.size;

list=new double[size];

for(int i=0;i

}

return *this;

}

(13) <<(ostream &os,List & v){

int i;

for (i=0;i

os<

if((i+1)%8==0) os<<'\n';

}

return os;

}

(14) >>(istream &is, List & v){

int i;

for (i=0;i

cout<

(15) >>v.list[i];

}

return is;

}

void main(){

List a(4),b(4);

cout<<"input List b:\n";

cin>>b;

cout<<"b:"<

a=b;

cout<<"a:"<

}

4.以下程序实现一个简化的字符串类。在类String中,定义了拷贝构造函数;重载的运算符“+=”,

实现了字符串类的复合赋值运算。

#include

#include

class String{

protected:

char *s;

public:

String(char *p=0){

if(p==0) s=0;

else{

s=new char[strlen(p)+1];

strcpy(s,p);

}

}

String(const String &); //拷贝构造函数

~String(){

if(s) delete []s;

}

void Show(){

cout<

}

String & operator+=(const String &);

};

String::String( (16)){ if(s1.s){

s=new char[ (17)];

strcpy(s,s1.s);

}

else

s=0;

}

(18)operator +=(const String &s1){ if(s!=0||s1.s!=0){

char *p=s;

s=new char[ (19)];

if(p){

strcpy(s,p);

strcat(s,s1.s);

}

else strcpy(s,s1.s);

if(p) delete[]p;

}

return (20);

}

void main(){

String s1("C++ programming"),s2("Student study");

String s3(s2);

s3+=s1;

s1.Show();

s2.Show();

s3.Show();

}

2系,611系C++短学期强化训练试卷B答案

一、选择题(25分)

二、填空题(15分)

三、阅读程序,回答问题(40分)

1.ABC CBA x=3 y=4 XYZ XYZ 2. ABC CBA x=1 y=2 XYZ XYZ

3. 3 4. 4 5. A/x=10 A/~A/X=20 ~A 6. ** 7.**1++1**2++2**3++3**4++4++ 8. A::fun B::fun B::fun 9. 0.5,40,30/s=20&20/s=40&60/s=60&120/s=80&200

10. 9 9 11 11. 1 2 3 4 7 9 11 12. 2 3 13. 1 7 14. 11 15. AB123AB 16.G处 17. B

18. C 19. D

四、完善程序题,(20分)

1.ps++ 2. *ps>='0'&&*ps<='9' 3. pi[len]=num 4.len 5. str,b 6. head=head->next or head=p->next 7.p->next=0 or h->next=0 8. h_num>=p->num or p->num>p2->num

9. p2=p2->next 10.p2->numnum or p->num>p2->num 11. new double[size] or new double[sz]12. list[i]=v.list[i] 13.ostream& operator 14. istream& operator15. is

16. const String & s1 17. strlen(s1.s)+1

18. String & String:: 19.strlen(s)+strlen(s1.s)+1 20. *this

相关主题