《面向对象程序设计(C++版)》习题答案
董正言
本文档中包含书中所有习题的答案,其中的程序都在VC++6.0系统中通过编译,并可以正确运行。
第一章
1.1 面向对象程序设计方法有哪些基本特征?
答:面向对象程序设计方法的基本特征有:抽象、封装、继承、多态。
1.2 从着手开始编写一个程序,到形成一个可执行文件,通常需要经过哪几个步骤?
答:一个由高级语言编写的程序从开始编码到可以运行需要经过编辑、编译和链接几步。
1.3 C++程序的入口点是什么?
答:C++程序的入口点是main函数。
第二章
2.1 在C++程序中,以下_C_是合法的标识符。
A、Cat.100 B、321day C、_100num D、int
2.2 在基于32位系统的VC++6.0编译器中,以下数据类型各占多少个字节?
A、char B、int C、float D、long E、double
答:在基于32位系统的VC++6.0编译器中,char型数据为1个字节,int型数据为4个字节,float型数据为4个字节,long型数据为4个字节,double型数据为8个字节。
2.3 C++系统采用什么编码存储字符数据,该编码的长度是多少?
答:C++系统采用ASCII码存储字符数据,该编码的长度是1个字节。
2.4 写出定义以下变量的程序语句:
1、ASCII码值为65的字符型变量
2、值为10000的无符号整型变量
3、一个双精度浮点型变量
解:1: char ch=65;
2: unsigned int i=10000;
3: double f;
2.5、在程序中经常出现的标识符cout和cin是什么?它们有什么功能?
答:cout是C++系统预定义的标准输出流对象,代表标准输出设备---显示器,在控制台应用程序中可以利用它向显示器输出字符串。cin是C++系统预定义的标准输入流对象,代表标准输入设备---键盘,在控制台应用程序中可以利用它从键盘输入数据。
2.6 程序中可能出现各种形式的数值常量,请写出以下语句的输出结果:
1、cout<<0144;
2、cout<<0x64;
3、cout<<0xB3L;
4、cout<<1234E-2;
5、cout<<(char)65;
解:几条语句的输出结果如下:
1、100
2、100
3、179
4、12.34
5、A
2.7 C++中如何定义符号常量,和C语言定义符号常量的方法有什么不同?
答:C++使用关键字const定义符号常量,而C语言使用预编译指令#define定义符号常量。由关键字const定义的符号常量具有数据类型,在程序运行期间占据存储空间;而由预编译指令#define定义的符号常量没有数据类型,在程序运行期间也不占据存储空间。
2.8 假设var1和var2都是整型写出以下C++表达式的值。
1、11/3
2、11%3
3、var1=(var2=10)+5
4、var1=(var2=10)++
解:上面表达式的值分别是:
1、3
2、2
3、15
4、10
2.9 写出下面语句段的输出结果。
int i=5,j=10;
i*= --j;
cout<<"i="<<i<<endl;
解:上面程序段的输出为:i=45
2.10 假设i,j,k是整型变量,而且i=5,j=10,k=20,写出下列表达式的值。
1、 i<j&&j>k
2、 i<j||j>k
3、 !i>k
4、 !(i>j)&&(j>k)
解:上面表达式的值分别是:
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<<(i << j) ;
5、 cout<<(i >> j) ;
6、 cout<<(~i | i) ;
解:上面语句的输出分别为:
1、2
2、11
3、9
4、80
5、1
6、-1
2.12 请写出下列语句的输出结果。
cout<<"Hello!\r"<<"Welcome to C++!\n";
解:上面语句的输出为:Welcome to C++!
2.13 假设i和j是整型变量,执行下列语句后,i的值是多少?
i =(j = 10, j * 3) ;
解:执行上面的语句后,i的值为30。
2.14 假设i和j是整型变量,j的值为10,则执行下列语句后,i的值是多少?
i=j<10?1:2 ;
解:执行上面的语句后,i的值为2。
2.15 下面表达式的结果是什么类型?
1、(10L+20)*0.5
2、(10L+20)*(1/2)
3、static_cast<float>(1.234)*10L
解:上面表达式的结果分别是:
1、15.0
2、0
3、12.34
第三章
3.1 编写一段程序,提示用户输入一个英文字母,使用if语句判断用户输入的字母是大写字母还是小写字母,然后输出相关信息。
解:程序代码如下:
#include<iostream>
using namespace std;
void main()
{
char ch;
cout<<"请输入一个大写或小写的英文字母"<<endl;
cin>>ch;
if(ch>='A'&&ch<='Z')
cout<<"您输入的是大写字母"<<endl;
if(ch>='a'&&ch<='z')
cout<<"您输入的是小写字母"<<endl;
}
3.2 以下程序段输出若干行字符串“How are you!”,行数由用户的输入的整数决定,如果
用户输入0,则输出一行字符串“Hello!”,请出下面程序中存在的语法错误。
int n;
cout<<"请输入一个整数:";
cin>>n;
if(n=0)
cout<<"Hello!\n";
else
for(int i=0;i<n;i++);
cout<<"How are you!\n";
解:上面程序段中共有2处语法错误。第一处是语句if(n=0)应改为if(n==0);第二处是循环控制语句for后面不应该有分号。
3.3 编写一段程序,连续输入若干个学生的考试成绩,根据成绩判断其所在的等级,并输出
相关信息。判断成绩等级的规则如下:
例如,如果第3个学生的成绩为82分,则应输出一行字符串“学生3的成绩为B等”。
要求使用while循环和switch选择语句。
解:程序代码如下:
#include<iostream>
using namespace std;
void main()
{
int numbers;
float score;
cout<<"请输入学生人数";
cin>>numbers;
for(int i=1;i<=numbers;i++)
{
cout<<"请输入第"<<i<<"个学生的成绩(在float几个字节多少位0到100之间的实数)";
cin>>score;
if(score>=90)
cout<<"第"<<i<<"个学生的成绩为A级!"<<endl;
else if(score>=80)
cout<<"第"<<i<<"个学生的成绩为B级!"<<endl;
else if(score>=70)
cout<<"第"<<i<<"个学生的成绩为C级!"<<endl;
else if(score>=60)
cout<<"第"<<i<<"个学生的成绩为D级!"<<endl;
else
cout<<"第"<<i<<"个学生的成绩为E级!"<<endl;
}
}
3.4 编写程序,输出下面的由星号组成的倒三角形。
*********
*******
*****
***
*
解:程序代码如下:
#include<iostream>
using namespace std;
void main()
{
for(int i=1;i<=5;i++)
{
for(int j=0; j<10+i; j++)
cout<<' ';
for(int k=1;k<=(10-(2*i-1));k++)
cout<<'*';
cout<<endl;
}
}
3.5 请举例说明break语句和continue语句各自的用法和区别。
答:break语句用在switch语句或循环语句之中,作用是使程序的控制流立即跳出包含它的switch语句体或包含它的最内层循环语句体,接着执行后面的语句。而continue语句只能用在循环语句中,其作用是使程序不在执行本次循环位于continue语句之后的循环体内的语句,但并不跳出循环体,而是跳转到循环开始处并判断是否应进行下一次循环。请同学自行举例验证。
第四章
4.1 编写程序,声明并初始化一个包含10个元素的整型数组,出其中的最大值。
解:程序代码如下:
#include<iostream>
using namespace std;
void main()
{
int array[10]={9,51,33,7,48,76,51,64,25,17};
int max=0,maxindex;
for(int i=0;i<10;i++)
if(max<array[i])
{
max=array[i];
maxindex=i;
}
cout<<"数组中第"<<maxindex+1<<"个元素最大,它的值为"<<max<<endl;
}
4.2 编写程序,声明并初始化一个4行3列的二维单精度浮点型数组,出其中的最大值。
解:程序代码如下:
#include<iostream>
using namespace std;
void main()
{
float array[4][3]={{52.4f,23.9f,123.6f},
{81.5f,247.2f,77.0f},
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论