C 习题与答案

  • 格式:doc
  • 大小:481.50 KB
  • 文档页数:63

第一章 习题 一、 选择填空 1 2 3 4 5 6 7 8 9 10 C B D A D A D D A C

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 2 3 4 5 6 7 8 9 10 11 12 √ √ × × √ × × √ √ √ × ×

1. C++引进了引用的概念,对编程带来了很多方便。Y 2. C++允许使用友元,但是友元会破坏封装性。Y 3. C++中使用了新的注释符(//),C语言中注释符(/*…*/)不能在C++中使用。X 4. C++中为了减轻使用者的负担,与C语言相比较C++中减少了一些运算符。X 5. C++程序中,每条语句结束时都加一个分号(;)。Y 6. C++中标识符内的大小写字母是没有区别的。X 7. C++中不允许使用宏定义的方法定义符号常量,只能用关键字const来定义符号常量。X 8. 在编写C++程序时,一定要注意采用人们习惯使用的书写格式,否则将会降低其可读性。Y 9. C++是一种以编译方式实现的高级语言。Y 10. 在C++编译过程中,包含预处理过程、编译过程和连接过程,并且这三个过程的顺序是不能改变的。Y 11. 预处理过程是一般编译过程之后连接过程之前进行的。X 12. 源程序在编译过程中可能会出现一些错误信息,但在连接过程中将不会出现错误信息。X 三、分析下列程序的输出结果 1. BeiJjing ShangHai TianJing 2. Input a,b:8 5 a=8,b=5 a-b=3 3. d=5:c=m

1.#include void main() { cout<<"BeiJing"<<" "; cout<<"ShangHai"<<"\n "; cout<<"TianJing"<} 2. #include void main() { int a,b; cout<<"input a,b:"; cin>>a>>b; cout<<"a=">x; int p=x*x; cout<<"p=”<} 3、 #include void main ( ) { int i,j; i=5; j=0; int k=i+j; cout<<"i+j="<} i+j=5 五、通过对第四题中三个程序的所出现问题的修改,回答下列问题: 1. 从对第四题1题的修改中,总结出编程时应注意哪三个问题? 2. C++程序中所出现的变量是否都必须先说明才能引用? 3. 使用cout和运算符<4. 有些变量虽然说明了但是没有赋值,这时能否使用? 5. 一个程序编译通过了并且运行后得到了输出结果,这个结果是否一定是正确的?

第二章 习题

一、 选择填空 1 2 3 4 5 6 7 8 9 10 A D C A C 无 A C C A 11 12 13 14 15 16 17 18 19 20 D D D A A A D B A C 21 22 23 24 D D A D

1、 在16位机中,int型字宽为( )字节。 A.2; B。 4;C。 6; D 8 2、 类型修饰符unsigned修饰( )类型是错误的。 A. char; B. int; C.long int ; D、float 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、在int a[5]={1,3,5};中,数组元素a[1]的值是( )。 A. 1; B. 0; C. 6; D.2 9、在int b[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是( )。 A.0; B. 5; C.6; D.2 10、下列给字符数组进行初始化中,( )是正确的。 A.char s1[ ]="abcd”; B. char s2[3]="xyz"; C. char s3[][3]={„a‟,‟x‟,‟y‟}; D. char s4[2[3]={"xyz","mnp"}; 11、在int a=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、指针可以用来表示数组元素,下列表示中()是错误的。 已知:int a[3][7]; A. *(a+1)[5]; B. *(*a+3); C. *(*(a+1)); D. *(&a[0][0]+2) 15、下列表示引用的方法中,() 是正确的。 已知:int m=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、下列表达式中,()是非法的。 已知: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;