c++语言程序设计教程习题及解答.docx

上传人:b****1 文档编号:11078478 上传时间:2023-05-29 格式:DOCX 页数:148 大小:67.39KB
下载 相关 举报
c++语言程序设计教程习题及解答.docx_第1页
第1页 / 共148页
c++语言程序设计教程习题及解答.docx_第2页
第2页 / 共148页
c++语言程序设计教程习题及解答.docx_第3页
第3页 / 共148页
c++语言程序设计教程习题及解答.docx_第4页
第4页 / 共148页
c++语言程序设计教程习题及解答.docx_第5页
第5页 / 共148页
c++语言程序设计教程习题及解答.docx_第6页
第6页 / 共148页
c++语言程序设计教程习题及解答.docx_第7页
第7页 / 共148页
c++语言程序设计教程习题及解答.docx_第8页
第8页 / 共148页
c++语言程序设计教程习题及解答.docx_第9页
第9页 / 共148页
c++语言程序设计教程习题及解答.docx_第10页
第10页 / 共148页
c++语言程序设计教程习题及解答.docx_第11页
第11页 / 共148页
c++语言程序设计教程习题及解答.docx_第12页
第12页 / 共148页
c++语言程序设计教程习题及解答.docx_第13页
第13页 / 共148页
c++语言程序设计教程习题及解答.docx_第14页
第14页 / 共148页
c++语言程序设计教程习题及解答.docx_第15页
第15页 / 共148页
c++语言程序设计教程习题及解答.docx_第16页
第16页 / 共148页
c++语言程序设计教程习题及解答.docx_第17页
第17页 / 共148页
c++语言程序设计教程习题及解答.docx_第18页
第18页 / 共148页
c++语言程序设计教程习题及解答.docx_第19页
第19页 / 共148页
c++语言程序设计教程习题及解答.docx_第20页
第20页 / 共148页
亲,该文档总共148页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++语言程序设计教程习题及解答.docx

《c++语言程序设计教程习题及解答.docx》由会员分享,可在线阅读,更多相关《c++语言程序设计教程习题及解答.docx(148页珍藏版)》请在冰点文库上搜索。

c++语言程序设计教程习题及解答.docx

c++语言程序设计教程习题及解答

《c++语言程序设计教程》习题及解答

第1章 C++语言概述 

练习题1

1.1判断题

×1.C++语言和C语言都是面向对象的程序设计语言。

√2.面向对象方法具有封装性、继承性和多态性。

√3.C语言是C++语言的一个子集。

C++语言继承了C语言。

×4.C++语言程序与C语言程序一样都是函数串。

×5.C++语言支持封装性和继承性,不支持多态性。

√6.C++语言比C语言对数据类型要求更加严格了。

√7.C++语言对C语言进行了一次改进,使得编程更加方便了。

×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。

√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。

√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。

1.2单选题

1.下列关于面向对象概念的描述中,错误的是(C)。

A.面向对象方法比面向过程方法更加先进

B.面向对象方法中使用了一些面向过程方法中没有的概念

C.面向对象方法替代了结构化程序设计方法

D.面向对象程序设计方法要使用面向对象的程序设计语言

2.下列各种高级语言中,不是面向对象的程序设计语言是(D)。

A.C++B.Java

C.VBD.C

3.下列关于类的描述中,错误的是(A)。

A.类就是C语言中的结构类型

B.类是创建对象的模板

C.类是抽象数据类型的实现

D.类是具有共同行为的若干对象的统一描述体

4.下列关于对象的描述中,错误的是(C)。

A.对象是类的一个实例

B.对象是属性和行为的封装体

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

D.对象是现实世界中客观存在的某种实体

5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C)。

A.提取符是对右移运算符(>>)重载得到的

B.插入符是对左移运算符(<<)重载得到的

C.提取符和插入符都是双目运算符,它们要求有两个操作数

D.提取符和插入符在输入/输出语句中不可以连用

1.3填空题

1.C++语言具有面向对象方法中要求的三大特性:

封装性、继承性和多态性。

2.C++程序中,有且仅有一个主函数。

3.C++程序是由类和函数组成的。

4.C++源程序的扩展名是cpp。

5.使用插入符进行标准输出文件输出时,使用的输出流对象名是cout。

1.4上机调试下列程序,并分析输出结果

1.

#include

voidmain()

{

inti,j;

cout<<"Enterij:

";

cin>>i>>j;

cout<<"i="<

cout<<"i+j="<

}

假定,输入数据如下:

Enterxy:

59

答:

