您好,欢迎来到九壹网。
搜索
您的当前位置:首页C++试卷2

C++试卷2

来源:九壹网
C + +程序设计模拟试卷2

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

1.下列字符列中,可作为C++语言程序自定义标识符是( )。

A.switch B.file C.break D.do 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. 字符串”vm\\x43\\\\\\np\\102qu”的长度是( )。

A. 8 B. 9 C. 16 D. 17 6.

5.设有代码“int a = 6;”,则执行了语句“a + = a - = a*a;”后,变量a的值是( )。

A.0 B. -24 C. -40 D. –60

6. void main()

{ int x=-1; do

{x=x*x;} while(!x);}

下列说法正确的是( )。

A.是死循环 B.循环执行两次 C.循环执行一次 D.有语法错误

7.下面有关for循环的正确描述是( )。

A.for循环只能用于循环次数已经确定的情况 B.for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体

D.for循环的循环体语句中,可以包含多条语句,但必须用大括号括起来

8.下面程序段( )。

x=3; do

{y=x--;

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

cout<<”#”;} while(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[]=\"12134211\ int v1=0,v2=0,v3=0,v4=0; v1 v2 v3 v4 for (p=s;*p;p++) 2 4 3 4 switch(*p) { case '1':v1++; case '3':v3++; case '2':v2++; default: v4++; } cout<A.4,2,1,1 B.4,7,5,8 C.7,3,2,1 D.8,8,8,8

14. 下列声明结构体变量错误的是( )。

A.struct student B. struct student { int no; { int no;

char name[16]; char name[16]; } st1,st2; };

struct student st1,st2;

C.struct student D. struct student

{ int no; { int no;

char name[16]; char name[16]; } ; };

struct st1,st2; student st1,st2;

15. 对类的构造函数和析构函数描述正确的是( )。

A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 16. 下面对于友元函数描述正确的是( )。

A.友元函数的实现必须在类的内部定义 B.友元函数是类的成员

C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员 17. 派生类的对象对它的基类成员中( )是可以访问的。

A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.私有继承的公有成员 18. C++类体系中,不能被派生类继承的有( )。

A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数 19.以下( )成员函数表示虚函数。

A.virtual int vf(int); B.void vf(int)=0;

C.virtual void vf()=0; D.virtual void vf(int) { };

20. 下面对静态数据成员的描述中,正确的是( )。

A.静态数据成员可以在类体内进行初始化 B.静态数据成员不可以在类体内进行初始化 C.静态数据成员不能受private控制符的作用 D.静态数据成员可以直接用类名调用 21. 继承具有( ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。

A.规律性 B.传递性 C.重复性 D.多样性 22.若有以下定义,则释放指针所指内存空间的操作是 ( )。 float r=news float[10];

A.delete r ; B.delete *r; C.delete []r; D.delete r[]; 23.若有以下定义,则对字符串的操作错误的是( )。 char s[10]=”Program”,t[]=”test”;

A.strcpy(s,t); B.cout<>t;

24.在if语句中的表达式是( )。

A.只能是表达式 B.只能是关系表达式和逻辑表达式 C.只能是逻辑表达式 D.可以是任意表达式 25.在用关键字class定义的类中,以下叙述正确的是( )。

A. A. 在类中,不作特别说明的数据成员均为私有类型 B. B. 在类中,不作特别说明的数据成员均为公有类型

C. C. 类成员的定义必须是成员变量定义在前,成员函数定义在后 D. D. 类的成员定义必须放在类定义体内部

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

1.C++程序有且只有一个 。 2.若有变量定义 int x = 7; float a = 2.5, c = 4.7;表达式

a + (int)(x/3*(int)(c + 2)/2) % 4 的值是 。 3. 3. ”x或y中至少有一个小于z”的C++语言表达式是 。 4.将字符串s2拷贝到字符数组s1的函数调用是 。 5.执行语句“ x = (a = 4, b = a++);”后,变量x、a、b的值依次为 。 6.表述“x或y中有一个大于z”的C++语言表达式是 。 7.字符串str长度的函数调用是 。

8.执行语句“ y = (x = 3, z = --x);”后,变量的值依次为_ 。 9.设 #define a(x) x*x;

cout<上述程序段运行结果为 。

10.设x为整型变量,表达数学关系式:13 < x < 19的C++语言表达式是 。 11.设有代码“static int a[3][4]={{1,2}, {3}, {4,5,6}};”则a[1][1]值为 。 12.若有定义:char u; int b; float v; double d;

则表达式u * b + d - v的值的类型为 。

13.假定所有变量均已正确定义,下列程序段运行后x的值是 。 a = b = c = 0; x = 35;

if(!a)x--;else if(b);if(c)x = 3;else x = 4; 14.类的构造函数的主要作用是 。 15.C++将类继承分为 和 两种。

16.建立类对象时,为节省内存,系统一般只分配用于 _内存。

17.派生类可以定义其_ _____中不具备的数据和操作。

18.operator是C++的一个关键字,它经常和C++的一个运算符连用,构成一个运算符函数名。运算符函数的返回类型不能是 类型。 19.在继承机制下,当对象消亡时,编译系统先执行________的析构函数,然后再执行_______的析构函数。

20.C++文件的两种类型,分别是 和 。

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

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

1. #include

void main( ) {int I;

for(I=1;I<=5;I++) switch(I%2)

{case 0:I++; cout<<“#”;break; case 1:I+=2; cout<<“*”; default: cout<<“\\n”;}}

2. #include

void fun( ); int n=5;

void main( ) { int n=10;

cout<void fun( ) { cout<3. #include

int b=5;

int fun(int n); void main( ) { int i;

for(i=0;i<3;i++)

{ cout<int fun(int n)

{ static a=1; int c=10; a=a+100; b=b+100; c=c+100;

return a+b+c; }

4. #include

int (int m,int n)

{ if(m%n==0) return n;

else return (n,m%n);

}

void main( )

{ int x=40,y=116; cout<<(y,x)<} 5. #include

#include class Point{ int x,y; public:

Point(){x=1;y=1;} Point(int tx,int ty) {x=tx;y=ty;}

~Point(){cout<<\"Point \"<void main() { Point obj1;

Point obj2(10,20); } 6. #include class count

{ static int n; public: count() {n++;} void show()

{cout<{cout<int count::n=0; void main() { count a; a.show(); {count b[4]; b[3].show(); }

a.show(); }

四.改正错误(每题有二处错误,在错误语句或表达式画线,并写出正确语句。)(每题 4

分,共16分)

1.下列程序求字符串长度。

#include

int fun(char s) { int i=0;

while(s[i]!='\\n') {i++;} return i; }

void main()

{char s[80];

cin.getline(s,80); //读一行字符

cout<<\"length:\"<2.下列程序功能是求x的y次方(缺省是x的2次方) #include

double fun(double x,double y) {int i;

double s=1;

for(i=1;ireturn s; }

void main()

{ double x=2.5,y=3;

cout<<\"pow(2.5,2):\"<3.#include

class Point {private:

int x,y;

void init(int a,int b) { x=a;y=b;} void show()

{ cout<<\"x= \"<}; void main()

{ Point a(24,50);

a.show();

}

4.#include

class Amplifier{

float invol,outvol; public:

Amplifier(float vin,float vout) {invol=vin;outvol=vout;} float gain();

};

Amplifier::float gain()

{ return outvol/invol;} void main()

{ Amplifier amp(5.0,10.0);

cout<<\"\\n\\nThe gain is =>\"<五.程序填空(每空2分,共10分)

1.有一个一维数组,存放10个职工的年龄,别写两个函数求职工的最大年龄和最小年龄。

#include void max_age(int arr[ ]);

int max , min; void main( ) { int i;

int array[10];

cout<<\"input 10 data:\"; for(i=0;i<10;i++) { cin>>array[i];}

max_age(array); min_age(array);

cout<<\"max_age is :\"<}

void max_age(int arr[ ]) { int j;

max=arr[0]; //使用全局变量max for(j=1;j<10;j++) if ( ) max=arr[j]; //使用全局变量max }

void min_age(int arr[ ]) {int k;

min=arr[0]; //使用全局变量min for(k=1;k<10;k++) if (min>arr[k]) ; //使用全局变量min }

2.下列程序将0——100之间的整数写入D盘上的write1.dat文件。

# include < iostream.h > # include < stdlib.h > # include < fstream.h > void main ( )

{ ofstream file1 ;

file1.open ( \" \" ) ; if ( ! file1 )

{ cerr << \"\\n D:\\\\write1.dat not open \" << endl ; exit (-1) ; }

for (int k=0 ; k<=100 ; k++ ) file1 << k << \" \" ; ; }

《C++程序设计》上机考试模拟(50分)

1.根据π/4 =1-1/3+1/5-1/7+…求π的近似值,直到最后一项的值小于0.000001为止。(15分)

2.有一行字符,要求将每个单词中的第一个字母改成大写字母(如果已经是大写则不变)。(提示读一行字符用cin.getline( ) ) (15分)

3.定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。程序中通过基类有指针来调用派生类中的虚函数,计算不同形状的面积。(20分)

C++笔试参

一.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 B C C B D C D C D B

16 17 18 19 20 21 22 23 24 25 C A A D B B C C D A 二.填空:

1.main() 2.4.5 3.x6. x>z || y>z 7.strlen(str) 8. 2,2,2 9. 34 10. 1119

11. 0 12. double 13. 4 14. 对对象进行初始化 15。单一继承,多重继承

B B B C A 16.对象 17.基类 18. void 19.派生类,基类 20.字符文件,二进制文件 21.保护,成员 三.看程序写结果:

1.运行结果:

*

#

2.运行结果: 10 5

3.运行结果:

316 516

716

4.运行结果:

4

5.运行结果:

Point 10,20 is deleted. Point 1,1 is deleted.

6.运行结果:

1 5 5 4 3 2 1 1

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

1.下列程序求字符串长度。 #include

int fun(char s) //*s or s[] { int i=0;

while(s[i]!='\\n') //\\0 {i++;} return i; }

void main()

{char s[80];

cin.getline(s,80); //读一行字符 cout<<\"length:\"<2.下列程序功能是求x的y次方(缺省是x的2次方) #include

double fun(double x,double y) // fun(double x,double y=2) {int i;

double s=1;

for(i=1;ireturn s; }

void main()

{ double x=2.5,y=3;

cout<<\"pow(2.5,2):\"<3.#include

class Point {private:

int x,y;

public: //插入 void init(int a,int b) // Point { x=a;y=b;} void show()

{ cout<<\"x= \"<}; void main()

{ Point a(24,50);

a.show();

}

4.#include

class Amplifier{

float invol,outvol; public:

Amplifier(float vin,float vout) {invol=vin;outvol=vout;} float gain();

};

Amplifier::float gain() // float Amplifier:: gain()

{ return outvol/invol;

}

void main()

{ Amplifier amp(5.0,10.0);

cout<<\"\\n\\nThe gain is =>\"<五.程序填空(每空2分,共10分)

1. (1)void min_age(int arr[ ]); (2) max(3) min=arr[k] ;

2.(1)\"d:\\\\write.dat\" ) ; (2) file1.close ;

《C++程序设计》上机考试模拟(50分)

1.根据π/4 =1-1/3+1/5-1/7+…求π的近似值,直到最后一项的值小于0.000001为止。

(15分)

#include #include

const double eps=0.000001; void main()

{ double pi=0.0,temp,s=1; int i=1; temp=1.0;

while(fabs(temp)>=eps) { pi+=temp;

i=i+2; s=-s; temp=s/i; }

cout<<\"\\nPI=\"<2.有一行字符,要求将每个单词中的第一个字母改成大写字母(如果已经是大写则不变)。(提示读一行字符用cin.getline( ) ) (15分)

#include #include void main() { char ch[81]; int i,flag=0;

cout<<\"输入一行字符\\n\"; cin.getline(ch,81); i=0;

while(ch[i]!='\\0')

{while(ch[i]!='\\0'&& ch[i]==' ') {i++;flag=0;} while(ch[i]!='\\0'&& ch[i]!=' ') {

if(ch[i]>='a' && ch[i]<='z' && flag==0) {ch[i]=ch[i]-32; flag=1;} i++; } }

cout<3.定义一个抽象类shape用以计算面积,从中派生出计算长方形、梯形、圆形面积的派生类。程序中通过基类有指针来调用派生类中的虚函数,计算不同形状的面积。(20分)

#include #define PI 3.1415926 #include class base //抽象基类B0声明 {

public: //外部接口 virtual void display( )= 0; //纯虚函数成员 };

class circle:public base //公有派生 { protected: double r,s; public:

circle(double x=0) { r=x;}

void display( )

{cout<<\"圆的面积 \"<class cfx:public base //公有派生 { double a,b,s; public:

cfx(double x=0,double y=0){a=x;b=y;} void display( ) {s=a*b;

cout<<\"长方形面积\"<class tx:public base //公有派生 { double a,b,h,s; public:

tx(double a1=0,double b1=0,double h1=0) {a=a1;b=b1;h=h1;} void display( ) {s=(a+b)*h/2;

cout<<\"梯形面积\"<void fun(base *ptr) //普通函数 {

ptr->display( ); }

void main( ) //主函数 {base *p; //声明抽象基类指针 circle c1(10); //声明派生类对象 cfx c2(9,10); //声明派生类对象 tx c3(6,10,5); p=&c1; fun(p); p=&c2; fun(p); p=&c3; fun(p); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务