为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 《C++语言基础教程》吕凤翥习题答案

《C++语言基础教程》吕凤翥习题答案

2010-12-17 50页 doc 322KB 134阅读

用户头像

is_377947

暂无简介

举报
《C++语言基础教程》吕凤翥习题答案一、 大家注意了,这是清华大学出版社的吕凤翥第二版配套答案! 第一章 习题 1、​ 选择填空 1.​ 下列各种高级语言中,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2.​ 下列各种高级语言中,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ 3.​ 下述面向对象抽象的原理中,( )是不对的。 A. 数据抽象; B. 行为共享; C.进化; D. 兼容; 4.​ ( )不是面向对象系统所包含的要数。 A. ...
《C++语言基础教程》吕凤翥习题答案
一、 大家注意了,这是清华大学出版社的吕凤翥第二版配套答案! 第一章 习题 1、​ 选择填空 1.​ 下列各种高级语言中,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2.​ 下列各种高级语言中,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; 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 void main() { cout<<"BeiJing"<<" "; cout<<"ShangHai"<<"\n "; cout<<"TianJing"< void main() { int a,b; cout<<"input a,b:"; cin>>a>>b; cout<<"a="< void main() { char c=’m’; int d=5; cout<<"d="< void main() { cout<<”This is a string!”; } 输出结果:This is a string! 2、​ #include void main( ) { cin>>x; int p=x*x; cout<<"p=< void main( ) { int x; cin>>x; int p=x*x; cout<<”p=”< void main ( ) { int i,j; i=5; int k=i+j; cout<<"i+j="< void main ( ) {int i,j; i=5; j=3; int k=i+j; cout<<”i+j=”<>; D. & 17、下列各运算符中,()不能作用于浮点数。 A./; B.&&; C.!; D.~ 18、下列各运算符中,()优先级最高。 A. +(双目);B. *(单目); C. <=; D. *= 19、下列各运算符中,()优先级最低。 A.?:;B. |; C. ||; D.!= 20、下列各运算符中,()结合性从左到右。 A. 三目;B. 赋值; C.比较; D.单目 21、下列表达式中,()是非法的。 已知:int a=5; float b=5.5; A. a%3+b; B. b*b&&++a; C.(a>b)+(int(b)%2); D. -- -a+b 22、下列表达式中,()是合法的。 已知:double m=3.2; int n=3; A. m<<2; B. (m+n)|n C. !m*=n; D. m=5,n=3.1,m+n 23、下列关于类型转换的描述中,()是错误的。 A.​ 在不同类型操作数组成的表达式中,其表达式类型一定是最高类型double型; B.​ 逗号表达式的类型是最后一个表达式的类型; C.​ 赋值表达式的类型是左值的类型; D.​ 在由底向高的类型转换中是保值映射。 24、下列各表达式中,()有二义性。 已知:int a(5); b(6); A. a+b>>3; B. ++a+b++; C.b+(a=3); D. ( a=3)-a++ 2、​ 判断下列描述是否正确,对者划√,错者划×。 1、​ 任何字符常量与一个任意大小的整型数进行加减都是有意义的。× 2、​ 转义序列表示法只能表示字符不能表示数字。√ 3、​ 在命名标识符中,大小写字母是不加区别的。× 4、​ C++的程序中,对变量一定要先说明再使用,说明只要在使用之前就可以。√ 5、​ C++中数组元素的下标是从0开始,数组元素是连续存储在内存单元中的。√ 6、​ 数组赋初值时,初始值表中的数据项的数目可以大于或等于数组元素的个数。× 7、​ 枚举变量的取值受到该枚举变量所对应的枚举表中的枚举符的局限。√ 8、​ 指针是用来存放某种变量的地址值的变量。这种变量的地址值也可以存放在某个变量中,存放某个指针的地址值的变量称为指向指针的指针,即二级指针。√ 9、​ 引用是用来给某个变量以别名的变量。,对引用的操作,实质上就是对被引用的变量的操作。√ 10、​ 运算符的优先级和结合性可以确定表达式的计算顺序。√ 11、​ 在说明语句 中,的值和的值是相等的。√ 12、​ 已知:表达式具有两用性。× 13、​ 移位运算符在移位操作中,无论左移还是右移,所移出的空位一律补0;× 14、​ 某个变量的类型高是指该变量被存放在内存中的高地址处。× 15、​ 隐含的类型转换都是保值映射,显式的类型转换都是非保值映射。× 16、​ 类型定义是用来定义一些C++中所没有的新的类型。× 3、​ 计算下列各表达式的值 (下列各表达式是相互独立的,不考虑前面对后面的影响。) 1、​ 已知:unsigned int x=015,y=0x2b; Ax|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、​ 已知:int a(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、​ 已知:int d(5),*pd=&d,&rd=d; Ad+-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 4、​ 按下列要求编写程序 1.​ 从键盘上输入两个int型数,比较其大小,并输出显示其中小的。 2.​ 从键盘上输入一个int型数,一个浮点型数比较其大小,并输出其中大的。 3.​ 输入一摄氏温度,编程输出华氏温度。已知:华氏温度转换为摄氏温度的计算公式如下:C=(F-32)*5/9 其中,F表示华氏温度,C表示摄氏温度。 #include void main() { float c,f; cout<<”华氏温度:”; cin>>f; c=(f-32)*5/9; cout<<” 摄氏温度:”< const float r=1.60934; void main() { float m,I; cout<<” 公里数:”; cin>>m; I=r*m; cout<<”英里数:”< void main() { int n,m; cout<<”输入一个整数:”; cin>>n; m=n|15; cout<<”结果为:”< #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(int i(0),x=0;!x&&i<=5;i++) A.5; B.6; C .1; D.无限; 7.​ 下列while循环的次数是( )。 while(int i=0)i- -; A.0; B.1; C .5 ; D.无限; 8.​ 下列do-while循环的循环次数为( )。 已知:int i(5); do{cout< #define M 1.5 #define A(a) M*a void main() { int x(5),y(6); cout< #define MAX(a,b) (a)>(b)?(a):(b) void main() { int m(1),n(2),p(0),q; q=MAX(n,n+p)*10; cout< #include”f1.cpp” void main() { int a(5),b; b=f1(a); cout< void main() { int i(0); while(++i) { if(i= =10) break; if(i%3!=1) continue; cout< void main() { int i(1); do{ i++; cout<<++i< void main() { int i(1),j(2),k(3),a(10); if(!i) a- -; else if (j) if(k) a=5; else a=6; a++; cout< void main() { int i,j,a[8][8]; * * a=1; for(i=1;i<8;i++) { * *(a+i)=1; *(*(a+i)+i)=1; for(j=1;j void main() { int x(5); do{ switch(x%2) { case 1:x- -; break; case 0:x++; break; } x- -; cout<0); } 8.​ 3 1 -1 9. #include void main() { int a(5),b(6),i(0),j(0); switch(a) { case 5:switch(b) { case 5:i++;break; case 6:j++;break; default: i++;j++; } case 6: i++; j++; break; default: i++;j++; } cout< char input[]="SSSWILTECH1\1\11W\1WALLMP1"; void main() { int i; char c; for(i=2;(c=input[i])!='\0';i++) { switch(c) { case 'a':cout<<'i'; continue; case'1':break; case 1:while((c=input[++i])!='\1'&&c!='\0'); case 9:cout<0,有两个不等实根; (3) b2-4ac<0,有两个共轭复根; (4)a=0,不是二次方程。 10.编程输出如下图案。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第四章 习题 1、​ 选择填空 1.​ 当一个函数无返回值时,定义它时函数的类型应是( ) A. void; B. 任意; C . int; D. 无; 2.​ 在函数说明时,下列( )项是不必要的。 A.函数的类型; B.函数参数类型和名次; C .函数名字; D.返回值表达式; 3.​ 在函数的返回值类型与返回值表达式的类型的描述中,( )是错误的。 A.​ 函数的返回值的类型是定义函数时确定的; B.​ 函数的返回值的类型就是返回值表达式的类型; C.​ 函数的返回值表达式的类型与函数返回值类型不同时,表达示类型应转换成函数返回值类型; D.​ 函数的返回值类型决定了返回值表达式的类型。 4.​ 在一个被调用函数中,关于return语句使用的描述,( )是错误的。 A.​ 被调用函数中可以不用 return语句; B.​ 被调用函数中可以使用多个return语句; C.​ 被调用函数中,如果有返回值,就一定要有return语句; D.​ 被调用函数中,一个return语句可返回多个值给调用函数。 5.​ 下列( )是引用调用 A.​ 形参是指针,实参是地址值; B.​ 形参和实参都是变量; C.​ 形参是数组名,实参是数组名; D.​ 形参是引用,实参是变量。 6.​ 在传值调用中,要求( )。 A.​ 形参和实参类型任意,个数相等; B.​ 形参和实参类型都完全一致,个数相等; C.​ 形参和实参对应的类型一致,个数相等; D.​ 形参和实参对应的类型一致,个数任意。 7.​ 在C++中,关于下列设置参数默认的描述中,( )是正确的。 A.​ 不允许设置参数的默认值; B.​ 设置参数默认值只能在定义函数时设置; C.​ 设置参数默认值时,应该是先设置右边的再设置左边的; D.​ 设置参数默认值时,应该全部参数都设置; 8.​ 重载函数在调用时选择的依据中,( )是错误的。 A.参数个数; B.参数的类型; C .函数名字; D.函数的类型; 9.​  下列的标识符中,( )是文件级作用域的。 A.函数形参; B.语句标号; C .外部静态类标识符;D.自动类标识符。 10.​ 有一个int 型变量,在程序中使用频度很高,最好定义为( )。 A.register; B.auto; C .extern; D.static; 11.​ 下列标识符中,( )不是局部变量。 A.register类; B.外部static类; C .auto类; D.函数形参; 12.​ 下列存储类标识符中,( )的可见性与存在性不一值。 A.​ 外部类; B.自动类; C .内部静态类;D.寄存器类。 13.​ 下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()合适。 A.内联函数; B.重载函数; C .递归调用;D.嵌套调用。 14.​ 采用函数重载的目的在于( )。 A.实现共享;B.减少空间;C .提高速度;D.使用方便,提高可读性。 15.​ 在将两个字符串连接起来组成一个字符串时,选用( )函数。 B.​ A.strlen();B.strcpy();C .strcat();D.strcmp. 2、​ 判断下列描述的正确性,对者划√,错者划×。 1.​ 在C++中,定义函数时必须给出函数的类型√ 2.​ 在C++中,说明函数时要用函数原型,即定义函数时的函数头部分。√ 3.​ 在C++中,所有函数在调用前都要说明。× 4.​ 如果一个函数没有返回值,定义时需用void说明。√ 5.​ 在C++中,传址调用将被引用调用所代替。× 6.​ 使用内联函数是以牺牲增大空间开销为代价的。√ 7.​ 返回值类型、参数个数和类型都相同的函数也可以重载。× 8.​ 在设置了参数默认值后,调用函数的对应实参就必须省略。× 9.​ 计算函数参数顺序引起的二义性完全是由不同的编译系统决定的。√ 10.​ For循环中,循环变量的作用域是该循环的循环体内。√ 11.​ 语句标号的作用域是定义该语句标号的文件内。× 12.​ 函数形参的作用域是该函数的函数体。√ 13.​ 定义外部变量时,不用存储类说明符extern, 而说明外部变量时用它。√ 14.​ 内部静态类变量与自动类变量作用域相同,但是生存期不同。√ 15.​ 静态生存期的标识符的寿命是短的,而动态生存期的标识符的寿命是长的。× 16.​ 重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此区域内是不可见的。但是,它是存在的。√ 17.​ 静态类标识符在它的作用域之外是不存在的。× 18.​ 所有的函数在定义它的程序中都是可见的。× 19.​ 编译系统所提供的系统函数都被定义在他所对应的头文件中。√ 20.​ 调用系统函数时,要先将该系统函数的原型说明所在的头文件包含进去。√ 3、​ 分析下列程序的输出结果。 1.#include #define N 5 void fun(); void main() { for (int i(1);i int add(int a,int b); void main() { extern int x,y; cout< void f(int j); void main() { for(int i(1);i<=4;i++) f(i); } void f(int j) { static int a(10); int b(1); b++; cout< void f(int n) { int x(5); static int y(10); if(n>0) { ++x; ++y; cout< int fac(int a); void main() { int s(0); for(int i(1);i<=5;i++) s+=fac(i); cout<<”5!+4!+3!+2!+1!=”< void fun(int ,int , int *); void main() { int x,y,z; fun(5,6,&x); fun(7,x,&y); fun(x,y,&z); cout< int add(int x, int y=8); void main() { int a(5); cout<<”sum1=”< #define N 6 int f1(int a); void main() { int a(N); cout< void swap(int &,int &); void main() { int a(5),b(8); cout<<”a=”< int &f1(int n,int s[]) { int &m=s[n]; return m; } void main() { int s[]={5,4,3,2,1,0}; f1(3,s)=10; cout< void print(int),print(char),print(char *); void main() { int u(1998); print(‘u’); print(u); print(“abcd”); } void print(char x) { cout< void ff(int),ff(double); void main() { float a(88.18); ff(a); char b(‘a’); ff(b); } void ff(int x) { cout<<”ff(int):”<和作用域运算符; C.​ 静态数据成员不是所有对象所共用的。 10.​ 友元的作用( )。 A.​ 提高程序的运用效率; B.​ 加强类的封装性; C.​ 实现数据的隐藏性; D.​ 增加成员函数的种类。 2、​ 判断下列描述的正确性,对者划√,错者划×。 1.​ 使用关键字class定义的类中缺省的访问权限是私有(private)的。√ 2.​ 作用域运算符(::)只能用来限定成员函数所属的类。√ 3.​ 析构函数是一种函数体为空的成员函数。× 4.​ 构造函数和析构函数都不能重载。× 5.​ 说明或定义对象时,类名前面不需要加class关键字。√ 6.​ 对象成员的表示与结构变量成员表示相同,使用运算符.或->。√ 7.​ 所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类外的函数对它们的访问都是非法的。× 8.​ 某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。√ 9.​ 可以在类的构造函数中对静态数据成员进行初始化。× 10.​ 如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。√ 3、​ 分析下列程序的输出结果。 1. #include class A { public: A(); A(int i,int j); void print( ); private: int a,b; }; A::A( ) { a=b=0; cout<<”Default constructor called.\n”; } A::A(int i,int j) { a=i; b=j; cout<<”Constructor called.\n”; } void A::print() { cout<<”a=”< class B { public: B(); B(int i,int j); void printb( ); private: int a,b; }; class A { public: A(); A(int i,int j); void printa( ); private: B c; }; A::A(int i,int j):c(i,j) {} void A::printa() { c.printb(); } B::B(int i,int j) { a=i; b=j; } void B::printb() { cout<<”a=”< class Count { public: Count () {count++;} static int HM(){return count;} ~Count(){count--;} private: static int count; }; int Count::count=100; void main() { Count c1,c2,c3,c4; cout< class A { public: A(double t,double r){Total=t;Rate=r;} friend double Count(A&a) { a.Total+=a.Rate*a.Total; return a.Total; } private: double Total,Rate; }; void main() { A a1(1000.0,0.035),a2(768.0,0.028); cout< class Set { public: Set(){PC=0;} Set(Set &s); void Empty() {PC=0;} int IsEmpty() {return PC= =0;} int IsMemberOf(int n); int Add(int n); void Print(); friend void reverse(Set *m); private: int elems[100]; int PC; }; int Set::IsMemberOf(int n) { for (int i=0;i=100) return 0; else { elems[PC++]=n; return 1; } } Set::Set(Set &p) { PC=p.PC; for(int i=0;i0) cout<PC/2; for(int i=0;ielems[i]; m->elems[i]=m->elems[m->PC-i-1]; m->elems[m->PC-i-1]=temp; } } void main() { Set A; cout<* 的功能是( )。 A.​ 用来表示指向对象指针对指向类成员指针的操作; B.​ 用来表示对象对指向类成员指针的操作; C.​ 用来表示指向对象指针对类成员的操作; D.​ 用来表示对象类成员的操作。
/
本文档为【《C++语言基础教程》吕凤翥习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索