i=5,j=9

i+j=14,i*j=45

2.

#include

intmax(int,int);

voidmain()

{

inta,b,c;

a=5;

b=8;

c=max(a,b);

cout<<"max("<

}

intmax(intx,inty)

{

returnx>y?

x:

y;

}

答:

max(5,8)=8

3.文件e1.4.3.cpp容如下:

#include

voidf1(),f2();

voidmain()

{

cout<<"在.\n";

f1();

f2();

cout<<"再见.\n";

}

文件1.4.3-1.cpp容如下:

#include

voidf1()

{

cout<<"在.\n";

}

文件1.4.3-2.cpp容如下:

#include

voidf2()

{

cout<<"在.\n";

}

答:

在。

在。

在广卅。

再见。

1.5编译下列程序,修改所出现的错误,获得正确结果

1.

main()

{

cout<<"Inmain().\n"

}

答:

修改后如下:

#include

voidmain()

{

cout<<"Inmain().\n";

}

2.

#include

voidMAIN()

{

cin>>a;

intb=a+a;

cout<<"b=<

}

答:

修改后如下:

#include

voidmain()

{

inta;

cin>>a;

intb=a+a;

cout<<"b=”<

}

3.

#include

voidmain()

{

inti,j;

i=5;

intk=i+j;

COUT<<"i+j="<

}

答:

#include

voidmain()

{

inti,j;

j=10;

i=5;

intk=i+j;

cout<<"i+j="<

}

1.6通过对1.5题中3个程序的修改,回答下列问题

1.从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。

答:

C++程序要包含iostraem.h,main()函数前应加类型说明符void。

2.C++程序中所出现的变量是否必须先说明后使用?

在函数体说明变量时是否都要放在函数体的开头?

答:

C++程序中所出现的变量必须先说明后使用。

在函数体说明变量时不一定要放在函数体的开头。

3.使用cout和插入符(<<)输出字符串常量时应注意什么?

答:

可输出一个字符串常量,也可输出多个字符串常量。

每输出一个字符串常量要使用一次插入符(<<)。

4.程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?

答:

不能使用。

因为它的值不确定。

5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?

答:

不一定正确。

可能还有算法错。

 

第2章变量和表达式及数组 

练习题2

2.1判断题

√1.C++语言的合法字符集与C语言的完全相同。

×2.标识符规定大小写字母没有区别。

×3.C++程序中,不得使用没有定义或说明的变量。

√4.变量的存储类指出了变量的作用域和寿命。

√5.变量的数据类型指出了变量在存中存放的字节数。

×6.定义变量时,变量的存储类说明符不得省略。

×7.自动类变量与部静态类变量的作用域和寿命都是相同的。

×8.自动类变量可以定义在函数体外,这时应加说明符auto。

×9.外部类变量与外部静态类变量的作用域是相同的。

×10.变量被定义后是否有默认值与存储类无关,与数据类型有关。

√11.C++程序中,通常使用const来定义符号常量,定义时必须指出类型。

×12.变量被定义或说明后,它一定具有有意义的值。

×13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。

×14.所有变量的可见性和存在性都是一致的。

√15.变量在它的作用域一定是可见的,又是存在的。

√16.C++语言中除了包含C语言的所有运算符外,还规定自身的若干个运算符。

√17.增1和减1运算符以及赋值运算符都具有副作用。

×18.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。

×19.关系运算符可以用来比较两个字符的大小,也可以比较两个字符串的大小。

×20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补0。

×21.变量的类型高低是指它被存放在存的地址值大小。

×22.使用sizeof运算符可以求得某种类型和某个变量在存中占的字节数,不能求得某个表达式的类型在存中所占的字节数。

√23.在C++语言中,非保值转换应用强制类型转换。

√24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。

√25.在C++程序中,变量值是可以改变的,变量的地址值是不能改变的。

√26.数组中所有元素的类型都是相同的。

×27.定义数组时必须对数组进行初始化。

√28.数组某维的大小可以用常量表达式,不可用变量名。

×29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。

√30.用来给数组进行初始化的初始值表的数据项的个数必须小于等于数组元素个数。

×31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意义的。

√32.数组被初始化时是判越界的。

×33.字符数组就是字符串。

√34.使用printf()函数输出显示字符串时使用格式符%s,输出显示字符时使用%c或%d。

×35.给数组元素赋值时只可用常量表达式。

2.2单选题

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

A.A25B.My_car

C.My-strD.abc

2.下列常量中,十六进制int型常量是(A)。

A.0x5fB.x2a

