当前位置:文档之家› C++题目含答案

C++题目含答案

C++题目含答案
C++题目含答案

`C++复习资料

一、选择题

1、若X是一个bool型变量,则X&&5<3的值( B )

A、为true

B、为false

C、与X的值相同

D、与X的值相反

2、设a=6,执行语句a+=4; 得到a的值为( D )

A、6

B、12

C、18

D、10

3、字符串”student”占用( D )个字节的空间。

A、7

B、6

C、5

D、8

4、二维数组int b[][4]={{1,2},{1,2,3},{1,2,3,4}}的元素个数为( A )

A、12

B、3

C、4

D、7

5、下列哪个不是用于实现循环结构的语句( B )

A、while

B、if

C、do while

D、for

6、下列表达式为真的是( B )

A、5<3

B、2*3>=6

C、(7= =9)&&(4>0)

D、(10!=2+8)||(5<3)

7、设x=5,执行语句if(x<0) cout<

A、5

B、x

C、无输出

D、0

8、执行语句k=30;j=k++;后k和j的值分别为( C )

A、k=30,j=30

B、k=30,j=31

C、k=31,j=30

D、k=31,j=31

9、表达式7%3+5*9-10/2的结果为( D )

A、42

B、43

C、40

D、41

10、执行cout<<520<

A、520endl”520”

B、520endl520

C、520

D、520

“520”520

11、下列数据属于字符型的是:( C )

A、123

B、true

C、’c’

D、10.5

12、该for循环语句:for(i=1;i<11;i++) sum+=i; 中循环体的执行次数为( C )

A、8

B、9

C、10

D、11

13、对程序段:if(x>y) z=1;

else z=3;

要得到z=3的结果,满足条件的一组数是( D )

A、x=﹣1,y=﹣2

B、x=1,y=0

C、x=2,y=1

D、x=2,y=3

14.下面是关于构造函数的说法,不正确的是(A )。

A. C++规定,每一个类必须有一个构造函数,没有构造函数就不能创建对象

B. 如果没有提供一个类的构造函数(一个都未提供),则C++提供一个默认的构造函数,该默认构造函数是个无参构造函数,它仅仅负责创建对象

C. 虽然一个类定义了一个构造函数(不一定是无参构造函数),C++仍然提供默认的构造函数

D. 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的

15.在下列说法中,不正确的是( B )。

A. 静态成员函数不能利用this指针

B. 只有非静态成员才可以使用this关键字,因为静态成员没有this指针

C.析构函数不接受任何参数,也不带有任何类型的返回值

D. 虚机制在构造函数和析构函数中仍然可以很好地工作,以实现多态性16.声明类test的拷贝构造函数的正确形式是( D )。

A. int test

B. void test

C. test(void)

D. test(test&)

17.一个const对象( B )。

A. 能访问所有成员函数

B. 只能访问const成员函数

C. 也能访问volatile成员函数

D. 能访问const和volatile成员函数

18.下面关于类的对象性质的描述,正确的是(D )。

A. 对象之间不可以相互赋值

B. 不可以说明指向对象的指针

C. 对象不能用作数组元素

D. 一个对象能用作另一个对象的成员

19、C++源程序文件的扩展名为( A )

A、.CPP

B、.C

C、.DLL

D、.EXE

20、下面的函数声明中, 哪一个是”void BC(int a, int b);”的重载函数? ( C )

A、int BC(int a, int b)

B、void BC(int a, char b)

C、float BC(int a, int b, int c = 0)

D、void BC(int a, int b=0)

?21 .如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c

A. 3

B. 2

C. 1

D. 4

22. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是( C )

A.3 B。 2 C。6 D。4

?23. 已知char c; char * const pc="asdf",( B )是正确的。

A.pc="dfgh"

B.*pc=‘b’

C.*pc++=‘y’

D.pc=&c

24. 执行下列语句后的输出结果是(C)。

int hot=100;

int &rad=hot;

hot+=100;

cout<

A.0;B。100;

C.200;D。300;

25. 下列对结构及其变量定义错误的是:( D )

A.struct MyS truct{ B。struct MyStruct{

int num; int num;

char ch; char ch;

}; }my;

MyS truct my;

C.struct{ D。struct{

int num; int num;

char ch; char ch;

} };

my; struct my;

26.下列关于指针运算的描述错误的是:(A )

A.在一定条件下,两个指针可以相加

B.在一定条件下,两个指针可以进行关系运算

C.在一定条件下,指针可以为空

D.在一定条件下,两个指针可以相互赋值

27.在C++语言中,对函数参数默认值描述正确的是:(D)

A.函数参数的默认值只能设定一个

B.一个函数的参数若有多个,则参数默认值的设定可以不连续

C.函数参数必须设定默认值

D.在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值28. 不能作为函数重载判断依据的是:( D )

A.参数个数B。参数类型C。函数名字D。返回类型

29. 以下程序的输出结果是:( B )

#include

void prt(int *x,int *y,int *z){

cout<<++*x<<","<<++*y<<","<<*z++<

}

int a=10,c=20,b=40;

void main(){

prt(&a,&b,&c); prt(&a,&b,&c);

}

A.11,42,31 B。11,41,20 C。11,21,40 D。11,41,21

12,21,41 12,42,20 11,21,41 12,42,22

?30.以下程序的输出结果是:( D )

#include

void func(char **m){

++m;

cout<<*m<

}

void main(){

static char *a[]={"morning", "afternoon", "evening"};

char **p;

p=a;

func(p);

}

A.字符o的起始地址B。字符a的起始地址

C.字符o D。afernoon

31.以下程序的输出结果是:( D )

#include

int fun(char *s){

char *p=s;

while (*p!='\0') p++;

return (p-s);

}

void main(){

cout<

}

A.0 B。1 C。2 D。3

32. 不正确的标识符是(B)

A. _a2

B. 2ai

C. a2_i

D. INt

33. 在( C ) 情况下适宜采用inline 定义内联函数。

A. 函数体含有循环语句

B. 函数体含有递归语句

C. 函数代码少、频繁调用

D. 函数代码多、不常调用

34. 通过( A ) 调用虚函数时,采用动态绑定(binding)。

A. 对象指针

B. 对象名

C. 成员名限定

D. 派生类名

35. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行Ax(4,5); 语句后,x.a 和x.b 的值分别为( C ) 。

A. 4 和5

B. 5 和4

C. 4 和20

D. 20 和5

36. 在C++ 中有以下4 条语句:static int hot=200;int &rad=hot;

hot=hot+100;cout<

A. 0

B. 100

C. 300

D. 200

37.对do-whie 语言错误的说法是(C )

A. 可构成多重循环结构

B. 循环次数不可能为0

C. 循环次数可能为0

D. 先执行后判断

38. 静态成员函数没有(B )

A. 返回值

B.this 指针

C. 指针参数

D. 返回类型

39. 在类中说明的成员可以使用关键字( A )进行修饰。

A. public

B. extern

C. cpu

D. register

40. 下列不是描述类的成员函数的是( C )

A. 构造函数

B. 析构函数

C. 友元函数

D. 拷贝构造函数

41. 若int a[3]= {1 ,2 ,3 },*p ;则下列赋值语句中

正确的是(D)

A. p=&a ;

B. *p=a ;

C. *(a+1)=a ;

D. p=a+1

42. 若p1 、p2 都是指向整型的指针,p1 已经指向数量x ,

要使p2 也指向x ,正确的是(A)

A. p2=p1 ;

B. p2=**p1 ;

C. p2=&p1 ;

D. p2=*p1 ;

43. 在类中说明的成员可以使用关键字(A ) 进行修饰。

A. private

B. extern

C. auto

D. register

44. 在int a=3,*p=&a; 中,*p 的值是( D) 。

A. 变量a 的地址值

B. 无意义

C. 变量p 的地址值

D. 3

45. 假定AB 为一个类,则执行AB x ;语句时将自动调用该类的(B ) 。

A. 有参构造函数

B. 无参构造函数

C. 拷贝构造函数

D. 赋值构造函数

46. 如果class 类中的所有成员在定义时都没有使用关键字pubilc,

private,protected ,则所有成员缺省定义为:( C) 。

A. public

B. protected

C. private

D. static

47.语句int (*p)( ); 的含义是(A)

A.p 是一个指向函数的指针变量,该函数的返回值是一个整型数据

B.p 是指针变量,指向一个整型数据

C.p 是一个指向一维数据的指针变量

D.p 是指针函数

48. 在C++ 中实现封装是借助于(B )

A. 枚举

B. 类

C. 数组

D. 函数

49.设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( C )。

A. 2

B. -1

C. 0

D. 1

50. 设int x[] = {1,2,3,4,5,6},* p = x;则值为3的表达式是

(B)

A. p + = 2, * + + p

B. p + = 2, * p + +

C. p + = 3, * p

D. p + = 2, + + * p

51. 关于类概念的描述中,( D )是错误的。

A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体;

C.类是创建对象的样板; D.类不是C++中的一种数据类型;

52. 在32位机中,double型字宽为(D)字节。

A.2;B.4;C.6;D.8

53. 在int a[][3]={{1,0},{3,2},{4,5,6},{0}};中a[2][2]的值是(C)。

A.0; B.5; C.6; D.2

54. 对于double (*p)[10];的描述,(A )是正确的。

A.p是一个指向数组的指针,所指向的数组是10个double型元素;

B.p是一个指向某个数组中第10个元素的指针,该元素是double型变量;

C.p[5]表示某个数组的第10个元素的值;

D.p是一个具有10个元素的指针数组,每个元素是一个double型指针;

55. 下述关于开关语句的描述中,(A )是正确的。

A.开关语句中default子句可以没有,也可以有一个;

B.开关语句中每个语句序列中必须有break语句;

C.开关语句中default子句只能放在最后;

D.开关语句中case子句后面的表达式可以是整形表达式。

56. 下列(D)是引用调用;

A.形参是指针,实参是地址值;B.形参和实参都是变量;

C.形参是数组名,实参是数组名;D.形参是引用,实参是变量。

57. (A )是析构函数的特征。

A. 一个类中只能定义一个析构函数;

B. 析构函数与类名不同;

C. 析构函数的定义只能在类体内;

D. 析构函数可以有各个或多个参数。;

58. 关于new运算符的下列描述中,( D )是错的。

A.它可以用来动态创建对象和对象数组;

B.使用它创建的对象或对象数组可以使用运算符delete删除;

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

D.使用它创建对象数组时必须指定初始值。

59. 已知fun(int)是类Test的公有成员函数,p是指向成员函数fun()的指针,采用(D)是正确的: A.p=fun; B.p=Test::fun(); C.p=fun(); D.p=Test::fun;

60. 关于对象概念的描述中,(A )是错误的。

A. 对象就是C语言中的结构变量;

B. 对象代表着正在创建的系统中的一个实体;

C. 对象是一个状态和操作(或方法)的封装体;

D. 对象之间的信息传递是通过消息进行的;

61. 下列给字符数组进行初始化中,(A )是正确的。

A. char s1[ ]="12345abcd";

B. char s2[3]="xyz";

C. char s3[][3]={ 'a', 'x', 'y'};

D. char s4[2[3]={"xyz","mnp"};

62. 对于int *pa[5];的描述,(D )是正确的。

A.pa是一个指向数组的指针,所指向的数组是5个int型元素;

B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;

C.pa[5]表示某个数组的第5个元素的值;

D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针;

63. 下述静态数据成员的特征中,(D )是错误的。

A.说明静态数据成员时前边要加修饰符static;

B.静态数据成员要在类体外进行初始化;

C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;

D.静态数据成员不是所有对象所共用的。

64、下列的各类函数中,(C )不是类的成员函数。

A.构造函数;

B.析构函数; C .友元函数; D.拷贝构造函数;

二、填空题

1、一个基本语句的最后一个字符是( ;).

2、与int x=100; while(x>0) { cout<<’P’;x--; } 等效的for语句是( for(x=100;x>0;x--) )。

3、执行for(int i=1;i<30;i++) cout<<”*”;将输出( 29 )个*号。

4、数学函数sqrt(49)的结果为(7),pow(3,3)的结果为:(27)。

5、C++程序主要有三种基本控制结构,分别是顺序结构、条件分支结构和

(循环结构)。

6.在c++中,除具有循环、switch 语句的函数不能说明为内联函数外,其它函数都可以说明为内联函数。

7.在c++中,封装可以由public 、private 和 protect 等关键字提供。

8.若example是已定义的类,在程序结束之前,共计存在2个对象。

#include”example”

main()

{example X(0);

X=5;X.print();

X=example(10);

X.print();

}

9.在c++中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则可以将这个基类说明为虚基类。使用关键字virtual 说明。

10.静态成员为该类的所有对象共享,它们被存储于一个中。

15 在C语言中,编程的单位是__函数___;在C++语言中,编程的单位是_对象____。

16 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的

__数据成员___,共同行为被描述为类中的___函数成员___。

17 类的具体表现是通过定义_成员函数______来操作的。

18 对类中的成员函数和属性的访问是通过__①public___、__②private____和__③protect___这3 个关键字来控制的。

19 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__private___权

限,而把成员函数(方法)定义为__public____权限。

20) 在类定义中,数据和成员函数默认权限是___private______。

21 类中构造函数有___一个或多__个,析构函数有____一__个。

22 类中的构造函数是一个特殊的成员函数,它由类的对象___生成时__调用,它的作用

是___初始化___。

23 在定义类的对象时,C++程序将自动调用该对象的_构造函数_函数初始化对象自身。

24 在撤销类的对象时,C++程序将自动调用该对象的__析构____函数。

25 ___new__运算符对指定类型对象动态分配内存并返回____true 或false___。

26 ____delete____运算符删除(25)题中的运算符所动态分配的内存空间。

27 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造

函数形式为__ MyClass(){};____。

28 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构

函数形式为_~MyClass(){};_____。

29 在类中定义和实现的函数称为__内联函数______。

30 非成员函数应声明为类的_友元函数(friend)_______才能访问这个类的private成员。

31 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入

语句__friend FriendClass;______。

32 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass

的定义中加入语句__ friend FriendFunction(); _____。

33 下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。

class MyClass

{

public:

enum Week {Sun,Mon,Tue,Wed,Thur,Fri,Sat };

Week week;

}

void fun(MyClass &my)

{

___my.week____= __wed____; //将对象my的week赋值为所定义的枚举类型//值为3的枚举量

}

34 在下面程序的横线处填上适当的语句,使该程序执行结果为10。

#include

class MyClass

{

public:

___void setx(int a){x=a;}__或_ MyClass(int x){this.x=x;};_ //为x置值

____int getx(){return x;}___ //取x值

private:

int x;

};

void main()

{

MyClass my(10);

cout << my.GetNum() << endl;

}

35 完成下面的类定义。

class MyClass

{

public:

MyClass( ) { x = 0; }

___friend__ int GetNum(_MyClass ____ my);

private:

int x;

};

int GetNum(___ MyClass ___ my)

{

return my.x;

}

1.在C++中,函数的参数有两种传递方式,它们是值传递和引用传递。

2.当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。

3.在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有作用域说明符,对此数据成员的访问将出现歧义。

4.拷贝构造函数使用& 作为参数初始化创建中的对象。

5.在公有继承的情况下,基类数据成员在派生类中的访问权限不变。

6.描述命题"A小于B或小于C"的表达式为A

7.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到构造函数,否则应用程序会产生一个编译错误。

9.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与最接近的还未配对的if 配对。

10.设"int a=3,b=4,c=5;",表达式"(a+b)>c&&b==c"的值是false 。

11.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。

12.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型;

13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~。

16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能被更新,const成员函数不能更新对象的数据成员。

17.举出C++中两种用户自定义的数据类型:结构体、枚举类型。

18. C++中没有字符串类型,字符串是通过数组来表示的,每一个字符串都有一个结尾字符‘\0’。19. C++中没有输入输出语句,输入输出是通过流操作实现的,写出一条打印整型变量n的输出语句:cout<

20、在语句int a[10]; 中,10的含义是数组的大小为10 。

21、在函数中有这样的语句来申请空间:int *p=new int[10];要释放该空间应使用语句:delete p 。

22、函数重载的条件是函数名相同,参数的个数或形参类型不同。

23、对于类中的非静态函数成员,都包含一个默认的指针this,它代表正在被成员函数操作的对象。

24、已知变量x的值是3,则表达式x+=3,x++,x+2的值是9 。

25、类X的静态整型数据成员i的初值是10,定义的方法是static int i=10; 。

26、结构数据成员的默认访问权限是pirvate 。

27、要使语句p=new double[12][5];能够正常执行,变量p的定义应为double *p。

28、语句char c[20]="Good morning"; c[4]=0; cout<

三、程序填空

1、以下程序实现求1~100这100个整数的和的运算。

#include

void main( )

{ int i ,sum;

sum=0;

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

sum+=i ;

cout<<”sum=”<

}

2、以下程序实现从键盘输入两个整数a和b,输出其中大者的功能(不考虑相等的情况)

#include

void main( )

{ i nt a,b ;

cin>>a>>b;

if( a>b ) cout<<”最大值为:”<

else cout<<”最大值为:”<

}

3.设有一函数,其代码如下:

int power (x,n)

{

int i,p;

for (p=1,i=1; i<=n;++i )

p=p*x;

return(p);

}

现要求取消变量i,重写该函数如下,请在空白上填上适当内容。

int power (int x,int n)

{

int p;

for ( p=1 ; n>0; __n--____)

p=p*x;

return (p);

}

4.本程序用古典的Eratosthenes的筛法求从2起到指定范围内的素数。如果要找出2至10中的素数,开始时筛中有2到10的数,然后取走筛中的最小的数2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9:重复上述步骤,再取走最小数3,宣布它为素数,并取走3的倍数,于是留下5、7。反复重复上述步骤,直至筛中为空时,工作结束,求得2至10中的全部素数。程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示数i在筛子中,值为-1时表示数i已被取走。

#include

const int MAX=22500;

void main()

{ unsigned int i , range , factor , k ;

int sieve[MAX] ;

cout<<"please input the range : ";

cin>>range; /*range指出在多大的范围内寻找素数*/

for (i=2 ; i<=range ; i++) /* 筛子初始化*/

sieve[i]=1 ;

factor=2 ;

while (factor<=range) {

if ( sieve[factor] ==1 )

{ /*筛子最小数是素数*/

cout<

k=factor;

while (k<=range)

{ /*移走素数的倍数*/

sieve[k]=-1 ; /*筛中的个数减一*/

k=k+factor ;

}

}

factor++ ;

}

四、程序阅读

1、int a,b,s;

2、int x=7,y=4,z;

a=12;b=35; if(x>y) z=x;

s=a+b; else z=y;

cout<<”s=”<

输出结果为: s=47输出结果为: z=7

3、int x=6;

4、int x;

while(x++<5) for(x=1;x<10;x++)

cout<<”good”;{if(x%3= =0)

cout<<“that’s the end”;cout<

输出结果为:that’s the end输出结果为: 369

5、int n=12;

6、int i; int data[8];

if(n>5) for(i=0;i<8;i++)

{ if(n<11) cout<<”right!”;data[i]=i;

else cout<<”left!”; }for(i=7;i>=0;i--)

else cout<<”center!”; cout<

输出结果为: left 输出结果为:76543210

1、#include

void main()

{

int a,b,c,;

c=2,c+=10;

a = 10;

b=11;

a * = 2;

b / = 2;

c % = 2;

cout<

}

输出结果:20,5,0

2、#include

void main()

{

int a = 50 , b(0) ;

b = ++a;

cout<

b = a++;

cout<

}

输出结果:

51,51

52,51

5、#include

void main()

{

int i;

for(i=4 ; i<=10 ; i++ )

{ if (i%3= =0) continue;

cout<

}

输出结果:

457810

6.分析以下程序执行结果

#include

int add(int x,int y)

{

return x+y;

}

double add(double x,double y)

{

return x+y;

}

void main()

{

int a=4,b=6;

double c=2.6,d=7.4;

cout<

}

解:

本题说明函数重载的使用方法,这里有两个add()函数,一个add()函数的参数与返回值为int型,另一个的参数与返回值为double型,它们是根据参数类型自动区分的。

所以输出为: 10,10

7.分析以下程序的执行结果

#include

class Sample

{

int i;

double d;

public:

void setdata(int n){i=n;}

void setdata(double x){d=x;}

void disp()

{

cout<<"i="<

}

};

void main()

{

Sample s;

s.setdata(10);

s.setdata(15.6);

s.disp();

}

解:

本题说明重载成员函数的使用方法。setdata()成员函数有两个,根据其参数类型加以区分。所以输出为:i=10, d=15.6

8.分析以下程序的执行结果

#include

void main()

{

int a;

int &b=a; // 变量引用

b=10;

cout<<"a="<

}

解:

本题说明变量引用的方法。b是a的引用,它们分配相同的空间,b的值即为a的值。

所以输出为 a=10。

注意:引用是引入了变量或对明的一个义词,引用不产生对象的副本。

9.分析以下程序的执行结果

#include

class Sample

{

int x;

public:

Sample(){};

Sample(int a){x=a;}

Sample(Sample &a){x=a.x+1;}

void disp(){cout<<"x="<

};

void main()

{

Sample s1(2),s2(s1);

s2.disp();

}

解:

本题说明类拷贝构造函数的使用方法。Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x值赋给当前对象的x后加1。

所以输出为:x=3。

10.分析以下程序的执行结果

#include

void swap(int &x,int &y)

{

int temp;

temp=x; x=y; y=temp;

}

void main()

{

int x=10,y=20;

swap(x,y);

cout<<"x="<

}

解:

这里的函数采用引用调用的方式,所以输出为:x=20,y=10

注意:在函数调用里,引用调用与传址调用的效果相同,但更加简洁直观。

11.分析以下程序的执行结果

#include

void main()

{

int a[]={10,20,30,40},*pa=a;

int *&pb=pa;

pb++;

cout<<*pa<

}

解:

pa为数组的指针,首先指向a[0],pb是pa的引用,当执行pb++时,也使pa指向了a[1],所以输出为:20

12.分析以下程序的执行结果

#include

class Sample

{

int x;

public:

Sample(){};

Sample(int a){x=a;}

Sample(Sample &a){x=a.x++ +10;}

void disp(){cout<<"x="<

};

void main()

{

Sample s1(2),s2(s1);

s1.disp();

s2.disp();

}

解:

Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x增1然后加上10后赋给当前对象的x,由于a是引用对象,所以输出为:

x=3 // ++运算的结果

x=12 // 2+10

13.写出下列程序的运行结果。

#include

int f(int a){

return ++a;

}

int g(int& a){

return ++a;

}

void main(){

int m=0,n=0;

m+=f(g(m));

n+=f(f(n));

cout<<"m="<

cout<<"n="<

}

程序输出结果为:

m=3

n=2

14. 写出下列程序的运行结果。

#include

void main()

{

struct num{

int x; int y;

} sa[] = {{2, 32}, {8, 16}, {4, 48}};

struct num *p = sa+1;

int x;

x = p->y / sa[0].x * ++p->x;

cout<<”x=”<x=”<x<

}

程序输出结果为:

X=72 P->X=9

15.#include

class A{

int a;

public :

A(int aa=0){a=aa;}

~A(){cout<<”Destructor A!”<

};

class B : public A {

int b;

public:

B(int aa=0,int bb=0):A(aa){b=bb;}

~B(){cout<<”Destructor B!”<

};

void main(){

B x(5),y(6,7);

}

程序输出结果为:

Destructor B! 7

Destructor A! 6

Destructor B! 0

Destructor A! 5

22.下面程序的运行结果是。

#include "iostream.h"

void main( )

{

int i=1;

while (i<=15){

i++;

if (i%3!=2) continue;

else cout <<"i="<

}

}

程序输出结果为:

i=2

i=5

i=8

i=11

i=14

23.下面程序的运行结果是。

#include

using namespace std;

int GCD (int u, int v)

{

while (u % v) {

int t= u % v;

v = t;

}

return v;

}

int GCM (int u, int v)

{

int gcd = GCD (u, v);

return u * v / gcd;

}

int main ()

{

int A [] = {4, 6,8,16};

int gcd = A[0], gcm = A[0];

int i = 1;

while (i < 4) {

gcd = GCD (gcd, A[i]);

gcm = GCM (gcm, A[i]);

i++;

}

cout << "gcd :" <

cout << "gcm :" << gcm << endl;

return 0;

}

答案:

gcd : 2

gcm : 48

24.

#include

using namespace std;

class CT {

public :

CT () {

cout << "Default constructor called" << endl; }

CT (const CT &rhs) {

cout << "Copy constructor called" << endl; }

};

int main ()

{

CT ct;

cout << "Step1" << endl;

p = new CT;

CT ct3 (*p);

cout << "Step2" << endl;

delete p;

return 0;

}

答案:

Default constructor called

Step1

Default constructor called

Copy constructor called

Step2

25、#include

void main()

{ int x=3,y=3;

switch(x%2)

{

case 1: switch (y)

{ case 0:cout<<"first\t";

case 1:cout<<"second\t";break;

default: cout<<"hellow\t";

}

case 2:cout<<"third\n";

}

}

答案:

hellow third

26、#include

void swap(int *x,int &y);

void main()

{

int a(13),b;

b=a%5;

cout<<"a="<

swap(&a,b);

cout<<"a="<

}

void swap(int *x,int &y)

{ int temp=*x;

*x=y;

y=temp;

}

答案:

a=13,b=3

a=3,b=13

五、程序设计题

1、编写程序输出1-100之间的全部素数。

#include

#include

void main()

{

int i,j,k,flag;

for(i = 2; i<= 100; i++)

{

flag = 1;

k = sqrt(i);

for (j = 2; j <= k; j++)

{

if(i%j == 0)

{

flag = 0;

break;

}

}

if (flag)

cout << i << "是质数." << endl;

}

}

2、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数字本身。例如:153是一个“水仙花数”,因为:153=13+53+33

#include

void main()

{

int i,j,k,n;

for(n=100;n<1000;n++\\

{

i=n/100;

j=(n-i*100)/10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k) cout<

}

}

3、编写一个计算n!的函数,并在主程序中调用该函数,计算1-10的阶乘之和(即S=1!+2!+3!+…+10!)。

#include

using namespace std;

long fac(int n)

{

long f;

if (n<0) cout<<"n<0,data error!"<

else if (n==0) f=1;

else f=fac(n-1)*n;

return(f);

}

void main()

{int s=0;

for(int i=1;i<=10;i++)

s+=fac(i);

cout<<”s=”<

}

4、编写程序,计算1-200之间能被3整除,但不能被5整除的所有数之和。#include

using namespace std;

void main()

{

int s=0;

for(int n=1;n<=100;n++)

if(n%3==0&&n%5!=0) s+=n;

cout<<"s="<

}

5、从键盘输入10个正整数,输出它们中的最大值、最小值和平均值。

#include

using namespace std;

void main()

{

int x,max,min,s=0;

cout<<"please input 10 number:";

cin>>x;

max=min=x;

for(int n=1;n<10;n++)

{ cin>>x;

if (x>max) max=x;

if (x

s+=x;

}

s=s/10;

cout<<"max="<

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

c 试题及答案

一、单项选择题 1、下列哪个类型的对象是https://www.doczj.com/doc/d617819810.html,在非连接模式下处理数据内容的主要对象? (D ) A. Command B. Connection C. DataAdapter D. DataSet 2、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型, 如果类型省略,则定义为( A )。 A. int B. sbyte C. uint D. ulong 3、创建数据库连接使用的对象是( A )。 A. Connection B. Command C. DataReader D. DataSet 4、C#中导入某一命名空间的关键字是( A )。 A. using B. use C.import D. include 5、一般情况下,异常类存放在什么命名空间中?( B )。 A. 生成异常类所在的命名空间 B. System.Exception命名空 间 C. System.Diagnostics命名空间 D. System命名空间 6、若将数据库中的数据填充到数据集,应调用SqlDataAdapter的( C )方 法。 A. Open B. Close C. Fill D. Update 7、若将数据集中所作更改更新回数据库,应调用SqlAdapter的(A )方法。 A. Update B. Close C. Fill D. Open 8、在使用FileStream 打开一个文件时,通过使用FileMode 枚举类型的( A ) 成员,来指定操作系统打开一个现有文件并把文件读写指针定位在 文件尾部。 A. Append B. Create C. CreateNew D. Truncate 9、在菜单项File中,为将F设为助记符,应将该菜单项的Text属性设置为 (B )。 A. @File B.&File C. %File D._File 10、指定操作系统读取文件方式中的FileMode .Create的含义是( D)。 A. 打开现有文件 B. 指定操作系统应创建文件,如果文件存在,将出现异常 C. 打开现有文件,若文件不存在,出现异常 D. 指定操作系统应创建文件,如果文件存在,将被改写 11、枚举类型是一组命名的常量集合,所有整形都可以作为枚举类型的基本类 型,如果类型省略,则定义为( D )。 A. uint B. sbyte C. ulong D. int 12、当运行程序时,系统自动执行启动窗体的( C )事件。 A. Click B.DoubleClick C. Load D. Activated

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C期末考试题及答案

C期末考试题及答案 Revised at 2 pm on December 25, 2020.

一、填空题(每空0.5分,共30分) 1、世界坐标系简称__WCS_用户自定义坐标系简称__UCS_。 2、工作空间的切换:“工具”/“工作空间”或“工作空间”工具栏。 3、工具栏包括30种,系统默认的显示工具栏包括:“标准”、“属性”、“绘图”和“修改”等工具栏。 4、多线的对正方式有_上(T)_、_无(Z)_和_下(B)_。 5、文字标注包括标注单行文字和标注多行文字。 6、渲染环境是指在渲染对象时进行的雾化和深度设置。 7、漫游和飞行用户可以通过键盘和鼠标来控制视图显示,并创建导航动画。 8、编辑实体的边的种类:压印边、复制边、着色边。 9、动态块是通过自定义夹点或自定义特性定义的块。在图形中使用动态块,用户可以随时对组成块的对象进行修改。 10、三维实体是具有体积、质量、重心、回转半径、惯性距等特征的三维对象。 11、在AutoCAD 2007中,用户可以创建的光源有电光源、聚光灯光源和平行光光源。 12、相切、相切、半径法是指:通过指定圆的两个切点和半径来绘制圆。 13、绘制圆环的步骤中,先输入圆环的内径和外径,后确定圆环的中心点。 14、计算机辅助设计是:工程技术人员在CAD系统的辅助下,根据产品的设计程序进行设计的一项新技术。 15、菜单栏包括11种,每一种菜单中都含有四种显示情况:命令后跟右三角 、后跟省略号、后跟快捷键或功能键或命令呈灰色。 16、要对图形对象进行编辑就必须选中图形对象,在AutoCAD 2007中,选择对象的方法很多,常用的有_直接拾取_、矩形框选择_、_不规则区域选择_和快速选择。 17、在设置显示精度时,如果设置的精度越高,即分辨率就越高,计算机计算的时间 也越长,显示图形的速度也就越慢。 18、三维基本实体的种类包括:多段体、长方体、楔体、圆柱体、圆锥体、球体、圆环体、棱锥面。 19、布尔运算中只留重复的一部分的运算是交集运算。从一个图形中去掉与另一个图形重复部分的运算是差集运算。

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

C试题及答案一

C++程序设计模拟试卷(一) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1. 编写C++程序一般需经过的几个步骤依次是() A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 答案:B 解析:经过编辑、编译、连接和运行四个步骤。编辑是将C++源程序输入计算机的过程,保 存文件名为cpp。编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为 obj,由于没有得到系统分配的绝对地址,还不能直接运行。连接是将目标文件obj转换为可执行 程序的过程,结果为exe。运行是执行exe,在屏幕上显示结果的过程。 2. 决定C++语言中函数的返回值类型的是() A. return语句中的表达式类型 B. 调用该函数时系统随机产生的类型 C. 调用该函数时的主调用函数类型 D. 在定义该函数时所指定的数据类型 答案:D 解析:函数的返回值类型由定义函数时的指定的数据类型决定的。A项的表达式的值要转换 成函数的定义时的返回类型。 3. 下面叙述不正确的是() A. 派生类一般都用公有派生 B. 对基类成员的访问必须是无二义性的 C. 赋值兼容规则也适用于多重继承的组合 D. 基类的公有成员在派生类中仍然是公有的 答案:D 解析:继承方式有三种:公有、私有和保护。多继承中,多个基类具有同名成员,在它们 的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指 派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中的 公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。 4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体 也就是() A. 类 B. 对象 C. 函数体 D. 数据块 答案:A 解析:类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。 5. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中 的() A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员 答案:A 解析:在派生类中基类的保护或者基类公有都可以直接访问,基类的私有成员只能是基类 的成员函数来访问。所以选择A项。 6. 对基类和派生类的关系描述中,错误的是() A. 派生类是基类的具体化 B. 基类继承了派生类的属性 C. 派生类是基类定义的延续 D. 派生类是基类的特殊化 答案:B 解析:派生类的成员一个是来自基类,一个来自本身,所以派生类是基类的扩展,也是基 类的具体化和特殊化,派生类是对基类扩展。B项基类不能继承派生类成员,所以错误。 7. 关于this指针使用说法正确的是() A. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

完整版C试题及答案

C++考试试卷 1. 已知:char *s=S456; 则cout<>s; C) char *s1=abcd,*s2=efghijk;strcpy(s1,s2); D) char *s=abcdefg; cout<<*s; 4. C++中,关于构造函数和析构函数,正确的描述是()。 A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数 B) 构造函数和析构函数均可以重载 C) 已知类Student以及Student *p; 在使用p=new Student;时自动调用无参构造函数创建动态对象,在delelte p;时自动调用析构函数释放动态对象 D) 构造函数和析构函数都可以成为虚函数 )。关于拷贝构造函数的描述正确的是(5. A) 通常的拷贝构造函数的参数是对象的指针类型 B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数 C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数 D) 如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数 6. 有关静态成员的描述错误的是()。 A) 某个类的静态数据成员由该类的所有对象所共享 B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问 C) 静态数据成员既可以是私有成员,也可以是公有成员 D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1、单项选择题 (1) C 语言就是在 B 语言的基础上产生的。 A、 A B、 B C、 D D、 E (2) 在 C 语言中,每个语句必须以 D 结束。 A、回车符 B、冒号 C、逗号 D、分号 (3) 标识符与关键字间,要用 C 隔开。 A、回车符 B、冒号 C、空格 D、分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A、生成可执行目标文件 B、生成目标文件 C、输出运行结果 D、自动保存源文件 (5) 下列说法中正确的就是( B )。 A、由于 C 源程序就是高级语言程序,因此一定要在 TC 软件中输入 B、由 C 源程序就是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C、由于C 程序就是高级语言程序,因此输入后即可执行 D、由于 C 程序就是高级语言程序,因此它由命令组成 (6) 下列说法中正确的就是( A )。 A、 C 语言程序由主函数与 0 个或多个函数组成 B、 C 语言程序由主程序与子程序组成 C、 C 语言程序由子程序组成 D、 C 语言程序由过程组成 (7) 下列说法中错误的就是( D )。 A、主函数可以分为两个部分:主函数说明部分与主函数体 B、主函数可以调用任何非主函数的其她函数 C、任何非主函数可以调用其她任何非主函数 D、程序可以从任何非主函数开始执行 2、填空题 (1) C 语言只有 32 个关键字与 9 种控制语句。 (2) C 语言就是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发

系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总就是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集就是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度就是前 8 位有效。 (7) C 语言中,标识符的定义规则就是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总就是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符与表达式习题 1、单项选择题 (1) 以下选项中,正确的 C 语言整型常量就是 D 。 A、 32L B、 510000 C、 -1、00 D、 567 (2) 以下选项中, D 就是不正确的 C 语言字符型常量。 A、 'a' B、 '\x41' C、 '\101' D、 "a" (3) 在 C 语言中,字符型数据在计算机内存中,以字符的 C 形式存储。 A、原码 B、反码 C、 ASCII 码 D、 BCD码 (4) 字符串的结束标志就是 C 。 A、 0 B、 '0' C、 '\0' D、 "0" (5) 算术运算符、赋值运算符与关系运算符的运算优先级按从高到低依次为 B 。 A、算术运算、赋值运算、关系运算 B、算术运算、关系运算、赋值运算 C、关系运算、赋值运算、算术运算 D、关系运算、算术运算、赋值运算 (6) 逻辑运算符中,运算优先级按从高到低依次为 D 。 A、 &&,!,|| B、 ||,&&,! C、 &&,||,! D、 !,&&,|| (7) 表达式!x||a==b 等效于 D 。 A、 !((x||a)==b) B、 !(x||y)==b C、 !(x||(a==b)) D、 (!x)||(a==b) (8) 设整型变量 m,n,a,b,c,d 均为1,执行 (m=a>b)&&(n=c>d)后, m,n 的值就是 A 。 A、 0,0 B、 0,1 C、 1,0 D、 1,1 (9) int b=0,x=1;执行语句 if(x++) b=x+1; 后,x,b 的值依次为 A 。

c语言试题及答案

c语言试题及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1、以下正确的说法是(B) (A)用户若需要调用标准库函数,调用前必须重新定义 (B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C)系统根本不允许用户重新定义标准库函数 (D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是(A) (A)doublefun(intx,inty) (B)doublefun(intx;inty) (C)doublefun(intx,inty); (D)doublefun(intx,y); 3、以下正确的函数形式是(D) (A)doublefun(intx,inty){z=x+y;returnz;} (B)fun(intx,y){intz;returnz;} (C)fun(x,y){intx,y;doublez;z=x+y;returnz;} (D)doublefun(intx,inty){doublez;z=x+y;returnz;} 4、以下正确的说法是(A ) 在C语言中 (A)实参和与其对应的形参各占用独立的存储单元 (B)实参和与其对应的形参共占用一个存储单元

(C)只有当实参和与其对应的形参同名时才共占用存储单元 (D)形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是(A) 该函数 (A)没有返回值 (B)返回若干个系统默认值 (C)能返回一个用户所希望的函数值 (D)返回一个不确定的值 6、以下不正确的说法是(B) C语言规定 (A)实参可以是常量、变量和表达式 (B)形参可以是常量、变量和表达式 (C)实参可以为任意类型 (D)形参应与其对应的实参类型一致 7、以下正确的说法是(C) (A)定义函数时,形参的类型说明可以放在函数体内 (B)return后边的值不能为表达式 (C)如果函数值的类型与返回值类型不一致,以函数值类型为准 (D)如果形参与实参的类型不一致,以实参类型为准

C语言试题及答案

一 下面四个选项中,均是不合法的用户标识符的选项是()。 A、float la0 _A B、A P_0 do C、_123 temp int D、b-a goto int 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A、double B、float C、int D、不确定 设: long w=65535,t=7654321; 根据下面的输出结果,正确的程序段是( ). w=65535,t=7654321 end A、printf("w=%5d,t=%7d\n",w,t);printf("%s","end'); B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end"); C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end"); D、printf("w=%5u,t=%7u\n",w,t);printf( "end"); 选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。 A、0 B、-1 C、非零的数 D、1 假定有以下变量定义: int k=7,x=12; 则能使值为3的表达式是:( ) A、(x%=k)-(k%=5)

B、x%=(k-k%5) C、x%=k-k%5 D、x%=(k%=5) 在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的 表达式是()。 A、(E>0||E<0) B、(E==0) C、(!E==0) D、(E!=0) 下面有关 for 循环的正确描述是()。 A、for 循环是先执行循环体语句,后判断表达式 B、在 for 循环中,不能用 break 语句跳出循环体 C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况 在C语言中,一维数组的定义方式为:类型说明符数组名()。 A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式] 以下正确的说法是( ). A、函数的类型决定返回值的类型 B、定义函数时,形参的类型说明可以放在函数体内 C、return后面不能为表达式 D、如果形参与实参的类型不一致,以实参类型为准 若调用一个函数,且此函数中没有return语句,则正确的说法是: 该函数()。 A、没有返回值 B、返回一个不确定的值 C、返回若干个系统默认值 D、能返回一个用户所希望的值 设函数的调用形式如下: f((x1, x2),(y1,y2,y3)),则函数有 ( )个形参. A、2 B、4 C、3 D、5

C试题及答案

C#模拟练习 一.选择填空 1. 面向对象的语言具有继承性、多态性和____性。 A) 封装 B) 拆箱 C) 封闭 D) 逻辑 2. 以下叙述正确的是____ A) 接口中可以有虚方法。 B) 一个类可以实现多个接口。 C) 接口可以被实例化。 D) 接口中可以包含已实现的方法。 3. .当整数a赋值给一个object对象时,整数a将会被____。 A)拆箱 B)丢失 C) 装箱 D)出错 4. float f=-123.567F; int i=(int)f;i的值现在是_____? A) 123f B) 123.56 C) -123f D)-123 5. 委托声明的关键字是____。 A) delegate B) delete C) public D)interface 6. 在.Net中所有可序列化的类都被标记为____。 A) (serializable) B) [serializable] C) serializable D) serialize 7. C#中的索引器类型应该是_____类型。 A)整型 B)字符型 C)任意类型 D)数组8.在c#中using关键字的作用是_____ A)定义命名空间 B)新建实例 C)调用类 D)引入命名空间9.在c#中new关键字的作用是_____ A)新建对象实例 B)定义命名空间 C)调用类 D)引入命名空间 10.在c#中利用sealed修饰的类_____。 A)密封,不能继承 B)密封,可以继承 C)表示基类 D)表示抽象类 二.阅读程序,指出划线部分的含义或功能 ① using ; ②namespace ConAAAA { ③ class FirstThread { public void Task() { ("This is a Task"); } static void Main(string[] args) { ④FirstThread ft = new FirstThread(); Thread t1 = new Thread(new ThreadStart); (); ⑤(); } } } 三.写出下列程序的运行结果。 1.namespace TestAAA { class TestArray

C语言试题及答案

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以/* 符号作为开始标记,以 */ 符号作为结束标记。

C语言试题及答案

第 1 章 C 语言概述习题 单项选择题 1. (1) C语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 ⑵)在C语言中,每个语句必须以 D 结 束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 ⑶标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 ⑷用C语言编与的源文件经过编译,若没有产生编译错误, 则系统将(B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行 结果 D.自动保存源文件 (5)下列说法中正确的是(B )。 A. 由于C源程序是高级语言程序,因此一定要在TC软件中输入 B. 由C源程序是字符流组成,因此可以作为文本文件在任何 文本编辑的软件中输入 C. 由于C程序是高级语言程序,因此输入后即可执行 D. 由于C程序是高级语言程序,因此它由命令组成 (6)下列说法中正确的是(A )。 A. C语言程序由主函数和0个或多个函数组成 B. C语言程序由主程序和子程序组成

C. C语言程序由子程序组成 D. C语言程序由过 程组成 ⑺下列说法中错误的是(D)。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2.填空题 (1) C语言只有37 个关键字和9 种控制语句。 ⑵ C语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写 应用程序。 (3) 每个源程序有且只有一个丄—函数,系统总是从该函数 开始执行C语言程序。 (4) 在C语言程序中允许出现的字符集是ASCII码字符集 ⑸C 语言的程序中有特殊含义的英语单词称为—保留字。 (6) C语言标识符的长度是前__8 _____ 位有效。 (7) C语言中,标识符的定义规则是以字母或下划线为开 头_。 (8) C语言程序的注释可以出现在程序中的任何地方,它总是 以£—符号作为开始标记,以*/ 符号作为结束标记。

C试题及答案

C++程序设计模拟试卷(五) 一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。 1.静态成员函数没有() A.返回值 B.this指针 C.指针参数 D.返回类型 答案:B 解析:静态成员函数是普通的函数前加入static,它具有函数的所有的特征:返回类型、 形参,所以使用静态成员函数,指针可以作为形参,也具有返回值。静态成员是类具有的 属性,不是对象的特征,而this表示的是隐藏的对象的指针,因此静态成员函数没有this指针 。静态成员函数当在类外定义时,要注意不能使用static关键字作为前缀。由于静态成员函数在 类中只有一个拷贝(副本),因此它访问对象的成员时要受到一些限制:静态成员函数可以直接 访问类中说明的静态成员,但不能直接访问类中说明的非静态成员;若要访问非静态成员时,必 须通过参数传递的方式得到相应的对象,再通过对象来访问。 2.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管 理操作的函数是() A.友元函数 B.虚函数 C.构造函数 D.析构函数 答案:C 解析:定义构造函数作用就是初始化对象,而析构函数释放对象空间。虚函数用于完成多 态性,友元增加访问方便性。 3.所有在函数中定义的变量,都是() A.全局变量 B.局部变量 C.静态变量 D.寄存器变量 答案:B 解析:变量存储类可分为两类:全局变量和局部变量。 (1)全局变量:在函数外部定义的变量称为全局变量,其作用域为:从定义变量的位置开始 到源程序结束。全局变量增加了函数之间数据联系的渠道,全局变量作用域内的函数,均可使用 、修改该全局变量的值,但是使用全局变量降低了程序的可理解性,软件工程学提倡尽量避免使 用全局变量。 (2)局部变量:在函数内部定义的变量称为局部变量,其作用域为:从定义变量的位置开始 到函数结束。局部变量包含自动变量(auto)静态变量(static)以及函数参数。 auto变量意味着变量的存储空间的分配与释放是自动进行的。说明符auto可以省略。函数中 的局部变量存放在栈空间。在函数开始运行时,局部变量被分配内存单元,函数结束时,局部变 量释放内存单元。因此,任两个函数中的局部变量可以同名,因其占有不同的内存单元而不影响 使用。这有利于实现软件开发的模块化。 static变量是定义在函数体内的变量,存放在静态存储区,不用栈空间存储,其值并不随存 储空间的释放而消失。 4.假定AB为一个类,则执行“ABa(2),b[3],*p[4];”语句时调用该类构造函数的次数 为() A.3 B.4 C.5 D.9 答案:B 解析:a(2)调用1次带参数的构造函数,b[3]调用3次无参数的构造函数,指针没有给它 分配空间,没有调用构造函数。所以共调用构造函数的次数为4。 5.如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则 可表示为() A.a.operator++(1) B.operator++(a) C.operator++(a,1) D.a.operator++() 答案:D

C语言试题-1(含答案)

C语言试题2019.03 一、单项选择题(共30分,每题1分) 1.在PC机中,‘\n’在内存占用的字节数是() A.1 B.2 C. 3 D.4 2.字符串“ABC”在内存占用的字节数是() A.3 B. 4 C.6 D.8 3.在C语言中,合法的长整型常数是() A.0L B.4962710 C.0.054838743 D.2.1869 e10 4.执行语句“x=(a=3,b=a--)”后,x,a,b的值依次是() A.3,3,2 B.3,2,2 C.3,2,3 D.2,3,2 5.设有语句int a=3;,则执行了语句a+=a-=a*a后,变量a的值是() A.3 B.0 C.9 D.-12 6.设int k=32767;执行k=k+1;后k值为()最大值与最小值首尾相连A.32768 B.-32768 C.0 D.-1 7.下列正确的标识符是() A.hot_do B.a+b C.test! D.%y 8.设int a=5,使b不为2的表达式是() A.b=6-(--a) B.b=a%2 C.b=a/2 D.b=a>3?2:1 9.执行x=(6*7%8+9)/5;后,x的值为() A.1 B.2 C.3 D.4 10.执行语句x=(a=3,b=a--)后,x,a,b的值依次为() A.3,2,3 B.2,3,2 C.3,3,2 D.3,2,2 11.设a=-3;执行(a>0)?a:-a;后,a的值为() A.3 B.1 C.0 D.-3 12.设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值为() A.7 B.8 C.9 D.2 13.下面正确的字符常量是() A.”c” B.’\\’’ C.’W’ D. ‘’ 14.若有代数式3ae/bc,则不正确的c语言表达式是() A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/c*3 15.在C语言中,要求运算数必须是整型的运算符是()书中55页 A./ B.++ C.!= D.% 16.若有说明语句:char c=’\72’;则变量c ( ) A.包含1个字符 B.包含2个字符 C.包含3个字符 D.说明不合法,c值不确定 17.sizeof (float)是()返回值为4。所以为整型表达式 A.一个双精度型表达式 B.一个整型表达式 C.一种函数调用 D 一个不合法的表达式 18.设变量a 是整型,f是实型,i是双精度型,则表达式10+’a’+i*f值的数据类型是()A.int B.folat C.double D.不确定 19.若有定义int a[10],*p=a;,则p+5表示() A.元素a[5]的地址 B.元素a[5]的值 C.元素a[6]的地址 D.元素a[6]的值

相关主题
文本预览
相关文档 最新文档