南京理工大学C++期末试卷2006

更新时间:2024-01-26 11:22:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一.选择题(1题1分,共20分)

1. 以下选项中,哪一个是合法的字符常量 A. \ B. '\\010' C. A D. 65

2. 表达式 \的值是 A. -3 B. 6 C. 8 D. 12

3. 有以下的程序段,其输出结果是 int x, y, z; x=y=z=0; x=++x || ++y &&++z; cout<

4. 以下程序的执行结果是 #include class OBJ { int n; public: OBJ(int i=0) {n=i; } operator ++( ) { n++;} void Show( ) { cout<

void main( ) { OBJ obj(3); ++obj; obj.Show( ); } A. 3 B. 4 C. 0 D. 1

5. 设有以下程序段:

int a[5]={0}, *p, *q; p=a; q=a;

则下列选项中,合法的运算表达式是 A. p-q B. p+q C. p*q D. p%q

6. 假设MyClass为一个类,则该类的拷贝的构造函数的声明语句为 A. MyClass& (MyClass x); B. MyClass (MyClass x); C. MyClass (MyClass &x); D. MyClass (MyClass *x);

7. 以下程序的执行结果是 #include

void main( )

{ char s[ ]=\ s[3]='\\0'; cout<

8.下面关于纯虚函数与抽象类的描述中,错误的是 A. 纯虚函数是一种特殊的虚函数,它没有具体的实现 B. 抽象类是指具有纯虚函数的类

C. 一个基类中如果具有纯虚函数,该基类的派生类不能再是抽象类 D. 抽象类只能作为基类来用,其纯虚函数的实现由派生类给出

9. 以下程序段的输出结果是: int x=5; do{ x--; }while(!x); cout<

10. 下列虚基类的声明中,正确的是 A. class virtual B: public A B. virtual class B: public A C. class B: public A D. class B: virtual public A

11. 以下四组语句中不符合C++语法规则的是 A. char s[ ]=\ B. char s[20]; s=\C. char *p=\ D. char *p; p=\

12. 类MyClass 的定义如下: class MyClass

{ int value; public: MyClass( ) {value=0; } setVariable( int i) { value=i; } };

则以下各项对下面语句的描述中,正确的是 MyClass *p, my; p=&my;

A. 语句 \是把对象my赋值给指针变量p B. 语句 \调用了两次构造函数 C. 语句 \是正确的调用形式

D. 语句 \与语句 \是等价的

13. 下面函数的功能是 int fun( char *x)

{ char *y=x; while( *y++); return (y-x-1); }

A. 求字符串长度 B. 比较两个字符串的大小

C. 将字符串x复制到字符串y D. 将字符串x连接到字符串y后面

14. 有如下程序段 int **p, *s, k=20; s=&k; p=&s;

请指出**p所代表的是 A. &s B. &k C. s D. k

15. 有以下程序: #include #include void main( ) { char s[ ]=\ cout<

该程序执行后的结果是 A. 赋初值的字符串有错 B. 4,6 C. 0,6 D. 5,6

16.若有定义: int *p;

则下列各选项中,不同于表达式\的是 A. *p++; B. ++*p; C. *p+=1; D. ++(*p);

17. 定义如下枚举类型: enum Day{ Monday, Tuesday, Wednesday, Thursday, Friday=2}; 则下列语句正确的是

A. 表达式Wednesday==Friday的值是1 B. Day day; day=3; C. Day day; day=Monday+3; D. Day day; day=Tuesday+10;

18. 以下程序的执行结果是 #include void main( ) { int a[9]={1,2,3,4,5,6,7,8,9}, *p[3]; for(int i=0; i<3; i++) p[i]=&a[i*3]; cout<

19.下列程序段的输出结果是

#include void fun(int *x, int *y) { cout << *x << *y;

*x=3; *y=4; }