C.D.7a

3.下列常量中,不是字符常量的是(B)。

A.'\n'B."y"

C.'x'D.'\7'

4.在函数体定义了下述变量a,a的存储类为(D)。

inta;

A.寄存器类B.外部类

C.静态类D.自动类

5.下列关于变量存储类的描述中,错误的是(C)。

A.任何变量定义后都具有一个确定的存储类

B.变量的存储类确定了变量的作用域和寿命

C.定义变量时没有存储类说明符者一律为自动类

D.部静态类变量和外部静态类变量的存储类说明符都是static

6.下列关于变量数据类型的描述中,错误的是(A)。

A.定义变量时int型数据类型可以省略

B.变量的数据类型可以决定该变量占存的字节数

C.变量的数据类型是可以被强制的

D.变量的数据类型是有高低之分的

7.长双精度浮点型常量的后缀是(C)。

A.UB.F

C.LD.无

8.下列运算符中,不能用于浮点数操作的是(D)。

A.++B.+

C.*=D.&(双目)

9.下列运算符中,优先级最高的是(A)。

A.*(双目)B.||

C.>>D.%=

10.下列运算符中,优先级最低的是(B)。

A.==B.?

C.|D.&&

11.已知:

inta(3);下列表达式中,错误的是(C)。

A.a%2==0B.a--+2

C.(a2)++D.a>>=2

12.已知:

intb(5),下列表达式中,正确的是(D)。

A.b="a"B.++(b1)

C.b%2.5D.b=3,b+1,b+2

13.下列关于类型转换的描述中,错误的是(C)。

A.类型转换运算符是(<类型>)

B.类型转换运算符是单目运算符

C.类型转换运算符通常用于保值转换中

D.类型转换运算符作用于表达式左边

14.下列表达式中,其值为0的是(A)。

A.5/10B.!

0

C.2>4?

0:

1D.2&&2||0

15.下列表达式中,其值不为逻辑值的是(A)。

A.算术表达式B.关系表达式

C.逗号表达式D.逻辑表达式

16.下列关于数组概念的描述中,错误的是(B)。

A.数组中所有元素类型是相同的

B.数组定义后,它的元素个数是可以改变的

C.数组在定义时可以被初始化,也可以不被初始化

D.数组元素的个数与定义时的每维大小有关

17.下列关于数组维数的描述中,错误的是(C)。

A.定义数组时必须将每维的大小都明确指出

B.二维数组是指该数组的维数为2

C.数组的维数可以使用常量表达式

D.数组元素个数等于该数组的各维大小的乘积

18.下列关于数组下标的描述中,错误的是(B)。

A.C++语言中数组元素的下标是从0开始的

B.数组元素下标是一个整常型表达式

C.数组元素可以用下标来表示

D.数组元素的某维下标值应小于该维的大小值

19.下列关于初始值表的描述中,错误的是(C)。

A.数组可以使用初始值表进行初始化

B.初始值表是用一对花括号括起的若干个数据项组成的

C.初始值表中数据项的个数必须与该数组的元素个数相等

D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值

20.下列关于字符数组的描述中,错误的是(D)。

A.字符数组中的每一个元素都是字符

B.字符数组可以使用初始值表进行初始化

C.字符数组可以存放字符串

D.字符数组就是字符串

21.下列关于字符串的描述中,错误的是(C)。

A.一维字符数组可以存放一个字符串

B.二维字符数组可以存放多个字符串

C.可以使用一个字符串给二维字符数组赋值

D.可以用一个字符串给二维字符数组初始化

22.已知:

inta[5]={1,2,3,4};下列数组元素值为2的数组元素是(B)。

A.a[0]B.a[1]

C.a[2]D.a[3]

23.已知:

intab[][3]={{1,5,6},{3},{0,2}};数组元素ab[1][1]的值为(A)。

A.0B.1

C.2D.3

24.已知:

chars[]="abcd";输出显示字符'c'的表达式是(C)。

A.sB.s+2

C.s[2]D.s[3]

25.已知:

charss[][6]={"while","for","else","break"};输出显示"reak"字符串的表达式是(B)。

A.ss[3]B.ss[3]+1

C.ss+3D.ss[3][1]

2.3填空题

1.C++语言中,基本数据类型包含有整型、浮点型、字符型、空值型和布尔型。

2.变量的存储类可分为自动类、寄存器类、外邹类和静态存储类。

3.浮点型常量可分为单精度、双精度和长双精度浮点型常量。

