第1章C++语言概述练习题11.1判断题×1.C++语言和C语言都是面向对象的程序设计语言。√2.面向对象方法具有封装性、继承性和多态性。√3.C语言是C++语言的一个子集。C++语言继承了C语言。×4.C++语言程序与C语言程序一样都是函数串。×5.C++语言支持封装性和继承性,不支持多态性。√6.C++语言比C语言对数据类型要求更加严格了。√7.C++语言对C语言进行了一次改进,使得编程更加方便了。×8.C++源程序在编译时可能出现错误信息,而在连接时不会出现错误信息。√9.编译C++源程序时,出现了警告错(Warning)也可以生成可执行文件。√10.C++语言程序的实现也要经过编辑、编译连接和运行3个步骤。1.2单选题1.下列关于面向对象概念的描述中,错误的是(C)。A.面向对象方法比面向过程方法更加先进B.面向对象方法中使用了一些面向过程方法中没有的概念C.面向对象方法替代了结构化程序设计方法D.面向对象程序设计方法要使用面向对象的程序设计语言2.下列各种高级语言中,不是面向对象的程序设计语言是(D)。A.C++B.JavaC.VBD.C3.下列关于类的描述中,错误的是(A)。A.类就是C语言中的结构类型B.类是创建对象的模板C.类是抽象数据类型的实现D.类是具有共同行为的若干对象的统一描述体4.下列关于对象的描述中,错误的是(C)。A.对象是类的一个实例B.对象是属性和行为的封装体C.对象就是C语言中的结构变量D.对象是现实世界中客观存在的某种实体5.下列关于C++程序中使用提取符和插入符的输入/输出语句的描述中,错误的是(C)。A.提取符是对右移运算符()重载得到的B.插入符是对左移运算符()重载得到的C.提取符和插入符都是双目运算符,它们要求有两个操作数D.提取符和插入符在输入/输出语句中不可以连用1.3填空题1.C++语言具有面向对象方法中要求的三大特性:封装性、继承性和多态性。2.C++程序中,有且仅有一个主函数。3.C++程序是由类和函数组成的。4.C++源程序的扩展名是cpp。5.使用插入符进行标准输出文件输出时,使用的输出流对象名是cout。1.4上机调试下列程序,并分析输出结果1.#includeiostream.hvoidmain(){inti,j;coutEnterij:;cinij;couti=i','j=jendl;couti+j=i+j','i*j=i*jendl;}假定,输入数据如下:Enterxy:59答:i=5,j=9i+j=14,i*j=452.#includeiostream.hintmax(int,int);voidmain(){inta,b,c;a=5;b=8;c=max(a,b);coutmax(a','b)=cendl;}intmax(intx,inty){returnxy?x:y;}答:max(5,8)=83.文件e1.4.3.cpp内容如下:#includeiostream.hvoidf1(),f2();voidmain(){cout在北京.\n;f1();f2();cout再见.\n;}文件1.4.3-1.cpp内容如下:#includeiostream.hvoidf1(){cout在上海.\n;}文件1.4.3-2.cpp内容如下:#includeiostream.hvoidf2(){cout在广州.\n;}答:在北京。在上海。在广卅。再见。1.5编译下列程序,修改所出现的错误,获得正确结果1.main(){coutInmain().\n}答:修改后如下:#includeiostream.hvoidmain(){coutInmain().\n;}2.#includeiostream.hvoidMAIN(){cina;intb=a+a;coutb=b\n;}答:修改后如下:#includeiostream.hvoidmain(){inta;cina;intb=a+a;coutb=”b”\n;}3.#includeiostream.hvoidmain(){inti,j;i=5;intk=i+j;COUTi+j=kendl;}答:#includeiostream.hvoidmain(){inti,j;j=10;i=5;intk=i+j;couti+j=kendl;}1.6通过对1.5题中3个程序的修改,回答下列问题2从1.5题中第1题程序的修改中,总结出编程应该注意哪些问题。答:C++程序要包含iostraem.h,main()函数前应加类型说明符void。3C++程序中所出现的变量是否必须先说明后使用?在函数体内说明变量时是否都要放在函数体的开头?答:C++程序中所出现的变量必须先说明后使用。在函数体内说明变量时不一定要放在函数体的开头。4使用cout和插入符()输出字符串常量时应注意什么?答:可输出一个字符串常量,也可输出多个字符串常量。每输出一个字符串常量要使用一次插入符()。8程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?答:不能使用。因为它的值不确定。5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?答:不一定正确。可能还有算法错。第2章变量和表达式及数组练习题22.1判断题√1.C++语言的合法字符集与C语言的完全相同。×2.标识符规定大小写字母没有区别。×3.C++程序中,不得使用没有定义或说明的变量。√4.变量的存储类指出了变量的作用域和寿命。√5.变量的数据类型指出了变量在内存中存放的字节数。×6.定义变量时,变量的存储类说明符不得省略。×7.自动类变量与内部静态类变量的作用域和寿命都是相同的。×8.自动类变量可以定义在函数体外,这时应加说明符auto。×9.外部类变量与外部静态类变量的作用域是相同的。×10.变量被定义后是否有默认值与存储类无关,与数据类型有关。√11.C++程序中,通常使用const来定义符号常量,定义时必须指出类型。×12.变量被定义或说明后,它一定具有有意义的值。×13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。×14.所有变量的可见性和存在性都是一致的。√15.变量在它的作用域内一定是可见的,又是存在的。√16.C++语言中除了包含C语言的所有运算符外,还规定自身的若干个运算符。√17.增1和减1运算符以及赋值运算符都具有副作用。×18.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。×19.关系运算符可以用来比较两个字符的大小,也可以比较两个字符串的大小。×20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补0。×21.变量的类型高低是指它被存放在内存的地址值大小。×22.使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。√23.在C++语言中,非保值转换应用强制类型转换。√24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。√25.在C++程序中,变量值是可以改变的,变量的地址值是不能改变的。√26.数组中所有元素的类型都是相同的。×27.定义数组时必须对数组进行初始化。√28.数组某维的大小可以用常量表达式,不可用变量名。×29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。√30.用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个数。×31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意义的。√32.数组被初始化时是判越界的。×33.字符数组就是字符串。√34.使用printf()函数输出显示字符串时使用格式符%s,输出显示字符时使用%c或%d。×35.给数组元素赋值时只可用常量表达式。2.2单选题1.下列变量名中,非法的是(C)。A.A25B.My_carC.My-strD.abc2.下列常量中,十六进制int型常量是(A)。A.0x5fB.x2aC.046D.7a3.下列常量中,不是字符常量的是(B)。A.'\n'B.yC.'x'D.'\7'4.在函数体内定义了下述变量a,a的存储类为(D)。inta;A.寄存器类B.外部类C.静态类D.自动类5.下列关于变量存储类的描述中,错误的是(C)。A.任何变量定义后都具有一个确定的存储类B.变量的存储类确定了变量的作用域和寿命C.定义变量时没有存储类说明符者一律为自动类D.内部静态类变量和外部静态类变量的存储类说明符都是static6.下列关于变量数据类型的描述中,错误的是(A)。A.定义变量时int型数据类型可以省略B.变量的数据类型可以决定该变量占内存的字节数C.变量的数据类型是可以被强制的D.变量的数据类型是有高低之分的7.长双精度浮点型常量的后缀是(C)。A.UB.FC.LD.无8.下列运算符中,不能用于浮点数操作的是(D)。A.++B.+C.*=D.&(双目)9.下列运算符中,优先级最高的是(A)。A.*(双目)B.||C.D.%=10.下列运算符中,优先级最低的是(B)。A.==B.?:C.|D.&&11.已知:inta(3);下列表达式中,错误的是(C)。A.a%2==0B.a--+2C.(a2)++D.a=212.已知:intb(5),下列表达式中,正确的是(D)。A.b=aB.++(b1)C.b%2.5D.b=3,b+1,b+213.下列关于类型转换的描述中,错误的是(C)。A.类型转换运算符是(类型)B.类型转换运算符是单目运算符C.类型转换运算符通常用于保值转换中D.类型转换运算符作用于表达式左边14.下列表达式中,其值为0的是(A)。A.5/10B.!0C.24?0:1D.2&&2||015.下列表达式中,其值不为逻辑值的是(A)。A.算术表达式B.关系表达式C.逗号表达式D.逻辑表达式16.下列关于数组概念的描述中,错误的是(B)。A.数组中所有元素类型是相同的B.数组定义后,它的元素个数是可以改变的C.数组在定义时可以被初始化,也可以不被初始化D.数组元素的个数与定义时的每维大小有关17.下列关于数组维数的描述中,错误的是(C)。A.定义数组时必须将每维的大小都明确指出B.二维数组是指该数组的维数为2C.数组的维数可以使用常量表达式D.数组元素个数等于该数组的各维大小的乘积18.下列关于数组下标的描述中,错误的是(B)。A.C++语言中数组元素的下标是从0开始的B.数组元素下标是一个整常型表达式C.数组元素可以用下标来表示D.数组元素的某维下标值应小于该维的大小值19.下列关于初始值表的描述中,错误的是(C)。A.数组可以使用初始值表进行初始化B.初始值表是用一对花括号括起的若干个数据项组成的C.初始值表中数据项的个数必须与该数组的元素个数相等D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值20.下列关于字符数组的描述中,错误的是(D)。A.字符数组中的每一个元素都是字符B.字符数组可以使用初始值表进行初始化C.字符数组可以存放字符串D.字符数组就是字符串21.下列关于字符串的描述中,错误的是(C)。A.一维字符数组可以存放一个字符串B.二维字符数组可以存放多个字符串C.可以使用一个字符串给二维字符数组赋值D.可以用一个字符串给二维字符数组初始化22.已知:inta[5]={1,2,3,4};下列数组元素值为2的数组元素是(B)。A.a[0]B.a[1]C.a[2]D.a[3]23.已知:intab[][3]={{1,5,6},{3},{0,2}};数组元素ab[1][1]的值为(A)。A.0B.1C.2D.324.已知:chars[]=abcd;输出显示字符'c'的表达式是(C)。A.sB.s+2C.s[2]D.s[3]25.已