void main( ) { int x=1,y=2;

fun(&y,&x);

cout << x << y<

20. 对于重载的运算符>>,它是一个 A. 用于输入的友元函数 B. 用于输入的成员函数 C. 用于输出的友元函数 D. 用于输出的成员函数

二.基本概念填空题(1题2分)

1.在用class定义一个类时,数据成员和成员函数的默认权限是【1】 。

2.常量'\\t'的数据类型是【2】 。

3.已有声明\,则表达式: x+y/2+'a'-a 的值的类型是【3】 。

4.C++的编译预处理的功能分为三种:宏定义、【4】和文件包含。

5. 若已知a=2,b=0,则表达式 a

6.在Visual C++ 6.0 系统中,常数50存储在内存中,它占用【6】 个字节。

7. C++语言的基本控制结构为顺序结构、 【7】 和循环结构。

8.在C++中,将多态性分为静态多态性和动态多态性两种。函数重载属于【8】 多态性。

9.变量按其作用域分全局变量和局部变量两种。形式参数是【9】 。

10.C++程序是从【10】函数开始执行的。

三、阅读程序,写出以下程序的输出结果(1题3分) 1. #include #define MIN(x, y) (x) < (y) ? (x) : (y) void main( )

{ int i, j, k;

}

i=10; j=15; k=10*MIN(i, j); cout<

2. #include int f( void ) { int a=10, b=0;

static int c=1; a+=b; b+=c; return c=a+b;

} void main( void) { cout<

3. #include #define N 5 int fun(char *s, char a, int n) { int j; *s=a; j=n; while(a

4. #include int f(int n) { if(n==1) return 1; else return f(n-1)+1; } void main( ) { for(int i=1, j=0; i<3; i++) j=j+f(i);

cout<

5. #include

void main( ) { int x=1,y=3;

x++;

{ int x=0;

x+=y*2;

cout << x <<\}

cout << x <<\}

6. #include int x; void funA( int &a, int b) { int first; first=a+b; a=2*b; b=first+4; }

void funB(int u, int &v) { int second; second=x; v=second+4; x=u+v; } void main( ) { int first=0; int second=5; x=6; funA(first,second); funB(first, second); cout<

7. #include

void main( )

{ char *str=\

int x1=0,x2=0,x3=0,x4=0,i; for(i=0; str[i]!='\\0' ; i++)

switch (str[i])

{ case '1': x4++;

case '2': x3++; case '3': x2++; case '4': x1++;

}

cout << x1 << \}

8. #include \

class A {

public:

A( ) { cout << \~A( ) {} };

class B : public A { public:

B( ) { cout << \~B( ) {} };

void main( ) { A *p;

p = new A; B *q;

q = new B; }

9. #include \

class Base { public:

virtual void who( ){cout<<\};

class Derived1 : public Base { public: void who( ){cout<<\

};

class Derived2 : public Base { public: void who( ){cout<<\

};

void main( )

{ }

Base *p;

Derived1 obj1; obj1.who (); Derived2 obj2; p=&obj2; p->who ();

10. #include class MyClass { int m; public: static int n; MyClass( ) {m=0;} void setvalue( ){ m++; n++; } void output( ){ cout<<\} }; int MyClass:: n=2; void main( ) { MyClass obj1, obj2; obj1.setvalue( ); obj1.output( ); obj2.setvalue( ); obj2.output( ); };

四、完善程序(1空2分)

1. 将下面语句段(b)补充完整,使其和语句段(a)在功能上完全一样。 (a) double s=1.0; for( int k=1;k<=10; k++) s+=1.0/(k*(k+1)); (b) double s=0.0; 【1】 ; int k=0; do{ s+=d; k++; d=1.0/(k*(k+1)); }while( 【2】 );

2. 如果一个两位整数是质数,将组成它的两个数字交换位置后形成的整数仍为质数,则称这样的数为绝对质数。例如,13就是一个绝对质数。以下的程序用于找出所有两位绝对质数。

注:质数,又称素数,指只能被自身和1整除的整数,如11,13,17等。 #include \

int prime( int n) //判断整数n是否为质数, 若是返回1,否则返回0 { for( int i=2; i

void main() { int m[2]; for(int i=10;i<100;i++) { m[0]=i; m[1]= 【4】 ; if(prime( 【5】 )&&prime(m[1])) cout<

3. 以下程序通过调用函数scat( )将两个字符串连接起来,程序输出是Nanjing,China。请填空。

#include

void scat(char *p, char *q) { while(*p++); p=p-1; while(*q) { 【6】 ; } *p=0; }

void main() { char str[20]=\ char *s=\ 【7】 ; cout<

4.设已建立了一条链表,链表上结点的数据结构是: struct node{ float English, Math; //表示英语和数学成绩 node *next; };

以下函数ave( )的功能是求出该链表上的结点个数、英语和数学的总成绩,并在链首增加一个新结点,其分量English和math分别存放这两门课的平均成绩。若链表为空链时,直接返回空指针。请填空

node *ave(node *head, int &count) //head是链首地址,count存放求出的结点个数

{ node *p1; float sume=0, summ=0; count=0; if(head==NULL) //空链表 return NULL; p1=head; while( p1 ) { sume+=p1->English ; summ+=p1->Math ; count=count+1; 【8】 ; } p1=new node; p1->English =sume/count; p1->Math = 【9】 ; 【10】 ; head=p1; return head; }

五、编程题(10分)

建立一个数组类ARR,求一个整型数组中正数和负数的个数,具体要求如下: (1)私有数据成员:

int n :数组实际元素个数 int a[100] : 存放数组元素

int pos: 存放整型数组中正数的个数 int neg: 存放整型数组中负数的个数 (2)公有成员函数

ARR(int x[ ], int size): 构造函数,用参数size初始化n,用x数组初始化a数组,将pos和neg初始化为0。

void Num( ): 求整型数组中正数和负数的个数。

void Show( ): 将数组以每行5个数的形式输出到屏幕上,同时输出数组中正数和负数的个数。

(3)在主函数中完成对该类的测试,定义一个整型数组b[ ]={3,-4,6,-8,10,-34,2,80,-100},定义一个ARR类的对象,用b数组及其元素个数初始化该对象,统计数组中正数和负数的个数并输出程序的运行结果。 程序运行结果应为: 3 -4 6 -8 10 -34 2 80 -100 pos=5 neg=4

本文来源:https://www.bwwdw.com/article/ey0w.html

Top