4.结合性从右至左的运算符有单目运算符、双目运算符和赋值运算符。

5.条件表达式是由三目运算符组成的,该表达式的类型是由冒号左边和右边两个操作数中类型高的操作数类型决定的。

6.已知:

doubledd[][3]={{1.2,2.4,3.6},{4.8,5.2},{6.4}};这里dd是一个二维数组的数组名,该数组共有9个元素,每个元素的类型是double。

数组元素dd[0][0]的值是1.2,dd[1][1]的值是5.2,数组元素dd[2][2]的值是0。

7.已知:

charss[][6]={"while","break","for","else"};字符数组ss是二维数组,它的第1维大小应该是4。

使用cout和<<输出字符串"for"时,对应的表达式是ss+2。

使用cout和<<输出字符串"break"的子串"reak"时,对应的表达式是ss[1]+1。

使用cout和<<输出字符串else中的字符's'时,对应的表达式是ss[3][2]。

2.4分析下列程序

1.

#include

voidmain()

{

inta,b;

cout<<"Enterab:

";

cin>>b>>a;

intd=a-b;

cout<<"d="<

}

假定输入为5和8。

答:

d=3

2.

#include

voidmain()

{

constintA=8;

constcharCH='k';

constdoubleD=8.5;

cout<<"A="<

cout<<"CH+2="<

cout<<"D-5.8="<

}

答:

A=8

CH=2=m

D-5.8=2.7

3.

#include

inta=9;

voidmain()

{

intb=5;

cout<<"a+b="<

staticintc;

cout<<"c+a="<

constlongintd=8;

cout<<"a+d-b="<

}

答:

a+b=14

c+a=9

a+d-b=12

4.

#include

voidmain()

{

inta=3;

charb='m';

cout<<"a="<

{

inta=5;

b='n';

cout<<"a="<

}

cout<<"a="<

}

答:

a=5,b=m

a=3,b=n

a=3,b=n

5.

#include

voidmain()

{

cout<<6%4*5/3+3<

cout<<(10&3|8)<

cout<<(5<<2)+(5>>2)<

cout<<~4<

}

答:

6

10

21

-5

6.

#include

voidmain()

{

inta=5;

cout<

doubleb=1.5;

cout<

}

答:

<地址值>,4,4

4,8,8

7.

#include

voidmain()

{

inta=3,b=5;

cout<<(a>b+a==b-2)<<','<<(a!

=b+a<=b)<

charc='k';

cout<<(c<='k')<<','<<(--c!

='h'+2)<

floatf=2.3f;

cout<<(--f<=f)<

}

答:

0,1

1,0

1

8.

#include

voidmain()

{

inti,j,k;

i=j=k=5;

!

i&&++j&&--k;

cout<

i||j--||++k;

cout<

i-5||j-5&&++k;

cout<

}

答:

5,5,5

5,5,5

5,5,5

9.

#include

voidmain()

{

inti(5),j(8);

cout<<(i=i*=j)<

i=5,j=8;

i=5*j/(j---5);

cout<

i=5,j=8;

cout<<(j+=i*=j-5)<

}

答:

40

13,7

23

10.

#include

inta=8;

voidmain()

{

intb=6;

doubled=1.5;

d+=a+b;

cout<

cout<<(a=1,b=2,d=2.5,a+b+d)<

cout<<(a<0?

a:

b<0?

a++:

b++)<

}

答:

15.5

5.5

2

11.

#include

voidmain()

{

intm[][3]={9,8,7,6,5,4,3,2,1},s=0;

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

s+=m[i][i];

cout<

}

答:

15

12.

#include

voidmain()

{

chars[]="bhy543kpm345";

for(inti=0;s[i]!

='\0';i++)

{

if(s[i]>='a'&&s[i]<='z')

continue;

cout<

}

cout<

}

答:

543345

13.

#include

voidmain()

{

intb[]={5,3,4,1,8,9,0,10};

inti=0,j;

for(j=i;i<8;i++)

if(b[i]>b[j])

j=i;

cout<

}

答:

7,10

14.

#include

voidmain()

{

inta[][3]={1,2,3,4,5,6,7,8,9};

ints1(0),s2(0);

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

for(intj=0;j<3;j++)

{

if(i!

=j)

s1+=a[i][j];

if(i+j==1)

s2+=a[i][j];

}

cout<<"s1="<

}

答:

s1=30,s2=6

15.

#include

voidmain()

{

chars[]="#%#";

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

{

for(intj=0;j

cout<<'';

for(intk=0;k<3;k++)

cout<

cout<

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2