最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C + +程序设计模拟试卷8(第1-11章)

IT圈 admin 34浏览 0评论

2024年3月28日发(作者:于语诗)

一. 选择题(每题1分,共 25分 )

1.下列变量名中,( )是合法的。

A.56A B._abc C.d-Ptr

2.下列各种运算符中,( )优先级最高。

A. + B.&& C.== D.*=

3.设变量m,n,a,b,c,d均为0,执行(m = a==b)&&(n=c==d)后,m,n的值是( )。

A.0,0 B. 0,1 C. 1,0 D. 1,1

4. 字符串”tv0whichn”的长度是( )。

A. 4 B. 3 C. 9 D. 字符串有非法字符,输出值不确定

5. 设a=2,b=3,c=2;计算a+=b*=(++b-c++)中a、b、c的值( )。

A.8、6、2 B. 2、4、2 C.10、8、3 D. 5、3、3

6. 已知:int i=5,下列do-while循环语句的循环次数为( )。

do{cout<

i--;

}while(i!=0);

A.0 B.1 C.5 D.无限

7.下面关于循环语句的描述中,( )是错误的。

A.循环体内可以包含有循环语句

B.循环体内必须同时出现break语句和continue语句

C.循环体内可以出现选择语句

D.循环体内可以是空语句

8.下面程序段( )。

x=3;

do

{y=x--;

if(!y) {cout<<”x”; continue;}

cout<<”#”;}

while(x>=1 && x<=2);

A.将输出## B.将输出###

C.是死循环 D.含有不合法的控制表达式

9.在函数的定义格式中,下面各组成部分中,( )是可以省略的。

A.函数名 B.函数体 C.函数数据类型说明 D.函数参数

10.在函数的引用调用时,实参和形参应该是使用( )。

A.变量值和变量 B.地址值和指针C.变量值和引用 D.地址值和引用

11.以下关于文件操作的叙述中,不正确的是( )。

A.打开文件的目的是使文件对象与磁盘文件建立联系

B.文件读写过程中,程序将直接与磁盘文件进行数据交换

C.关闭文件的目的之一是保证将输出的数据写入硬盘文件

D.关闭文件的目的之一是释放内存中的文件对象

12. 若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。

A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])

13. 以下程序的输出结果是( )。

#include

void main()

{char s[]="abcdefbcde",*p=s;

int v1=0,v2=0,v3=0,v4=0;

for (p;*p;p++)

switch(*p)

{

case 'a':v1++;break;

case 'b':v3++;break;

case 'e':v2++;break;

default: v4++;

}

cout<

}

A.1,2,2,5 B.4,7,5,8 C.1,5,3,10 D.8,8,8,8

14. 下列结构体定义,正确的是 。

A. record { B. struct record {

int no; int no;

char num[16]; char num[16];

float score ; float score ;

} ; }

C. struct record { D. struct record {

int no; int no

char num[16]; char num[16]

float score ; float score

} ; }

15. 下列是构造函数的特点,( )是错误的。

A.构造函数是一种成员函数,它具有一般成员函数的特点

B.构造函数的名称与其类名相同

C.构造函数必须指明其类型

D.一个类中可定义一个或多个构造函数

16. 关于友元函数的描述中,( )是错的。

A.? 友元函数是成员函数,它被说明在类体内

B.? 友元函数可直接访问类中的私有成员

C.? 友元函数破坏封装性,使用时尽量少用

D.? 友元类中的所有成员函数都是友元函数

17. 下列对派生类的描述中,( )是错误的。

A.? 一个派生类可以作为另一个派生类的基类

B.? 派生类至少应有一个基类

C.? 基类中成员访问权限继承到派生类中都保持不变

D.? 派生类的成员除了自已定义的成员外,还包含了它的基类成员

18. C++类体系中,能被派生类继承的有( )。

A.构造函数 B.虚函数 C.友元函数 D.析构函数

19.关于下列虚函数的描述中,( )是正确的。

A. 虚函数是一个static存储类的成员函数

B. 虚函数是一个非成员函数

C. 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D. 派生类的虚函数与基类的虚函数应具有不同的类型或个数

20. 以下有关静态数据成员函数的叙述不正确的是( )。

A.静态成员函数属于整个类

B.对静态成员函数的引用不允许使用对象名

C.在静态成员函数中不能直接引用类的非静态成员

D.使用类名可以直接调用其静态成员函数

21. 下列有关运算符重载的描述中,( )是正确的。

A.运算符重载可改变其优先级 B.运算符重载不改变其语法结构

C.运算符重载可改变其结合性 D.运算符重载可改变其操作数的个数

22.对new运算符的下列描述中,( )是错误的。

