《C++语言基础教程》吕凤翥习题答案.docx
- 文档编号:28738666
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:116
- 大小:59.65KB
《C++语言基础教程》吕凤翥习题答案.docx
《《C++语言基础教程》吕凤翥习题答案.docx》由会员分享,可在线阅读,更多相关《《C++语言基础教程》吕凤翥习题答案.docx(116页珍藏版)》请在冰豆网上搜索。
《C++语言基础教程》吕凤翥习题答案
第一章 习题
一、选择填空
1.下列各种高级语言中,()是面向对象的程序设计语言。
A.BASIC;B.PASCAL;C.C++D。
Ada
2.下列各种高级语言中,()是最早提出了对象的概念。
A.Algol60;B。
Simula67;C.Smalltalk;D.C++
3.下述面向对象抽象的原理中,()是不对的。
A.数据抽象;B.行为共享;C.进化;D。
兼容;
4.()不是面向对象系统所包含的要数。
A。
重载;B。
对象;C.类;D.继承;
5.关于C++与C语言的关系的描述中,()是错误的。
A.C语言是C++的一个子集;B.C语言与C++是兼容的;
C.C++对C语言进行了一些改进;D.C++和C语言都是面向对象的;
6.下面关于对象概念的描述中,()是错误的。
A。
对象就是C语言中的结构变量;B。
对象代表着正在创建的系统中的一个实体;
C。
对象是一个状态和操作(或方法)的封装体;D。
对象之间的信息传递是通过消息进行的;
7.下面关于类概念的描述中,()是错误的.
A.类是抽象数据类型的实现;B。
类是具有共同行为的若干对象的统一描述体;
C。
类是创建对象的样板;D。
类就是C语言中的结构类型;
8.C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,即从面向过程变成为面向对象。
A.增加了一些新的运算符;B.允许函数重载,并允许设置缺省参数;
C。
规定函数说明必须用原型;D。
引进了类和对象的概念;
9.按照标识符的要求,()符号不能组成标识符。
A。
连接符;B.下划线;C。
大小写字母;D。
数字字符;
10.下列符号中,()不可作为分隔符。
A。
,;B.:
;C。
?
;D。
;
二、判断下列描述的正确性,对者划√,错者划×。
1.C++引进了引用的概念,对编程带来了很多方便。
√
2.C++允许使用友元,但是友元会破坏封装性。
√
3.C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用.×
4.C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。
×
5.C++程序中,每条语句结束时都加一个分号(;)。
√
6.C++中标识符内的大小写字母是没有区别的。
×
7.C++中不允许使用宏定义的方法定义符号常量,只能用关键字const来定义符号常量。
×
8.在编写C++程序时,一定要注意采用人们习惯使用的书写格式,否则将会降低其可读性。
√
9.C++是一种以编译方式实现的高级语言。
√
10.在C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。
√
11.预处理过程是一般编译过程之后连接过程之前进行的。
×
12.源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息。
×
三、分析下列程序的输出结果
1.#include voidmain() { cout<〈"BeiJing”<〈""; cout〈<"ShangHai"〈〈”\n"; cout〈〈”TianJing”〈〈endl; } 1.BeiJjingShangHai TianJing 2. #include〈iostream。 h〉 voidmain() { inta,b; cout〈〈”inputa,b: "; cin>〉a>>b; cout〈<"a="< cout<〈"a-b=”< } 假定,输入如下两个数据: 85 2.Inputa,b: 85 A=8,b=5 A—b=3 3.#include〈iostream。 h> voidmain() { charc=’m’; intd=5; cout〈〈”d="〈 ”; cout<〈”c=”< } D=5,c=m 四、编译下列程序,改正所出现的各种错误信息,并分析输出结果: 1、main() { cout<〈"Thisisastring! ”; } 1.#include〈iostream.h> voidmain() { cout<<”Thisisastring! ”; } 输出结果: Thisisastring! 2、#include〈iostream。 h> voidmain() { cin〉〉x; intp=x*x; cout〈<"p=<〈p〈<\n"; } #include voidmain() { intx; cin>〉x; intp=x*x; cout<<"p=”<〈p〈<”\n”; } 输出结果: 3 p=9 3、#include〈iostream.h> voidmain() { inti,j; i=5; intk=i+j; cout<<"i+j="< } #include〈iostream.h> voidmain() {inti,j; i=5; j=3; intk=i+j; cout<<”i+j=”< } 输出结果: I+j=8 五、通过对第四题中三个程序的所出现问题的修改,回答下列问题: 1.从对第四题1题的修改中,总结出编程时应注意哪三个问题? 2.C++程序中所出现的变量是否都必须先说明才能引用? 3.使用cout和运算符〈<输出字符串时应注意什么问题? 4.有些变量虽然说明了但是没有赋值,这时能否使用? 5.一个程序编译通过了并且运行后得到了输出结果,这个结果是否一定是正确的? 第二章 习题 一、选择填空 1、在16位机中,int型字宽为()字节。 A.2;B。 4;C。 6;D8 2、类型修饰符unsigned修饰()类型是错误的。 A.char;B。 int;C。 longint;Dfloat 3、下列十六进制的整型数常数表示中,()是错误的。 A.0xaf;B.0X1b;C.2fx;D。 0xAE 4、下列double型常量表示中,()是错误的。 A.E15;B。 .35;C.3E5;D.3E—5 5、下列字符常量表示中,()是错误的。 A。 ‘\105';B.‘*’;C.‘\4f’;D.‘\a’ 6、下列字符串常量表示中,()是错误的。 A。 ”\"yes\”or\”No\"";B。 ”\’OK! \’”;C."abcd\n";D。 ”ABC\0” 7、下列变量名中,()是合法的。 A。 CHINA;B.byte—size;C。 double;D。 A+a 8、在inta[5]={1,3,5};中,数组元素a[1]的值是()。 A。 1;B。 0;C。 3;D。 2 9、在intb[][3]={{1},{3,2},{4,5,6},{0}};中a[2][2]的值是()。 A.0;B。 5;C.6;D.2 10、下列给字符数组进行初始化中,()是正确的。 A.chars1[]=”abcd;B.chars2[3]=”xyz"; C。 chars3[][3]={‘a’,’x’,'y'};D.chars4[2[3]={"xyz","mnp"}; 11、在inta=3,*p=&a;中,*p的值是()。 A.变量a的地址值;B.无意义;C.变量p的地址值;D.3 12、对于int*pa[5];的描述,()是正确的。 A.pa是一个指向数组的指针,所指向的数组是5个int型元素; B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量; C.pa[5]表示某个数组的第5个元素的值; D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针; 13、下列关于指针的运算中,()是非法的。 A.两个指针在一定条件下,可以进行相等或不等的运算; B.可以用一个空指针赋值给某个指针; C.一个指针可以加上两个整数之差; D.两个指针在一定条件下,可以相加. 14、指针可以用来表示数组元素,下列表示中()是错误的. 已知: inta[3][7]; A。 *(a+1)[5];B.*(*a+3);C。 *(*(a+1));D.*(&a[0][0]+2) 15、下列表示引用的方法中,()是正确的。 已知: intm=10; A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m 16、下列各运算符中,()可以作用于浮点数. A.++;B。 %;C。 〉〉;D。 & 17、下列各运算符中,()不能作用于浮点数。 A./;B。 &&;C.! ;D.~ 18、下列各运算符中,()优先级最高。 A.+(双目);B.*(单目);C。 〈=;D.*= 19、下列各运算符中,()优先级最低。 A.? : ;B。 |;C.||;D。 ! = 20、下列各运算符中,()结合性从左到右。 A。 三目;B。 赋值;C.比较;D。 单目 21、下列表达式中,()是非法的. 已知: inta=5;floatb=5。 5; A。 a%3+b;B。 b*b&&++a;C。 (a〉b)+(int(b)%2);D.—--a+b 22、下列表达式中,()是合法的。 已知: doublem=3.2;intn=3; A。 m〈<2;B。 (m+n)|nC。 ! m*=n;D。 m=5,n=3.1,m+n 23、下列关于类型转换的描述中,()是错误的。 A.在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型; B.逗号表达式的类型是最后一个表达式的类型; C.赋值表达式的类型是左值的类型; D.在由底向高的类型转换中是保值映射。 24、下列各表达式中,()有二义性。 已知: inta(5);b(6); A.a+b>>3;B。 ++a+b++;C.b+(a=3);D。 (a=3)—a++ 二、判断下列描述是否正确,对者划√,错者划×. 1、任何字符常量与一个任意大小的整型数进行加减都是有意义的。 × 2、转义序列表示法只能表示字符不能表示数字。 √ 3、在命名标识符中,大小写字母是不加区别的。 × 4、C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。 √ 5、C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。 √ 6、数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。 × 7、枚举变量的取值受到该枚举变量所对应的枚举表中的枚举符的局限。 √ 8、指针是用来存放某种变量的地址值的变量。 这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针。 √ 9、引用是用来给某个变量以别名的变量.,对引用的操作,实质上就是对被引用的变量的操作。 √ 10、运算符的优先级和结合性可以确定表达式的计算顺序。 √ 11、在说明语句中,的值和的值是相等的。 √ 12、已知: 表达式具有两用性。 × 13、移位运算符在移位操作中,无论左移还是右移,所移出的空位一律补0;× 14、某个变量的类型高是指该变量被存放在内存中的高地址处。 × 15、隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。 × 16、类型定义是用来定义一些C++中所没有的新的类型.× 三、计算下列各表达式的值 (下列各表达式是相互独立的,不考虑前面对后面的影响。 ) 1、已知: unsignedintx=015,y=0x2b; A.x|y;B。 x^y;C。 x&y;D.~x+~y;E.x〈〈=3;F。 y>>=4. A B C D E F 47 38 9 4294967238 104 2 2、已知: inti(10),j(5); A.++i-j--;B.i=i*=j;C.i=3/2*(j=3—2);D.~i^j;E。 i&j|1;F.i+i&0xff. A B C D E F 6 50 1 -16 1 20 3、已知: inta(5),b(3);计算下列表达式得值以及a和b的值. A。 ! a&&b++;B.a||b+4&&a*b;C.a=1,b=2,a〉b? ++a: ++b;D。 ++b,a=10,a+5; E.a+=b%=a+b;F。 a! =b〉2<=a+1. A B C D E F 0,5,3 1,5,3 3,1,3 15,10,4 8,8,3 1,5,3 4、已知: intd(5),*pd=&d,&rd=d; A.d+-rd;B.*pd*rd;C.++*pd—rd;D。 ++rd—d. A B C D 0 25 0 0 5、已知: '1'的ASCII码的值为49. A。 3+2〈〈1+1;B.2*9|3<<1;C。 5%-3*2/6-3;D。 8==3<=2&5; E。 ! (‘3’〉’5’)||2<6;F。 6>=3+2-(‘0'-7)。 A B C D E F 20 22 -3 0 1 1 四、按下列要求编写程序 1.从键盘上输入两个int型数,比较其大小,并输出显示其中小的. 2.从键盘上输入一个int型数,一个浮点型数比较其大小,并输出其中大的. 3.输入一摄氏温度,编程输出华氏温度。 已知: 华氏温度转换为摄氏温度的计算公式如下: C=(F-32)*5/9 其中,F表示华氏温度,C表示摄氏温度. #include〈iostream.h> voidmain() { floatc,f; cout〈<”华氏温度: ”;cin〉>f; c=(f—32)*5/9; cout<〈"摄氏温度: ”〈〈c〈〈endl; } 4.编程实现输入公里数,输出显示其英里数。 已知: 1英里=1.60934公里(用符号常量). #include h> constfloatr=1.60934; voidmain() { floatm,I; cout〈〈”公里数: ”; cin〉>m; I=r*m; cout<〈”英里数: ”<〈I〈 } 5.输入一个int型数,将它的低4位(右4位)都置为1。 #include h〉 voidmain() { intn,m; cout<〈”输入一个整数: "; cin>>n; m=n|15; cout〈<”结果为: ”〈 } 第三章 习题 一、选择填空 1.预处理命令在程序中都是以()开头的. A。 *;B。 #;C.: ;D。 /; 2.文件包含命令中被包含的文件的扩转名()。 A.必须为.h;B.不能用.h;C.必须是.c;D.不一定是.h; 3.下列条件编译命令中 #if() 〈语句序列1〉 #else 〈语句序列2〉 #endif A.整常量表达式;B.任何标识符;C.任意表达式;D。 被定义的宏名; 4.带参数的宏定义中,程序中引用宏定义的实参()。 A.只能是常量;B。 只能是整型量;C.只能是整形表达式;D.可以是任意表达式; 5.下列()是语句 A。 ;;B。 a=17;C。 x+y;D.cout<〈”\n”; 6.下列for循环的次数为(). for(inti(0),x=0;! x&&i<=5;i++) A。 5;B.6;C.1;D.无限; 7.下列while循环的次数是()。 while(inti=0)i-—; A.0;B.1;C.5;D。 无限; 8.下列do-while循环的循环次数为()。 已知: inti(5); do{cout〈 i—-; }while(i! =0); A。 0;B.1;C.5;D。 无限; 9.下列for循环的循环体执行次数为()。 for(inti(0),j(10);i=j=10;i++,j-—) A.0;B.1;C。 10;D.无限; 10.已知: inta,b;下列switch语句中,()是正确的。 A.switch(a); {casea: a++;break; caseb: b++;break; } B.switch(a+b) {case1: a+b;break; case2: a—b }| C.switch(a*a) {case1,2: ++a; case3,4: ++b; } D.switch(a/10+b) {case5: a/5;break default: a+b; } 11.下述关于循环体的描述中,()是错误的。 A.循环体中可以出现break语句和continue语句; B.循环体中还可以出现循环语句; C.循环体中不能出现goto语句; D.循环体中可以出现开关语句。 12.下述关于goto语句的描述中,()是正确的。 A.goto语句可在一个文件中随意转向; B.goto语句后面要跟上一个他所转向的语句; C.goto语句可以同时转向多条语句; D.goto语句可以从一个循环体内转到循环体外. 13.下述关于break语句的描述中,()是正确的。 A.break语句可用于循环体内,它将退出该重循环; B.break语句可用于开关语句中,它将退出开关语句。 C.break语句可用于if体内,它将退出if语句; D.break语句在一个循环体内可以出现多次。 14.下述关于开关语句的描述中,()是正确的。 A.开关语句中default子句可以没有,也可以有一个; B.开关语句中每个语句序列中必须有break语句; C.开关语句中default子句只能放在最后; D.开关语句中case子句后面的表达式可以是整形表达式. 15.下列关于条件语句的描述中,( )是错误的。 A.if语句中只有一个else子句; B.if语句中可以有多个elseif子句; C.if语句中if体内不能是开关语句; D.if语句中的if体中可以是循环语句。 二、判断下列描述是否正确,对者划√,错者划×。 1.预处理命令是在进行编译时首先执行的,然后再进行正常编译。 √ 2.宏定义命令是以分号结束的。 × 3.带参数的宏定义只能有1至2个参数。 × 4.文件包含命令所包含的文件是不受限制的。 × 5.条件编译命令只在编译时才有作用。 √ 6.预处理命令的主要作用是提高效率的。 × 7.复合语句就是分程序。 × 8.条件语句不能作为多路分支语句.× 9.开关语句不可以嵌套,在开关语句的语句序列中不能再有开关语句× 10.开关语句中的default关键字,只能放在该语句的末尾,不能放在开头或中间。 × 11.Switch语句中必须有break语句否则无法退出switch语句。 × 12.While循环语句的循环体至少执行一次.× 13.Do—while循环可以写成while循环的格式。 √ 14.For循环是只有可以确定的循环次数时才可使用,否则不能用for循环。 × 15.只有for循环的循环体可以是空语句,其他种循环的循环体不能用空语句。 × 16.当循环体为空语句时,将说明该循环不作任何工作,只起延时作用。 × 17.循环是可以嵌套的,一个循环体内可以包含另一种循环语句.√ 18.在多重循环中,内重循环的循环变量应用的次数比外重的多。 √ 19.Break语句可以出现在各种循环体中.√ 20.continue语句只能出现在循环体中。 √ 三、分析下列程序的输出结果。 1。 #include h〉 #defineM1.5 #defineA(a)M*a voidmain() { intx(5),y(6);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+语言基础教程 C+ 语言 基础教程 吕凤翥 习题 答案