C++练习题.docx

上传人:b****7 文档编号:9736090 上传时间:2023-02-06 格式:DOCX 页数:227 大小:140.57KB
下载 相关 举报
C++练习题.docx_第1页
第1页 / 共227页
C++练习题.docx_第2页
第2页 / 共227页
C++练习题.docx_第3页
第3页 / 共227页
C++练习题.docx_第4页
第4页 / 共227页
C++练习题.docx_第5页
第5页 / 共227页
点击查看更多>>
下载资源
资源描述

C++练习题.docx

《C++练习题.docx》由会员分享,可在线阅读,更多相关《C++练习题.docx(227页珍藏版)》请在冰豆网上搜索。

C++练习题.docx

C++练习题

1绪论

例题2:

输入一名学生的成绩,判断该成绩的等级。

如>=60的,显示“合格”,<60的显示“不合格”。

程序:

#include//输入输出流对象的头文件

voidmain()

{intscore;//声明成绩变量,用来保存分数

cout<<”输入成绩:

”;//提示用户的信息

cin>>score;//从键盘上输入分数传递给score

if(score>=60)//判断该条件是否真或假

cout<<”合格”<=60是真的时候,运行该语句

else

cout<<”不合格”<=60是假的时候,运行该语句

}

分析:

(1)

(1) 首先该题目要求输入一个分数,则事先声明一个整型变量score。

(2)

(2) 其次从键盘上输入该分数,应有输入语句cin,并由上面定义的变量来保存分数。

(3)(3) 然后根据分数来判断等级,有两种情况应该用if语句。

(4)(4) 输出的信息是根据不同条件显示字符串,用到cout输出流对象。

(5)(5) 用到标准输入输出流对象,所以在程序前加相应头文件。

 

例题3:

面向对象的()是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。

不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。

A.多态性B.封装性C.继承性D.重用性

答案B

分析:

封装性是指把对象属性和操作结合在一起,构成独立的单元,其内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。

若不清楚多态性的定义,误选答案A。

多态性是指当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。

若不清楚继承性的定义,误选答案C。

继承是指派生类可以自动拥有基类的全部属性和服务。

若不清楚重用性的定义,误选答案D。

重用性是多态性的一种表现形式。

 

例题4:

C++源文件的扩展名为()。

A.cppB.cC.txtD.exe

答案A

分析:

C++源程序的扩展名为cpp。

C程序的扩展名为c。

文本文件的扩展名为txt。

源程序编译后可执行文件的扩展名为exe。

若不清楚C++源程序扩展名和C源程序扩展名的区别,误选答案B。

C++兼容C,当文件名保存为c时,调用C编译器;当文件名保存为cpp时调用C++编译器。

若不清楚C++源程序扩展名和文本文件扩展名的区别,误选答案C。

C++源程序可以在文本编辑器里编辑,但一定注意将其扩展名保存cpp,不能为txt。

若不清楚C++源程序和C++可执行文件的扩展名的区别,误选答案D。

C++源程序经过编译、连接后得到可执行文件的扩展名为exe。

 

例题5:

C++的合法注释是()。

A./*ThisisaCprogram/* B.//ThisisaCprogram

C.“ThisisaCprogram”D.//ThisisaCprogram//

答案:

B

分析:

单行注释常采用“//”,多行注释采用“/*”和“*/”。

单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。

注释和字符串的区别,双引号内的字符为字符串。

不能选答案C。

单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。

也不能选答案D。

 

例题6:

下面标识符中正确的是()。

A._abcB.3abC.intD.+ab

答案:

A 

分析:

C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。

答案B第一个字符为数字不能选B。

标识符不能为关键字,不能选答案C。

答案D第一个字符不是字母或下划线,也不能选。

例题7:

分析下列该程序的错误。

输入数据格式为:

2,5(回车)。

main()

{intsum=0;

inta,b;

cout<<"inputa,b:

";

cin>>a>>b;

sum=a+b;

cout<

}

本程序把输入的两个数据进行累加并输出结果。

答案:

输入数据格式为:

25。

#include//编译预处理命令,以“#”开头。

把系统已经定义好的输入

//输出功能包含到本程序中。

voidmain()//程序的主函数

