您好,欢迎访问三七文档
《面向对象程序设计(C++版)》习题答案董正言本文档中包含书中所有习题的答案,其中的程序都在VC++6.0系统中通过编译,并可以正确运行。第一章1.1面向对象程序设计方法有哪些基本特征?答:面向对象程序设计方法的基本特征有:抽象、封装、继承、多态。1.2从着手开始编写一个程序,到形成一个可执行文件,通常需要经过哪几个步骤?答:一个由高级语言编写的程序从开始编码到可以运行需要经过编辑、编译和链接几步。1.3C++程序的入口点是什么?答:C++程序的入口点是main函数。第二章2.1在C++程序中,以下_C_是合法的标识符。A、Cat.100B、321dayC、_100numD、int2.2在基于32位系统的VC++6.0编译器中,以下数据类型各占多少个字节?A、charB、intC、floatD、longE、double答:在基于32位系统的VC++6.0编译器中,char型数据为1个字节,int型数据为4个字节,float型数据为4个字节,long型数据为4个字节,double型数据为8个字节。2.3C++系统采用什么编码存储字符数据,该编码的长度是多少?答:C++系统采用ASCII码存储字符数据,该编码的长度是1个字节。2.4写出定义以下变量的程序语句:1、ASCII码值为65的字符型变量2、值为10000的无符号整型变量3、一个双精度浮点型变量解:1:charch=65;2:unsignedinti=10000;3:doublef;2.5、在程序中经常出现的标识符cout和cin是什么?它们有什么功能?答:cout是C++系统预定义的标准输出流对象,代表标准输出设备---显示器,在控制台应用程序中可以利用它向显示器输出字符串。cin是C++系统预定义的标准输入流对象,代表标准输入设备---键盘,在控制台应用程序中可以利用它从键盘输入数据。2.6程序中可能出现各种形式的数值常量,请写出以下语句的输出结果:1、cout0144;2、cout0x64;3、cout0xB3L;4、cout1234E-2;5、cout(char)65;解:几条语句的输出结果如下:1、1002、1003、1794、12.345、A2.7C++中如何定义符号常量,和C语言定义符号常量的方法有什么不同?答:C++使用关键字const定义符号常量,而C语言使用预编译指令#define定义符号常量。由关键字const定义的符号常量具有数据类型,在程序运行期间占据存储空间;而由预编译指令#define定义的符号常量没有数据类型,在程序运行期间也不占据存储空间。2.8假设var1和var2都是整型写出以下C++表达式的值。1、11/32、11%33、var1=(var2=10)+54、var1=(var2=10)++解:上面表达式的值分别是:1、32、23、154、102.9写出下面语句段的输出结果。inti=5,j=10;i*=--j;couti=iendl;解:上面程序段的输出为:i=452.10假设i,j,k是整型变量,而且i=5,j=10,k=20,写出下列表达式的值。1、ij&&jk2、ij||jk3、!ik4、!(ij)&&(jk)解:上面表达式的值分别是:1、0(或false)2、1(或true)3、0(或false)4、0(或false)2.11假设i和j是整型变量,i的值为10,j的值为3。请写出下列语句的输出结果。1、cout(i&j);2、cout(i|j);3、cout(i^j);4、cout(ij);5、cout(ij);6、cout(~i|i);解:上面语句的输出分别为:1、22、113、94、805、16、-12.12请写出下列语句的输出结果。coutHello!\rWelcometoC++!\n;解:上面语句的输出为:WelcometoC++!2.13假设i和j是整型变量,执行下列语句后,i的值是多少?i=(j=10,j*3);解:执行上面的语句后,i的值为30。2.14假设i和j是整型变量,j的值为10,则执行下列语句后,i的值是多少?i=j10?1:2;解:执行上面的语句后,i的值为2。2.15下面表达式的结果是什么类型?1、(10L+20)*0.52、(10L+20)*(1/2)3、static_castfloat(1.234)*10L解:上面表达式的结果分别是:1、15.02、03、12.34第三章3.1编写一段程序,提示用户输入一个英文字母,使用if语句判断用户输入的字母是大写字母还是小写字母,然后输出相关信息。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){charch;cout请输入一个大写或小写的英文字母endl;cinch;if(ch='A'&&ch='Z')cout您输入的是大写字母endl;if(ch='a'&&ch='z')cout您输入的是小写字母endl;}3.2以下程序段输出若干行字符串“Howareyou!”,行数由用户的输入的整数决定,如果用户输入0,则输出一行字符串“Hello!”,请找出下面程序中存在的语法错误。intn;cout请输入一个整数:;cinn;if(n=0)coutHello!\n;elsefor(inti=0;in;i++);coutHowareyou!\n;解:上面程序段中共有2处语法错误。第一处是语句if(n=0)应改为if(n==0);第二处是循环控制语句for后面不应该有分号。3.3编写一段程序,连续输入若干个学生的考试成绩,根据成绩判断其所在的等级,并输出相关信息。判断成绩等级的规则如下:例如,如果第3个学生的成绩为82分,则应输出一行字符串“学生3的成绩为B等”。要求使用while循环和switch选择语句。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){intnumbers;floatscore;cout请输入学生人数;cinnumbers;for(inti=1;i=numbers;i++){cout请输入第i个学生的成绩(在0到100之间的实数);cinscore;if(score=90)cout第i个学生的成绩为A级!endl;elseif(score=80)cout第i个学生的成绩为B级!endl;elseif(score=70)等级=A级90≤分数≤100B级80≤分数90C级70≤分数80D级60≤分数70E级分数60cout第i个学生的成绩为C级!endl;elseif(score=60)cout第i个学生的成绩为D级!endl;elsecout第i个学生的成绩为E级!endl;}}3.4编写程序,输出下面的由星号组成的倒三角形。*************************解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){for(inti=1;i=5;i++){for(intj=0;j10+i;j++)cout'';for(intk=1;k=(10-(2*i-1));k++)cout'*';coutendl;}}3.5请举例说明break语句和continue语句各自的用法和区别。答:break语句用在switch语句或循环语句之中,作用是使程序的控制流立即跳出包含它的switch语句体或包含它的最内层循环语句体,接着执行后面的语句。而continue语句只能用在循环语句中,其作用是使程序不在执行本次循环位于continue语句之后的循环体内的语句,但并不跳出循环体,而是跳转到循环开始处并判断是否应进行下一次循环。请同学自行举例验证。第四章4.1编写程序,声明并初始化一个包含10个元素的整型数组,找出其中的最大值。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){intarray[10]={9,51,33,7,48,76,51,64,25,17};intmax=0,maxindex;for(inti=0;i10;i++)if(maxarray[i]){max=array[i];maxindex=i;}cout数组中第maxindex+1个元素最大,它的值为maxendl;}4.2编写程序,声明并初始化一个4行3列的二维单精度浮点型数组,找出其中的最大值。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){floatarray[4][3]={{52.4f,23.9f,123.6f},{81.5f,247.2f,77.0f},{52.5f,187.0f,225.4f},{78.4f,63.2f,111.5f}};floatmax=0.0;intrindex,lindex;for(inti=0;i4;i++)for(intj=0;j3;j++){if(maxarray[i][j]){max=array[i][j];rindex=i;lindex=j;}}cout二维数组中第rindex+1行第lindex+1列的元素最大,它的值为maxendl;}4.3编写程序,将一个有序数组按逆序存放,例如:若原数组为1、2、4、5、8、10,则逆序后的数组为10、8、5、4、2、1。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){intarray[6]={1,2,4,5,8,10};inti=0,j=5;while(ij){inttemp=array[i];array[i]=array[j];array[j]=temp;i++;j--;}for(i=0;i6;i++)coutarray[i]=array[i]endl;}4.4编写程序,定义一个字符数组,用来接收用户从键盘输入的字符串,首先去掉其中的非字母字符,然后将其中所有的大写英文字母转换成与其相应的小写字母,并将转换后的结果输出。解:程序代码如下:#includeiostreamusingnamespacestd;voidmain(){chararray[50];cout请输入一行字符串(要求少于50个字符):;cinarray;inti=0;while(array[i]){if(array[i]'A'||(array[i]'z'&&array[i]'a')||array[i]'z'){intk=i,j=i+1;while(array[j])array[k++]=array[j++];array[k]='\0';}elsei++;}i=0;while(array[i]){if(array[i]='A'&&array[i]='Z')array[i]='a'+(array[i]-'A');i++;}coutarrayendl;}4.5请找出下面程序段中存在的错误。int*p;*p=100;cout*pendl;解:在上面的程序段中,定义了指针变量p后,应该使它指向某个确定的变量,然后才能使用该指针操作它所指向的变量。否则,指针变量中是一个随机地址,如果直接使用它,容易引发实时错误。所以上面的程序应该改为:inti,*p;p=&i;*p=100;cout*pendl;4.6编写程序,首先定义并初始化一个一维整型无序数组,然后对该数组排序。要求排序过程中使用指针来操作数组。解:程序代码为:#includeiostream
本文标题:习题答案1-5
链接地址:https://www.777doc.com/doc-4082868 .html