C++练习题.docx
- 文档编号:9736090
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:227
- 大小:140.57KB
C++练习题.docx
《C++练习题.docx》由会员分享,可在线阅读,更多相关《C++练习题.docx(227页珍藏版)》请在冰豆网上搜索。
C++练习题
1绪论
例题2:
输入一名学生的成绩,判断该成绩的等级。
如>=60的,显示“合格”,<60的显示“不合格”。
程序:
#include
voidmain()
{intscore;//声明成绩变量,用来保存分数
cout<<”输入成绩:
”;//提示用户的信息
cin>>score;//从键盘上输入分数传递给score
if(score>=60)//判断该条件是否真或假
cout<<”合格”<
else
cout<<”不合格”<
}
分析:
(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:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 练习题
![提示](https://static.bdocx.com/images/bang_tan.gif)