{//主函数开始

intsum=0;//定义一个变量sum存放累加结果,并且赋初值为0

inta,b;//定义两个变量,保存输入值

cout<<"inputa,b:

";//提示输入

cin>>a>>b;//使用基本输入设备cin输入两个变量值

sum=a+b;//进行累加,结果保存到sum变量

cout<

}

分析:

(1)没有使用编译预处理命令:

#include。

iostream.h是系统定义的一个头文件(h-head),设置了C++的I/O环境。

cin、cout为基本输入、输出设备,定义在iostream.h头文件中。

(2)没有main()函数的返回类型,系统提示警告。

main()函数的返回类型常标注为void。

(3)输入数据时没有使用空格分隔。

输入运算符“>>”要求输入的多个数据用空格分隔。

 

 

1.11.3     教材习题分析与解答

1.参照例题,编写一个能输出以下信息的程序。

Howareyou.

Fine,thankyou.

程序:

#include

Voidmain()

{Cout<<”Howareyou.”<

Cout<<”Fine,thankyou.”<

}

2.参照例题,编写一个求两个数78、45之差的程序。

程序:

#include

voidmain()

{intsum=0;

sum=78+45;//求和

cout<<"78+45="<

}

 

3.参照例题,编写一个求三个数14、25、16之和的程序。

#include

voidmain()

{inta,b,c,sum;//定义变量

cout<<"inputthreenumber:

\n";

cin>>a>>b>>c;//从键盘输入三个数给变量a和b、c

sum=a+b+c;//求和

cout<<"sumis"<

}

1.21.4   补充习题

1.下面的()不是C++所包含的要素。

A.重载B.对象C.类D.继承

2.下列标识符中,()是合法的。

A.gotoB.StudentC.123D.k-ld

3.在C++语言中,()的陈述是正确的。

A.能使用关键字并区分大小写B.能使用关键字并不区分大小写

C.不能使用关键字并区分大小写D.不能使用关键字并不区分大小写

4.C++语言中语句的结束符是()。

A.,B.;C.。

D.、

5.下面对于类的描述,()是错误的。

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

C.类是创建对象的模板D.类就是C语言中的结构类型

6.写一个程序输出Hello,C++!

7.编译下列程序,改正错误信息,分析输出结果。

#include

voidmain()

{intx,y;

cout<<"inputx:

"<

cin>>x;

y=x*x;

cout<<"y=<

}

改正:

cout<<"y="<

8.下列程序有何错误?

#include

voidmain()

{cout>>"Hello">>endl;}

改正:

#include

voidmain()

{cout<<"Hello"<

9.关于C++和C语言的描述中,()是错误的?

A.C是C++的一个子集B.C程序在C++环境可以运行

C.C++程序在C环境可以运行D.C++是面向对象的而C是面向过程的

10.给出下列程序的运行结果。

#include

voidmain()

{

inta

(2),b(3),c(4);

cout<<"c1="<

c=a+b;

cout<<"c2="<

}

 

2 简单程序设计

2.1知识要点

计算机的基本功能是进行数据处理。

在C++语言中,数据处理的基本对象是常量和变量。

运算是对各种形式的数据进行处理。

数据在内存中存放的情况由数据类型所决定。

数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。

本章是对C++语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:

1.掌握常量和变量的概念。

2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。

3.掌握各种类型的变量说明及其初始化。

4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。

5.掌握运算符的优先级、左结合和右结合规则。

6.掌握表达式求值时的自动转换和强制类型转换。

7.掌握自加、自减运算的规则。

8.掌握常用数学函数的功能。

2.2典型例题分析与解答

1.1. 选择题

例题1:

运算符+、=、*、>=中,优先级最高的运算符是()。

A.+B.=C.*D.>=

答案:

C

分析:

根据C++语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、>=、+、*。

 

例题2:

下列说法正确的是()。

A.cout<<”\n”是一个语句,它能在屏幕上显示”\n”

B.\68代表的是字符D。

C.1E+5的写法正确,它表示余割整型常量。

D.0x10相当于020。

答案:

D

分析:

分号是语句的已部分,且\n是转义字符;\68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;十六进制的10相当于十进制的16,相当于八进制的20。

 

例题3:

下列不合法的变量名为()。

A.intB.int1C.name_1D.name0

答案:

A

 

分析:

根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。

 

例题4:

下面正确的为()。

A.4.1/2B.3.2%3

C.3/2==1结果为1D.7/2结果为3.5

答案:

A

分析:

%运算符要求式整型;关系运算值为0;两个整数相除,商为为相除后的整数部分。

 

例题5:

已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?

++d:

a

A.9B.6C.8D.0

答案:

D

分析:

此题是考察“++”运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规则,得出表达式的运算结果。

 

例题6:

已知i=5,j=0,下列各式中运算结果为j=6的表达式是()。

A.j=i+(++j)B.j=j+i++C.j=++i+jD.j=j+++i

答案:

C(A、D也对)j+++i相当于(j++)+i

分析:

自增++、自减运算符在变量的前面或后面,其运算结果是不同的。

若++或—在变量前,则先将变量的值加1(或减1)后,再将变量的值参与运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。

自增++、自减运算符优先级高于算术运算符。

 

例题7:

已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!

y)的值是()。

