C++程序设计-周志德-等级考试题目_第1页
C++程序设计-周志德-等级考试题目_第2页
C++程序设计-周志德-等级考试题目_第3页
C++程序设计-周志德-等级考试题目_第4页
C++程序设计-周志德-等级考试题目_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

一.选择题(1)

二.填空题(7)

1.基本概念题(7)

2.阅读程序题(8)

3.完善程序题(23)

三.上机改错题(42)

上机编程题(67)

答案(78)

选择题

1.(1)能用作用户自定义的标识符

A.friendB.一varC.3Xyz一D.Float

2.设有说明语句"inta[3J[4]={1,2,3,4,5,6,7,8,9,10,11,12};int*P=

v

&a[0][0];,能够正确表示数组元素a121⑵的表达式是(2)

A.p[2][2]B.*(*(P+2)+2)C.(p+10)D.*(p+8)

3.在循环语句的循环体中使用break语句的作用是(循

A.结束本次循环B.结束该层的循环C.结束开关语句D.结束程序执行

4.设有说明语句"intA[4][3]={{1,2},{3,4,5},{6,7,8},{9,10}};”,则

A⑼⑵和A[2]⑵的初始化值分别为(4)。

A.0,7B.3,8C.3,7D.0,8

5.以下语句的输出结果是(5)。

chare1=100,c2=100;cout<<(cl*c2);

A.越界(出错)B.10000C.负数D一个字符

6.设有语句"float(*p)(int,int);”,该语句的作用是(6)。

A.函数原型说明B.p为指向函数的指针变量C.函数定义D.p为指向整数

的指针变量

7.一个类的析构函数(7)

A.是唯一的B.允许重载C.至多可有两个D.只能是缺省的

8.下列有关类和对象的说法中,正确的是(8)。

A.类与对象没有区别

B.要为类和对象分配存储空间

C.对象是类的实例,为对象分配存储空间而不为类分配存储空间

D.类是对象的实例,为类分配存储空间而不为对象分配存储空间

9.循环语句for(〈表达式1>;〈表达式2>;(表达式3>=〈语句〉中,<语句〉的

执行情况是(9)

A.至少执行一次B.至少执行两次

C.可能执行,也可能不执行D.不执行

10.下列有关编译预处理命令的说明中,正确的是(10)

A.以“#”开关的行,可出现在函数定义内或函数定义外

B.以“井”开头的行,后面不可有分号

C.以“#"开头,可出现在一行中的任何位置

D.以“井”开头,必放在程序开头

11.下面四个选项中,均不能作为用户标识符使用的是(11)。

A.m,P-0,doB.float,kaO,~AC.-123,temp,INTD.b一a,goto,int

12.设有说明"inta=15,b=17,c;n,执行表达式"c=all(b+=b)”后,则a、b、

c的值分别是(12)。

A.15、17、1B.1、34、35C.15、34、1D.15、17、15

13.设有说明intx=10,y=4,f;floatm;",执行表达式"f=m=x/y”后,则f,m的值分别是

(13)

A.2,2.5B.3,2.5C.2.5,2.5D.2,2.0

14.设有三个语句"ints=100;intss[s];cin>>ss;,则编译认为(14)。

A.仅第二个语句“intss(s);''错B.仅第三个语句“ein>>ss;”错、

C.第一个语句正确,后两个语句错D.三个语句都正确,没有语法错

15.设有函数定义“intfl(void){return100,200;!",调用函数fl()时,(15)。

A.函数返回值100B.函数返回两个值100和200

C.函数返回值200。D.语句"return100,200;”语法错,不能调用函数

16.设有语句"intfun(char*,int&);charstr[100];intk;n,则对函数fun的正确的调

用形式是(16)

A.fun(str,&k)B.fun(str,k)

C.fun(str[100],k)D.fun(str[100],&k)

17.对于一个C++的类,(17)

A.只能有一个构造函数和一个析构函数B.可有一个构造函数和多个析构函数

C.可有多个构造函数和一个析构函数D.可有多个构造函数和多个析构函数

18.设有宏定义和语句如下:

#defineM(a,b)a*b;//E

Intx=M(3+4,5+6),y;//F

y=M(3,4);//G

则(18)

A.编译时,E行有语法错B.编译时,F行有语法错

C.编译时,G行有语法错D.编译时,F行和G行有语法错

19.一个基类以私有方式派生时,其基类中的公有成员和保护成员在派生类中(19)。

A.均成为私有的成员B,均成为公有的成员

C.均成为保护的成员D.仍为公有的和保护的成员

20.虚函数(20)

A.可实现静态多态性B.可实现动态多态性C.不能实现多态性

D.既可实现静态多态性,又可实现动态多态性

21.系统约定c十十源程序文件名的缺省的扩展名为(21)

A.cppB.c++C.beeD.vcc

22.设有说明语句“intk=7,x=12;",则能使值为3的表达式是(22)。

A.x%=(k%=5)B.x%=(k—k%5)

C.x%二k—k/5D.(x%=k)一(k%二5)

23.实型变量x的取值范围为闭区间仁[一2,10]或开区间(15,34),则正确表示x取值范

围的逻辑表达式是(23)

A.—2<=x<=10ll15<x<40

B.(―2<~x&&x<=10=ll(15<x&&x<34=

C.一2<=x<二10&&15Vx<40

D.(—2<=x&&x<=10=&&(15<x&&x<34=

24.设有两个语句“intx1'a');cin>>x;",则编译器认为(24)。

A.说明语句“intx「al”错B.两个语句都错

C.语句"cin>>x;”错D.两个语句正确,没有语法错

25.设有语句"voidf(inta[10],int&x);inty[10],*py=y,n;",则对函数f的正确调用语句

是(25)

A.f(py[10J,n);B.f(py,n);C.f(*py,&n);D.f(py,&n);

26.break语句只能用在(26)

A.开关语句中B.函数体中允许语句出现的任一位置

C.循环语句中D.开关语句或循环语句中

27.重载运算“十”,实现a+b运算,则(27)。

A.a必须为对象,b可为整数或实数B.a和b必须为对象,

C.b必须为对象,a可为整数或实数D.a和b均可为整数或实数

28.设有宏定义和语句:

#defineP(x,Y)x/y

#definePP(a.b)a*b

intc=P(2+3,2+3)+PP(2+3,(2+3);

则变量c的值是(28)。

A.26B.17C.17.5D.31

29.设有语句“for(inti=5,sum=0;i<10;sum++,i++=sum+=i;",则for()

语句的执行情况是(29)°

A.循环。次B.循环4次C.循环5次D.循环6次

30.设类B是基类A的派生类,并有语句“Aal,*pa二&al;Bbl,'pb=&bl;",则正确

的语

句是一(30)。

A.pb二pa;B.bl=al;C.al=bl;D.*pb二*pa;

31.数学式Jsinxl在c++程序中对应的正确表达式是(31)。

A.sqrt(x>0?sin(x):-sin(x))B.sqrt(fats(sin(x)))

C.sqrt(sqrt(sinx*sinx))D.fabs(sqrt(sin(x)))

32.设有四个常数:①4e0.5、②'\87、③0X5A、④“\"",其中符合C++语法规则的常量是

(32)

A.②③B.(2X4)C.③④D.①②

33.设有说明"intx()={1,2,3,4,5},*P==x;",输出值不是5(数组X的元素个数)的是

(33)

A.cout<<sizeof(x)/sizeof(int)<<'\n';

B.cout<<sizeof(x)/sizeof(x[0])<<'\n';

C.cout<<sizeof(p)/sizeof(int)<<'\n':

D.cout<<sizeof(x)/sizeof(l)<<'\n";

34.循环语句"for(intx=0,y=0;y!=100llx<10;)x++;”,执行的循环次数是(34)。

A.无限次B.10C.IID.100

35.下列数组定义中错误的是(35)。

A.charsl['a'J;B.chars2[6J="string";

C.staticinta[4J={l};D.char*p0={"A","B","C"};

36.设有宏定义u#definef(x)(-x*2)”,执行语句Kcout<<f(3+4)<<endl;n»

则输出是(36)。

A.-14B.2C.-5D.5

37.下列关于类的构造函数和析构函数的叙述中,不正确的是(37)»

A.类的析构函数可以重载

B.类的构造函数可以重:载

C.定义一个类时可以不显式定义构造函数

D.定义一个类时可以不显式定义析构函数

38.若有说明“char*S[]={"1234","5678","9012","3456","7890");”,则表达式*S[l]

>*S[3]比较的是(38)。

A."1234"和"9012”B.5和3'C.T和‘9'D."5678"和"3456"

39.下列叙述中不正确的是(39)。

A.含纯虚函数的类为抽象类B.不能直接山抽象类建立对象

C.抽象类不能作为派生类的基类D.纯虚函数没有其函数的实现部分

40.以下关于运行时的多态性的叙述中,不正确的是(40)»

A.运行时的多态性要通过虚函数来实现

B.运行时的多态性要通过指向基类的指针来实现

C.运行时的多态性是在编译时确定其要执行的函数

D.运行时逛态性是在执行过程中根据具体被操作的对象来确定要运行的函数

41.在数学式5。匕中,变量x和y的取值为整数,而变量a和b的取值为实数,在C++

程序中对

应的正确表达式是(41)。

A.3/5*xy/a/bB.3*x*y/5/a/bC.3*x*y/5*a*bD.3/a/b/5*x*y

42.关于字符'\0',不正确的说法是(42)。

A.常用来作为字符串的结束标志

B.在计算机中存储时占一个字节的内存

C.是空格字符的转义表示形式

D.作为逻辑值使用时等价于逻辑“假”

43.设有说明"inta,b,C;a=b=C=5;”,执行语句"b+=++a>b&&++c>b;”,

则a、b、c的值分别是一(43)°

A,6,7,6B.6,6,6C.6,6,5D.6,1,6

44.执行以下程序段时,输出(44)。

intsl==O,s2=0,s3=0,s4二0;

for(intt=l;t<=4;t++)

switch(t)

{caset>=4:sl++;break;

caset>=3:s2++;break;

caset>=2:s3++;

default:s4++

cout<<sl<<<<s2<<'<<s3<<','VVs4VV'\n';

A.语法错,编译不通过B.1,1,1,2

C.1,2,3,2D.1,1,2,2

45.下列数组定义中,正确的是(45).

A.inti=100,a[I];B.intj;j==100;intb[j];C.constinti=20;inty[I];D.intk;

intm[k];

46.编译以下程序时,结果是一(4下。

#include<iostream.h>//第1行

#defineas123;//第2行

voidmain(void)//第3行!

cout<<as<<'、n';=//第4行

A.编译时第2行出错

B.编译时第4行出错

C.编译时第2行和第4行均出错

D.编译时无错误

47.以下有关对象的叙述中,不正确的是一(47)。

A.产生对象时必定要调用构造函数

B.撤消对象时必定要调用析构函数

C.对象被保护,其私有成员不能任意访问

D.对象可以没有构造函数或析构函数

48.设有说明语句"char*s[]={"Student,1,^Teacher',"Father',"Mother"},*ps=s[2];w,

执行语句"coutVV*s[1]VV','VVpsVV「,«*ps«,\n';”,则输出结果

是一(48)。

A.T,Father,FB.Teacher,F,Father

C.Teacher,Father,FatherD.语法错无输出

49.下面有关一个类的友元函数的叙述中,正确的是(49)°

A.允许在类外访问类中除私有成员以外的任何成员

B.允许在类外访问类中的任何成员

C.友元函数也是该类的成员函数

D.友元函数的定义必须放在该类的公有部分

50.以下关于多态性的描述中,错误的是(50)。

A.动态多态是通过类的继承关系和虚函数来实现的

B.静态多态是通过函数的重载或运算符的重载来实现的

C.多态性通常使用虚函数或重载技术来实现

D.为实现动态多态,基类必须定义为含有纯虚函数的抽象类

51.在下列标识符中,能用作用户自定义标识符的是(51)。

A.privateB.friendC.IntD.double

52.设有说明语句:

chars[]="ab\0\123\\\n79H;

strlen(s)的值是(52)。

A.2B.3C.8D.14

53.设有变量说明:

inta=3>b=4,c=5;

下列表达式中,值为0的表达式是(53)。

A.富&&七’B.a<=b

C.allb十c&&b-cD.!(a<b&&c<bllb)

54.设el和e3是表达式,与语句for(el;:e3)s:等同的语句是(54)。

A.for(el;el;e3)s;B.for(el;e3;e3)s;C.for(el;0;e3)sD.for(el:1;

e3)s;

55.设有说明语句:

floatfun(int&,char*);

Intx;

chars[200];

以下对函数fun的调用中,正确的调用格式是一(55)。

A.fun(&x,s)B.fun(x,s)C.fun(x,*s)D.fun(&x,*s)

56.以下四组语句中,不符合C++语法规则的是一(56)。

A.charstr[]="Goodmorning";B.charstr[20];str="Goodmorning'1;

C.char*p="Goodmorning";D.char*p;p="Goodmorning”;

57.以下有关析构函数的叙述中,正确叙述的是(57)。

A.析构函数可以有一个或多个参数B.可以重载析构函数

C.析构函数可以定义为虚函数D.必须显式地自足义析构函数

58.设有语句:

chars[]=“246”,*ptr=s;

coutVV(char)(*(ptr+1)+1)<<'\n,:执行以上语句后,输出(58)°

A.5B.6C.46D.56

59.若一个C++源程序中包含头文件iostream,h,则标识符cin是(59)。

A.C+十预定义的关键字B.类名C.函数名D.对象名

60.下面有关基类与其派生类的叙述中,正确的是一(60)o

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

变量

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

61.在以下选项中,能用作用户自定义标识符的是(61)。

A.sizeofB.for+whileC.DoubleD.do

62.若al,a2,a3和a4均为整型变量,则以下选项中,符合C++语法规则的表达式是

(62)

A.al=25%3.3B.a2=al+a3=3*5C.a3=078D.a4=OXa2

63.设有语句:for(ints=l,i=2;i<=6;i++)s*=i/2;执行该语句后,s的值是(63)。

A.1B.12C.22D.22.5

64.若有doublea[3][4];则sizeof(a)的值是(64)。

A.7B.12C.48D.96

65.若定义函数:intf(intx){x++;returnx;}

执行以下语句:inta=5;f(a)+f(a);则a的值是(65)。

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

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

A.voidf(inta,int);B.voidf2(int,int);

C.voidf3(int,int=5);D.intf4(intx;inty);

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

A.不可访问B.privateC.protectedD.public

68.假定AB为•个类的类名,则该类的拷贝构造函数的函数原型是(68)。

A.AB&(ABX);B.AB(ABx);C.AB(AB&x);D.AB(AB*x);

69.执行下面的程序段后,v的值为(69)。

#defineS(x)x*x

inty,z=10;

y=S(z+1);

A.10B.21C.121D.语法错,不能求出y的值

70.下面有关类的构造函数与析构函数的叙述中,正确的是(70)。

A.同一个类的析构函数只能有一个

B.同一个类的构造函数只能有一个

C.同一个类的析构函数可定义多个

D.类的构造函数名可任意定义

二、填空题

1.基本概念题

1.在C+十中,函数名的值是(1)。

2.在C+十中,作用域共分为五类:块作用域、文件作用域、⑵、(3)和_(4k

3.若有宏定义:

#defineT(x,Y,z)x*y*z/4

则表达式T(3+4.2*4,4+4)的值是⑸。

4.在C++中,'Students”的值是(1)。

5.静态整型变量有确定的初值,其缺省的初值是(2)。

6.设有语句“intm;floatx,y;y=m=x=7.99;”,则y的值是(3)。

7.多态性分为两种:静态多态性和动态多态性。函数重载属于两种多态性中的哪•种:

(4)_____

8.在定义一个类时,缺省的构造函数是唯一的。当自定义的构造函数的每一个参数均有缺

省俏或(5),这种构造函数是缺省的构造函数。

9.设有语句“inta=[10];",则a的侑是⑴。

10.全局指针变量有确定的初值,其缺省的初值是(2)。

11.设有语句“intx[4][3]={3,4,5,6,7,8,9,10,11,12);w,则x-3」[0]

的初值是⑶。

12.在C十十的文件流中,打开文件的方法有两种:一种是使用成员函数open(),另

一种是使用(4)。

13.在多重派生中,要使•个基类在派生类中只有一个拷贝,则必须将这个基类说明为

(5)o

14.break语句只能用在循环语句和(1)语句中。

15.设有语句"inta=6,b=3;floatx=8,y;y=b/a*x/2;”,则v的值是(2)。

16.设有语句"chars[]="Rep\0Ch";intm=sizeof(s);",则m的值是(3)。

17.在C十十中,运算符的重载有两种实现方法,一种是通过成员函数来实现,另一种

则通过(4)来实现。

18.设有语句"inta=258,b;unsignedcharc;b=c=a;",则b的值是(5)。

19.continue语句只能用在一(1)语句中。

20.设有语句"floatx=2.9;inta=5,b;b=a+x;”,则变量b的值是(2)。

21.设有语句"chars[]="China\0Nanjin";intm=strlen(s);n»则m的值是(3)»

22.在C十十中函数的参数传递方式有三种:第一种是值传递,第二种是指针传递,第三

种是⑷传递。

23.设有语句"inta=5,b=7,c=15,d;d=b>aII(c=a+b):",则c的值是⑸。

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

25.设有循环语句:

for(intI=0,x=0,s=0;1<=9&&x!=55;1++){

cin»x;

s+=x;

在这个循环语句中,循环体最多执行(3)次,最少执行(4)次。

26.任一个类至少包含两个构造函数,一个是缺省的的构造函数或用户显示定义的构造函

数,另一1个是(5)o

27.在C++中,编译预处理包括三个方面的内容,它们分别是包含文件、⑴和⑵

28.在类定义中,如果仅定义了数据成员,而没有定义成员函数时,则由系统自动生成的

成员函数有缺省构造函数、析构函数、拷贝构造函数和(3)函数。

29.设有说明语句:

chars[]="123\t456\00089",*P=s;执行以下两个语句:

coutvv*(P+5)<vM';cout«(P+5)«,\n9;

则输出分别为⑷和⑸。

2.阅读程序题

1.以下程序的输出结果是(6)

#include<iostream.h>

voidp(int*a,int*b)

{int*t=a;a=b;b=t;}

voidmain(void)

{intx=100,y=200;

p(&x,&y);

cout<vxvv'\t'<vy<<'\n';

2.以下程序的输出结果是⑺⑻

#include<iostream.h>

voidmain(void)

{intj,k,s,m;

for(k=l;k<7;k++)

{s=1;m=k+2;

for(j=k;j<m;j++,k++)

cout«,,s=,,«s«,\t,«,,k=,,«k«,\n,;

3.以下程序输出结果的第•行是(9)第二行是(10)

#include<iostream.h>

voidf(int*s,intnl,intn2)

{intt;

while(nl<n2)

{t=*(s+nl);

*(s+nl)=*(s+n2);

*(s+n2)=t;

n1++;n2-;

)

voidmain(void)

{inta[10]={l,2,3,4,5,6,7,8,9,0},i,*p=a;

f(p,0,3);

f(p+3,l,6);

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

{if(i%5==0)

cout«,\n,;

cout«a[i];

4.以下程序输出结果的第一行是一(11)第二行(12)

#include<iostream.h>

classX

{public:

virtualvoidf(){cout<v''aa\rT;}

);

classY:publicX

{public:

voidf(){cout«,,bb\n,?;}

);

voidmain(void)

{Yy,*xy=&y;

X*xp=&y;

xyYf();

xp->f();

}

5.将上题中标有7/A的一行中virtual去掉,则程序输出结果的第二是.(13)

6.以下程序输出结果的第二行是(14)第二行(15)第三行(16)

#include<iostream.h>

voidshow(char*s)

{if(*s)show(s+l);cout«*s;}

voidmain(void)

{show("abcd\nefg\nhij‘');cout«endl;}

7.以下程序的第一行是一(17)第二行(18)

#include<iostream.h>

intk;

voidmain(void)

{k=10;

for(inti=0;i<5;i++)

{intk;k=i+l;

cout«k«,6;::k++;

}

cout«,\n]«k«,\n,;

)

8.以下程序的第一行是(6)第二行是⑺

#include<iostream.h>

voidf(int*a,intb)

{intt=*a;*a=b;b=t;}

voidmain(void)

{intx=10,y=20;

cout«x«,\t,«y«,\n,;

f(&x,y);

cout«x«,\t,«y«,\n,;

}

9.以下程序的第一行是(8)第二行是(9)

#include<iostream.h>

voidmain(void)

{intx=6;

do{x-=2;

cout«x«,\n,;

)while(-x)

)

10.以下程庠的第一行是.(10)第三行是是1)

#include<iostream.h>

intf(intx)

{staticintu=l;

x+=x;returnu*=x;

)

voidmain(void)

{intx=10;

cout«f(x)«,\n,;cout«f(x)«endl;

)

11.以下程序的第二行是(12)第二行(13)第三行是(14)

#include<iostream.h>

voidp1(chars[],inti)

{if(s[i]!=O)pl(s,i+l);

cout«s[i];

)

voidp2(chars[],inti)

{cout«s[i];

if(s[i]!=O)p2(s,i+D;

}

voidmain(void)

{charstr[]="123”;

cout«str«^^\n^^;

pl(str,0);cout«An*;

p2(str,0);cout«,\n,;

}

12.以下程序的第一行是(15)第二行(16)

#include<iostream.h>

classBa

{inty;

public:

intx;

Ba(intb){x=b;y=x+x;}

intGety(void)

{returny;}

);

classA:publicBa

{public:

A(intc):Ba(c){}

intGetx(void){returnx;}

);

classB:publicBa

{public:

B(intd):Ba(d){}

intGetx(){returnx;}

);

classC:publicB,publicA

{public:

C(inte):A(e+30),B(e+100){}

);

voidmain(void)

{Cc(100);

cout«c.A::Gety()«,\t,«c.B::Gety()«,\n\

cout«c.A::Getx()«*\t,«c.B::Getx()«,\n,;

)

13.以下程序的第一行是(17)第二行(18)

#include<iostream.h>

classX

{public:

voidvirtualf(){cout«vX:11,,m+m«,\n,;}

voidvirtualg(){cout«,,X:22,,«,\n,;}

);

classAipublicX

(

public:

voidf(){cout«,,A:33,,«,\n,;}

);

classB:publicA

(

public:

voidf(){cout«,,B:44,,«,\n,;}

voidg(inti=0){coutv<"B:55"《'\n';}

);

voidmain(void)

{Bb;X*px=&b;

px->f();

px->g();}

14.以下程序的第一行是(6)第二行是一(7)

#include<iostream.h>

voids(inta,int&b)

{intt=a;a=b;b=t;}

voidmain(void)

{intx=500,y=1000;

cout«x«,\t,«y«,\n,;

s(x,y);

cout«x«'\t'«y«'\n';

)

15.以下程序的第一行是(8)第二行是⑼

#include<iostream.h>

voidmain(void)

{for(inta=1,b=1;a<=5;a++)

{if(b>=8)break;

if(b%2==l){b+=7;continue;}

b-=3;

)

cout«,,a=,,<<a«,\n,«,,b=,,«b«,\n,;

)

16.以下程序的第一行是一(10)第三行是⑴)

#include<iostream.h>

intx=100

voidmain(void)

{intx=200;

x+=::x;

{intx=500;::x+=x;}

cout«x«endl;

cout«::x«endl;

)

17.以下程序的第二行是(12)第二行(13)第三行是(14)

#include<iostream.h>

voidf(inti)

{if(i==l)return1;

returni*f(i-l);

)

voidmain(void)

{intsum=0;

for(intj=1;j<=4;j++)

{t=f(j);

sum+=t;//sum=1+2+6+24=33

cout«t«,\t,«sum«,\n,;

18.以下程序的第二行是(15)第三行(16)

#include<iostream.h>

classE

{intx;

staticinty;

public:

E(inta){x=a;y+=x;)

voidShow()

{cout<<x«,\t,<<y«,\n,;}

);

intE::y=100

voidmain(void)

{Eel(10);

el.Show();

Ee2(50);

e2.Show();

el.Show();

)

19.以下程序的第一行是.(17)第二行(18)

#include<iostream.h>

classX

{intm;

public:

X(inta=0){m=a;}

voidvirtualf(){cout«m+m«,\n,;}

voidvirtualg(){cout«m*m«,\n,;}

);

classA:publicX

{intn;

public:

A(inta):X(100){n=a;}

voidf(){cout«n«,\n,;}

voidg(inta=0){cout«n*n«,\n,;)

);

voidmain(void)

{Aa(10);

X*p=&a;

p->f();

p->g();

)

20.以下程序的第一行是(6),第二行是⑺

#include<iostream.h>

floatf(floatsum,floatx[],intn)

{for(inti=0;i<n;i++)sum+=x[i];

returnsum/n;

)

voidmain(void)

{floatx[]={2,4,6,8},sum=0,y;

y=f(sum,x,4);

cout«"sum=,,«sum«\n,;

cout«ny=,'«y«,\n';

)

21.以下程序的第一行是(8),第二行是(的

#include<iostream.h>

voidmain(void)

{inty=122,a[8];

for(inti=0;y;i++)

{a[i]=y%8;y=y/8;}

for(intj=i-1;j>=O;j-)cout«a|j];

cout«endl;

cout«"y="«y«endl;

)

22.以下程序的第一行是.(10),第三行是(11)

#include<iostream.h>

intf(void)

{staticinta,b=10,c=1;

a+=b;b+=c;

returnc=a+b;

)

voidmain(void)

{cout«f()«endl;

cout«f()«endl;

}

23.以下程序的第一行是(12)第二行(13)第三行是(14)

#include<iostream.h>

voidfun(int*p,inti)

{cout«plij«\n*;

if(i<7)

fun(p,i+2);

voidmain(void)

{inta[10]={10,2,5,14,15,8,11,8,19};

fun(a,0);

)

24.以下程序的第二行是(15)第三行(16)

#include<iostream.h>

classA

{public:

intx;

A(){x=100;}

A(inti){x=i;}

voidShow()

{cout«"x="«x«'\t,«,,AA\n";}

);

classB

{public:

inty;

B(){y=300;)

B(inti){y=i;}

voidShow()

{cout«,,y=,,«y«'\t,«nBB\n";}

);

classC:publicA,publicB

{public:

inty;

C(inta,intb,intc):A(a),B(b)

{y=c;}

voidShow()

{cout«uy=',«y«,\t,«,,CC\nn;}

};

voidmain(void)

{Ccl(400,500,600);

cl.y=200;

cl.Show();

cl.A::Show();

cl.B::Show();

)

25.以下程序的第一行是(17)第二行(1的

#include<iostream.h>

classA

{intx,n;

intmul;

public:

A(inta,intb){x=a;n=b;mul=1;}

virtualintpower(void)

{mul=l;

for(inti=l;i<=n;i++)mul*=x;

returnmul;

)

voidshow(void)

{coutvvmukvY';}

);

classB:publicA

{inty,m;

intp;

public:

B(inti,intj,intk,inth):A(i,j)

{y=k;m=h;p=10;}

intpower(void)

{p=l;

for(inti=l;i<=m;i++)p*=y;

returnp;

)

voidshow(void)

{A::show();

cout«p«'\n';

)

);

voidfun(A*f)

{cout«f->power()«'\n,;}

voidmain(void)

{Aa(5,3);

Bb(2,4,3,3);

fun(&a);

fun(&b);

b.show();

)

26.以下程序的第一行是.(6)第二行是(7)

#include<iostream.h>

float*f(float*p,floatx[J,intn)

{floatsum=0;

fbr(inti=O;i<n;i++)sum+=x[i];

p=∑x[n]=sum;

returnx+n;

)

voidmain(void)

{floatx[]={1,2,5,7,0},s=0,*pl,*p2=&s;

pl=f(p2,x,4);

cout«n*pl=',«*pl«,\n,;

cout«"*p2="«*p2«'\n';

)

27.以下程序的第一行是一(8)第二行是一(9)

#include<iostream.h>

voidmain(void)

{inty=290,b[10];

for(inti=0;y;i++)

{b[i]=y%16;y=y/16;}

for(intj=O;j<i;j++)cout«b|jj;

习题1

1.1简述C++语言程序的结构特点。

答:

(1)C++程序由一个或多个函数组成,其中至少有一个主函数main(),程序从主函数

开始执行,山主函数来调用其他函数。

(2)C++函数由说明部分与函数体组成,函数体由变量定义和执行语句两部分组成。

其中函数体中语句和变量说明以分号结束。一般函数结构如下:

#编译预处理命令

函数类型〈函数名〉(形式参数)

{/*注释*/

变量说明;

执行语句;〃注释内容

(3)程序书写规则为同一层语句同列书写、内层语句缩进两个字符、函数定义在第一

列书写。严格区分字母的大小写,即大写与小写代表两个不同变量。

(4)C++输入/输出通过流cin和cout来实现的

1.2简述C++程序开发的步骤。

答:

(1)分析问题。根据实际问题,分析需求,确定解决方法,并用适当的工具描述它。

(2)编辑程序。编写C++源程序,并利用一个编辑器将源程序输入,保存到计算机中

的某一个文件中。文件的扩展名为.cpp。

(3)编译程序。编译源程序,产生目标程序。目标程序文件的扩展名为.obj。

(4)连接程序。将一个或多个目标程序与库函数进行连接后,产生一个可执行文件。

可执行文件的扩展名为.exe。

(5)运行调试程序。运行可执行文件,分析运行结果。若有错误进行调试修改。

在编译、连接和运行程序过程中,都有可能出现错误,此时要修改源程序,并重复以上

过程,直到得到正确的结果为止。

1.3设计1个C++程序,输出以下信息:

Hello!

解:

#include<iostream.h>

voidmain()

jcout«n***************”《、'♦

cout«"Hello!"«\n';

COUt«"***************”《、'•

1.4设计一个C++程序,输入三个学生的成绩,求其总成绩。

解:

#include<iostream.h>

main()

{intsl,s2,s3,sum;

cout<<"请输入三个学生的成绩:

cin»sl»s2»s3;

sum=sl+s2+s3;

cout«,'sum=,'«sum«'\n';

1.5设计一个C++程序,输入a、b二个整数,用sub()函数求两数之差。

解:

ttinclude<iostream.h>

voidmain(void)

{intsub(intx,inty);

inta,b,m;

cout<</zInputa,b:〃;

cin»a>>b;

m=sub(a,b);

cout<<,,a-b=,z«m«endl;

)

intsub(intx,inty)

{intz;

z=x-y;

return(z);

}

习题2

2.1简述标识符定义。指出下列用户自己定义的标识符中哪些是合法的?哪些是非法

的?如果是非法的,为什么?

答:

xyVBookV3abX(不能数字开头)x_2VswitchX(保留字)integerV

lX(不能包含)_nameVMyDeskV#NOX(不能包含“#")

y.5X(不能包含)charX(保留字)

2.2.C++语言中有哪些数据类型?

答:「短整型shortint

整型J整型int

I长整型longint

r单精度型float

r基本类型4实型4成金工,

L双精度型double

字符型char

无值型void

C++数据类型<

数组

指针

I导出类型结构体

共同体

2.3什么是常量?什么是变量?

答:类

在程序执行过程中,其值不解被改獭蝇椀物常量。

在程序执行过程中,其值可以改变的量称为变量。变量必须用标识符来命名。

2.4下列常量的表示在C++中是否合法?若合法,指出常量的数据类型;若非法,指出

原因。

答:

-123V(整型,十进制)0321V(整型,八进制),567V(浮点型,十进制小数)

1.25e2.4X(指数部分有必须是整数)32LV(长整型,十进制)

M'V(字符型,字符常量)"Computer"」(字符型,字符串常量)

'x*(字符型,字符常量)"x"V(字符型,字符串常量)'\85'X(85不是八进数)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论