A.?? 它可以动态创建对象和对象数组

B.?? 用它创建对象数组时必须指定初始值

C.?? 用它创建对象时要调用构造函数

D.?? 用它创建的对象可以使用运算符delete来释放

23.下列是为字符数组赋字符串的语句组,其中错误是( )。

s[10]; s=”program”; s[]=”program”;

s[10]=”Hello!”; s[10];strcpy(s,”hello!”);

24.当调用函数时,实参是一个一维数组名a,则向函数传送的是( )。

A.数组的长度 B.数组所有元素的值

C.数组元素a[0]的值 D.数组元素a[0]的地址

25. 下列有关类的说法不正确的是( )。

A. A.? 对象是类的一个实例

B. B.? 任何一个对象只能属于一个具体的类

C. C.? 一个类只能有一个对象

D. D.? 类与对象的关系和数据类型与变量的关系相似

?

二. 填空题 (每空1分,共23分)

1.C++程序语言中程序从 位置开始执行。

2.设int a=7;float x=2.5,y=8.2;表达式x+a%3*(int)(y-x)%2/4的值是

3.? ”判断整数x和整数y是否都为奇数”的C++语言表达式是 。

4.将字符串s2连接到字符串s1后的函数调用是 。

5设x=2,y=3,z=4;则z+=x++&&y++&&++z表达式执行后,x、y、z的值分别是 。

6.若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是 。

7.已知字母a的ASCII码为十进制数97,ch为字符变量,则ch=’a’+’8’-’5’的值为 。

8.设:int a[5]={10,20,30,40,50};int *p=&a[0];表达式++*p+*(a+3)的值是 。

9.若有宏定义: #define T(x,y,z) x*y*z/4

cout<

上述程序段运行结果为 。

10.“判断整数a是否在闭区间[-10,10]之中”的C++语言表达式是 。

11.设有代码“static int a[3][4]={{1,2}, {0}, {4,6,8,10}};”则a[1][2]值为 。

12.假定所有变量均已正确定义,下列程序段运行后x的值是 。

a = b = c = 14; x = 35;

if(!a)x--;else if(b);if(c)x = 3;else x = 4;

13.类的成员函数可以在 定义,也可以在 定义。

14.如类中没有明确定义析构函数,清除对象的工作 来完成,原因是 。

15.生成一个派生类对象时,先调用 的构造函数,然后调用

的构造函数。

16.在继承关系中, 称为多重继承, 称为单继承。

17.若在I/O流的输出中使用控制符setfill( )设置填充字符,应包含的头文件是 。

18.在私有继承关系下,基类的公有成员和保护成员将成为派生类中的 成员,它们只能由 来访问。

三.写出下列程序运行结果(每题4分,共24分)

1. #include

void main()

{ int n=0,j=0,s=0;

for (int i=8;i<=20;i++)

{ n++;i++;

if (i%4==0)

j++;

else

s++;

} cout<<"n="<

}

2. #include

void fun(int i);

void main( )

{ int n;

for (n=1;n<5;n++) fun(n);

}

void fun(int i )

{ static s=0;

s+=i;

cout<

}

3. #include

void main()

{ int i,a[]={1,2,3,4,5,6,7,8},*p=a;

for (i=1;i<5;i++)

p[i]=a[i-1]+a[i+1];

cout<

}

4. class mystr

{ char string[81];int len;

public:

mystr(char *s){strcpy(string,s);}

void getvalue(char *s,int &n)

{strcpy(s,string); n=len; }

friend mystr operator+(mystr a,mystr b)

{mystr c(" ");

strcpy(,);

strcat(,);

=strlen();

return c;}

};

void main()

{ char st[81]; int l;

mystr a("Hello "),b("everybody!"),c(" ");

c=a+b;

ue(st,l);

cout << st<

}

5. #include

#include

int count=0;

class Point{

int x,y;

public:

Point(){x=1;y=1;count++;}

~Point(){count--;}

friend void display();

};

void display()