A.0B.语法错C.1D.“假”

分析:

根据C++语言中运算符优先级的高低,“!

”运算符最高,关系运算符高于逻辑运算符。

则上面的表达式转换为:

1&&1&&1,结果为1。

答案:

C。

 

2.2. 填空题

例题8:

如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为____。

答案:

1

分析:

%运算符是求余运算,得到的结果是相除后的余数。

表达式转换为6%2+(6+1)%2=0+7%2=1。

 

例题9:

如果定义inta=2,b=3;floatx=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为_____。

答案:

4.5

分析:

不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。

对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。

 

例题10:

设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为____。

答案:

9

分析:

逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。

求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。

本题的答案为9。

 

例题11:

已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘4’的值为____。

答案:

e

分析:

C++语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。

以字符形式输出时,再将ASCII码转换为相应的字符输出。

本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。

 

3.3. 编程题

例题12:

编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。

解:

程序如下:

#include

voidmain()

{

doubler,h,area,volume;

cout<<”请输入半径:

”;

cin>>r;

cout<<”请输入高:

”;

cin>>h;

area=3.14*r*r;

volume=area*h;

cout<<”底面积是:

”<

cout<<”体积是:

”<

}

2.3教材习题分析与解答

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

分别说明它们的类型关键字、取值范围、类型长度。

答:

C++语言中的数据类型有:

整型(短整型,整型,长整型);字符型;逻辑型;枚举型;实型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。

2.2.    字符常量与字符串常量的区别是什么?

答:

字符常量与字符串常量的主要区别在于:

(1)定界符不同。

字符常量使用单引号,而字符串常量使用双引号。

(2)长度不同。

字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。

(3)存储要求不同。

字符常量存储的是字符的ASCII码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志’\0’。

 

3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?

2518-3.6712.8“4”‘4’

x1“x2”“1949.10”cinK_name

3ab“floatx,y“;if+

“\n”?

;“sy1.cpp”‘\32’\’

答:

数值常量有:

25,18,-3.67,12.8

字符常量有:

‘4’,\’,‘\32’

字符串有:

“4”,“x2”,“1949.10”,“sy1.cpp”,“\n”

保留字:

cin,int,endl,if

运算符:

+

标点:

?

非法数据:

“floatx,y“;,3ab

变量:

x1,K_name

 

4.选择题

(1)下列数据类型不是C++语言基本数据类型的是()。

A.字符型B.整型C.实型D.数组

答案:

D

 

(2)在C++语言中,080是()。

A.八进制数B.十进制数C.十六进制数D.非法数

答案:

B

 

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

A.switchB.fileC.breakD.do

答案:

B

 

(4)运算符+、<=、=、%中,优先级最低的运算符是()。

A.+B.<=C.=D.%

答案:

C

 

(5)下列字符列中,可以作为“字符串常量”的是()。

A.ABCB.″xyz″C.′uvw′D.′a′

答案:

B

 

(6)设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是()。

A.0,0B.0,1C.1,0D.1,1

答案:

C

 

(7)字符串”vm\x43\\\np\102q”的长度是()。

A.8B.10C.17D.16

答案:

A

(8)在C++语言中,自定义的标识符()。

A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写

C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写

答案:

D

 

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

A.3B.0C.-40D.–12

答案:

C

 

(10)设a为5,执行下列代码后,b的值不为2的是()。

A.b=a/2B.b=6-(--a)

C.b=a%2D.b=a<3?

3:

2

答案:

C

 

(11)下面的()均是C语言的整型常量。

A.0xffff和611B.01b和0xa1C.986.012和0667D.2e4和0x