{cout <<"There are "<

void main()

{ Point a;

display();

{ Point b[5];

display();

}

display();

}

6.#include

class base

{ public:

virtual void show()

{cout<<"class base show() is called.n";}

};

class derived:public base

{public:

void show()

{cout<<"class derived show() is called.n";}

};

void display(base *obj)

{obj->show();}

void main()

{ base demo1;

derived demo2;

display(&demo1);

display(&demo2);

}

四.改正错误(每题有几处错误,在错误处画线,并写出正确语句。)(每题 4分,共16分)

1.函数fun用以求某正整数的阶乘值。

#include

void fun(n)

{ int i;

double f=0;

if(n<0)

2024年3月28日发(作者:于语诗)

一. 选择题(每题1分,共 25分 )

1.下列变量名中,( )是合法的。

A.56A B._abc C.d-Ptr

2.下列各种运算符中,( )优先级最高。

A. + B.&& C.== D.*=

3.设变量m,n,a,b,c,d均为0,执行(m = a==b)&&(n=c==d)后,m,n的值是( )。

A.0,0 B. 0,1 C. 1,0 D. 1,1

4. 字符串”tv0whichn”的长度是( )。

A. 4 B. 3 C. 9 D. 字符串有非法字符,输出值不确定

5. 设a=2,b=3,c=2;计算a+=b*=(++b-c++)中a、b、c的值( )。

A.8、6、2 B. 2、4、2 C.10、8、3 D. 5、3、3

6. 已知:int i=5,下列do-while循环语句的循环次数为( )。

do{cout<

i--;

}while(i!=0);

A.0 B.1 C.5 D.无限

7.下面关于循环语句的描述中,( )是错误的。

A.循环体内可以包含有循环语句

B.循环体内必须同时出现break语句和continue语句

C.循环体内可以出现选择语句

D.循环体内可以是空语句

8.下面程序段( )。

x=3;

do

{y=x--;

if(!y) {cout<<”x”; continue;}

cout<<”#”;}

while(x>=1 && x<=2);

A.将输出## B.将输出###

C.是死循环 D.含有不合法的控制表达式

9.在函数的定义格式中,下面各组成部分中,( )是可以省略的。

A.函数名 B.函数体 C.函数数据类型说明 D.函数参数

10.在函数的引用调用时,实参和形参应该是使用( )。

A.变量值和变量 B.地址值和指针C.变量值和引用 D.地址值和引用

11.以下关于文件操作的叙述中,不正确的是( )。

A.打开文件的目的是使文件对象与磁盘文件建立联系

B.文件读写过程中,程序将直接与磁盘文件进行数据交换

C.关闭文件的目的之一是保证将输出的数据写入硬盘文件

D.关闭文件的目的之一是释放内存中的文件对象

12. 若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。

A.p[i] B.*(*(a+i)) C.a[p-a] D.*(&a[i])

13. 以下程序的输出结果是( )。

#include

void main()

{char s[]="abcdefbcde",*p=s;

int v1=0,v2=0,v3=0,v4=0;

for (p;*p;p++)

switch(*p)

{

case 'a':v1++;break;

case 'b':v3++;break;

case 'e':v2++;break;

default: v4++;

}

cout<

}

A.1,2,2,5 B.4,7,5,8 C.1,5,3,10 D.8,8,8,8

14. 下列结构体定义,正确的是 。

A. record { B. struct record {

int no; int no;

char num[16]; char num[16];

float score ; float score ;

} ; }

C. struct record { D. struct record {

int no; int no

char num[16]; char num[16]

float score ; float score

} ; }

15. 下列是构造函数的特点,( )是错误的。

A.构造函数是一种成员函数,它具有一般成员函数的特点

B.构造函数的名称与其类名相同

C.构造函数必须指明其类型

D.一个类中可定义一个或多个构造函数

16. 关于友元函数的描述中,( )是错的。

A.? 友元函数是成员函数,它被说明在类体内

B.? 友元函数可直接访问类中的私有成员

C.? 友元函数破坏封装性,使用时尽量少用

D.? 友元类中的所有成员函数都是友元函数

17. 下列对派生类的描述中,( )是错误的。

A.? 一个派生类可以作为另一个派生类的基类

B.? 派生类至少应有一个基类

C.? 基类中成员访问权限继承到派生类中都保持不变

D.? 派生类的成员除了自已定义的成员外,还包含了它的基类成员

18. C++类体系中,能被派生类继承的有( )。

A.构造函数 B.虚函数 C.友元函数 D.析构函数

19.关于下列虚函数的描述中,( )是正确的。

A. 虚函数是一个static存储类的成员函数

B. 虚函数是一个非成员函数

C. 基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D. 派生类的虚函数与基类的虚函数应具有不同的类型或个数

20. 以下有关静态数据成员函数的叙述不正确的是( )。

A.静态成员函数属于整个类

B.对静态成员函数的引用不允许使用对象名

C.在静态成员函数中不能直接引用类的非静态成员

D.使用类名可以直接调用其静态成员函数

21. 下列有关运算符重载的描述中,( )是正确的。

A.运算符重载可改变其优先级 B.运算符重载不改变其语法结构

C.运算符重载可改变其结合性 D.运算符重载可改变其操作数的个数

22.对new运算符的下列描述中,( )是错误的。

A.?? 它可以动态创建对象和对象数组

B.?? 用它创建对象数组时必须指定初始值

C.?? 用它创建对象时要调用构造函数

D.?? 用它创建的对象可以使用运算符delete来释放

23.下列是为字符数组赋字符串的语句组,其中错误是( )。

s[10]; s=”program”; s[]=”program”;

s[10]=”Hello!”; s[10];strcpy(s,”hello!”);

24.当调用函数时,实参是一个一维数组名a,则向函数传送的是( )。

A.数组的长度 B.数组所有元素的值

C.数组元素a[0]的值 D.数组元素a[0]的地址

25. 下列有关类的说法不正确的是( )。

A. A.? 对象是类的一个实例

B. B.? 任何一个对象只能属于一个具体的类

C. C.? 一个类只能有一个对象

D. D.? 类与对象的关系和数据类型与变量的关系相似

?

二. 填空题 (每空1分,共23分)

1.C++程序语言中程序从 位置开始执行。

2.设int a=7;float x=2.5,y=8.2;表达式x+a%3*(int)(y-x)%2/4的值是

3.? ”判断整数x和整数y是否都为奇数”的C++语言表达式是 。

4.将字符串s2连接到字符串s1后的函数调用是 。

5设x=2,y=3,z=4;则z+=x++&&y++&&++z表达式执行后,x、y、z的值分别是 。

6.若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是 。

7.已知字母a的ASCII码为十进制数97,ch为字符变量,则ch=’a’+’8’-’5’的值为 。

8.设:int a[5]={10,20,30,40,50};int *p=&a[0];表达式++*p+*(a+3)的值是 。

9.若有宏定义: #define T(x,y,z) x*y*z/4

cout<

上述程序段运行结果为 。

10.“判断整数a是否在闭区间[-10,10]之中”的C++语言表达式是 。

11.设有代码“static int a[3][4]={{1,2}, {0}, {4,6,8,10}};”则a[1][2]值为 。

12.假定所有变量均已正确定义,下列程序段运行后x的值是 。

a = b = c = 14; x = 35;

if(!a)x--;else if(b);if(c)x = 3;else x = 4;

13.类的成员函数可以在 定义,也可以在 定义。

14.如类中没有明确定义析构函数,清除对象的工作 来完成,原因是 。

15.生成一个派生类对象时,先调用 的构造函数,然后调用

的构造函数。

16.在继承关系中, 称为多重继承, 称为单继承。

17.若在I/O流的输出中使用控制符setfill( )设置填充字符,应包含的头文件是 。

18.在私有继承关系下,基类的公有成员和保护成员将成为派生类中的 成员,它们只能由 来访问。

三.写出下列程序运行结果(每题4分,共24分)

1. #include

void main()

{ int n=0,j=0,s=0;

for (int i=8;i<=20;i++)

{ n++;i++;

if (i%4==0)

j++;

else

s++;

} cout<<"n="<

}

2. #include

void fun(int i);

void main( )

{ int n;

for (n=1;n<5;n++) fun(n);

}

void fun(int i )

{ static s=0;

s+=i;

cout<

}

3. #include

void main()

{ int i,a[]={1,2,3,4,5,6,7,8},*p=a;

for (i=1;i<5;i++)

p[i]=a[i-1]+a[i+1];

cout<

}

4. class mystr

{ char string[81];int len;

public:

mystr(char *s){strcpy(string,s);}

void getvalue(char *s,int &n)

{strcpy(s,string); n=len; }

friend mystr operator+(mystr a,mystr b)

{mystr c(" ");

strcpy(,);

strcat(,);

=strlen();

return c;}

};

void main()

{ char st[81]; int l;

mystr a("Hello "),b("everybody!"),c(" ");

c=a+b;

ue(st,l);

cout << st<

}

5. #include

#include

int count=0;

class Point{

int x,y;

public:

Point(){x=1;y=1;count++;}

~Point(){count--;}

friend void display();

};

void display()

{cout <<"There are "<

void main()

{ Point a;

display();

{ Point b[5];

display();

}

display();

}

6.#include

class base

{ public:

virtual void show()

{cout<<"class base show() is called.n";}

};

class derived:public base

{public:

void show()

{cout<<"class derived show() is called.n";}

};

void display(base *obj)

{obj->show();}

void main()

{ base demo1;

derived demo2;

display(&demo1);

display(&demo2);

}

四.改正错误(每题有几处错误,在错误处画线,并写出正确语句。)(每题 4分,共16分)

1.函数fun用以求某正整数的阶乘值。

#include

void fun(n)

{ int i;

double f=0;

if(n<0)

发布评论

评论列表 (0)

  1. 暂无评论