答案:

A

(12)数学公式

写成C表达式,下面的()是正确的。

A.sqrt(abs(pow(x,y)+exp(y)))B.sqrt(abs(pow(y,x)+exp(y)))

C.sqrt(fabs(pow(x,y)+exp(y)))D.sqrt(fabs(pow(y,x)+exp(y)))

答案:

D

 

5.x为int类型,y为double类型,指出下列各表达式值的类型。

(1)1/3int

(2)48Llong

(3)5%3int(4)x*3/ydouble

(5)‘x’+20int(6)(int)yint

(7)y!

=10bool(8)x<1||x>10bool

(9)x>10?

x:

sqrt(x)int或float(10)x&&ybool

(11)truebool(12)(char)(x+10)char

(13)1.0/3float(14)sizeof(float)int

(15)x,y,x+y,double

说明:

(9)题,如果x>10成立,表达式值的类型为int,如果x>10不成立,表达式值的类型为float。

(15)题,为逗号表达式,x+y的值即为整个表达式的值,因而值的类型为double。

bool型在C++用int代替,true值为1,false值为0。

 

6.写出下列算术表达式的值:

(1)x+a%3*(int)(x+y)%2/4x=2.5,a=7,y=4.7

答:

上述表达式=2.5+1*(int)7.2%2/4=2.5+1*7%2/4=2.5

 

(2)(float)(a+b)/2+(int)x%(int)ya=2,b=3,x=3.5,y=2.5

答:

上述表达式=(float)5/2+3%2=2.5+1=3.5

 

7.设程序中有说明语句

inta=20;doublex=4.7;charr=’a’;

试求出下列每个表达式的值(假定各表达式互不影响)。

~

答案答案

(1)a++20

(2)++r98

(3)1+a/3%43(4)10*sizeof(int)40

(5)char(a+20)((6)a==r||a==floor(x)0

(7)a/9.02.222222(8)x=pow(3,5)273.000000

(9)x=(a++,r++)97.000000(10)ceil(x-0.5)5.000000

(11)a=abs(a)%8-10-6(12)x=fabs(-27.2)+633.200000

(13)floor(x+0.5)5.000000(14)ceil((x-=0.5)-0.5)4.000000

(15)floor(x*1000+0.5)/10004.700000(16)floor(x+0.5)5.000000

(17)floor(x*1000)/10004.700000(18)a+rand()%40某一个随机整数

(19)a%=n%=2),n=55

此题运行时要给n赋初值,n必须是整型奇数,n为整型偶数出错。

(20)a+=a-=a*=a0

说明:

函数ceil(x),返回大于等于x的最小整数;floor(x),返回小于等于x的最大整数;rand(),返回0~32767之间的整数。

 

8.设程序中有说明语句

intx=20;floaty=4.7;charch=’k’;

试求出下列每个表达式的值(假定各表达式互不影响)

答案答案

(1)x==00

(2)x!

=y1

(3)x++>210(4)‘a’==‘A’0

(5)ch!

=01(6)x>0&&y>01

(7)x>0&&11(8)y>0&&00

(9)!

(x||y)==!

x&&!

y0(10)x++!

=20||y1

(11)!

!

ch==ch0(12)!

(x&&y)==!

x||!

y1

说明:

C++语言提供了三种逻辑运算符:

,&&,||,其中!

逻辑非的优先级最高,&&逻辑与次之,||逻辑或最低。

逻辑非是右结合性,&&逻辑与和||逻辑或是左结合性。

3控制结构

3.1知识要点

流程控制是控制程序中语句执行的顺序。

任何程序设计语言都具备流程控制的功能,而C++语言提供了比其它高级语言更丰富的流程控制语言。

本章节主要介绍了程序设计中最基本三种结构:

顺序、分支和循环,要求掌握以下的知识要点:

1.掌握顺序结构的编程方法。

2.掌握使用cin、cout实现数据的输入/输出。

3.学会应用字符输入/输出函数。

4.掌握scanf()函数和printf()函数的使用。

5.掌握条件语句的形式和使用。

6.掌握条件语句的嵌套。

7.掌握switch语句的形式和使用。

8.掌握for,while,do-while三种循环语句的应用。

9.掌握循环语句的嵌套。

10.掌握break、continue、goto语句。

 

3.2典型例题分析与解答

1.1. 选择题

例题1:

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1