C++语言程序设计课后答案Word文档下载推荐.docx
《C++语言程序设计课后答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计课后答案Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
i+j;
/*输出结果*/
return0;
}
改正:
intmain()
inti;
//给i赋值
i+j="
<
程序运行输出:
i+j=30
2-18编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。
源程序:
请输入一个数字:
"
;
cin>
>
i;
您输入一个数字是"
i<
endl;
5
您输入一个数字是5
2-20打印ASCII码为32~127的字符。
for(inti=32;
i<
128;
i++)
(char)i;
!
#$%G'
()*+,
2-21运行下面的程序,观察其输出,与你的设想是否相同?
unsignedintx;
unsignedinty=100;
unsignedintz=50;
x=y-z;
Differenceis:
x;
x=z-y;
\nNowdifferenceis:
x<
endl;
50
注意,第二行的输出并非-50,注意x、y、z的数据类型。
2-22运行下面的程序,观察其输出,体会i++与++i的差别。
intmyAge=39;
//initializetwointegers
intyourAge=39;
Iam:
myAge<
yearsold.\n"
Youare:
yourAge<
yearsold\n"
myAge++;
//postfixincrement
++yourAge;
//prefixincrement
Oneyearpasses...\n"
Anotheryearpasses\n"
myAge++<
++yourAge<
Let'
sprintitagain.\n"
Iam39yearsold
Youare39yearsold
Oneyearpasses
Iam40yearsold
Youare40yearsold
Anotheryearpasses
Youare41yearsold
sprintitagain
Iam41yearsold
2-28编写一个完整的程序,实现功能:
向用户提问"
现在正在下雨吗?
,提示用户输入Y或N。
若输入为Y,显示"
现在正在下雨。
;
若输入为N,显示"
现在没有下雨。
否则继续提问"
stdlib.h>
charflag;
while
(1)
(YesorNo):
flag;
if(toupper(flag)=='
Y'
)
break;
N'
x
l
q
n
或:
y
2-29编写一个完整的程序,运行时向用户提问"
你考试考了多少分?
(0~100)"
,接收输入后判断其等级,显示出来。
规则如下:
inti,score;
你考试考了多少分?
(0~100):
score;
if(score>
100||score<
0)
分数值必须在0到100之间!
else
i=score/10;
switch(i)
case10:
case9:
你的成绩为优!
case8:
你的成绩为良!
case7:
case6:
你的成绩为中!
default:
你的成绩为差!
}
(0~100):
85
2-31用穷举法找出1~100间的质数,显示出来。
分别使用while,do-while,for循环语句实现。
使用while循环语句:
math.h>
inti,j,k,flag;
i=2;
while(i<
=100)
flag=1;
k=sqrt(i);
j=2;
while(j<
=k)
if(i%j==0)
flag=0;
j++;
if(flag)
是质数."
i++;
使用do…while循环语句:
do{
}while(j<
=k);
}while(i<
=100);
使用for循环语句:
for(i=2;
=100;
for(j=2;
j<
=k;
j++)
2是质数.
3是质数.
5是质数.
7是质数.
11是质数.
13是质数.
17是质数.
19是质数.
23是质数.
29是质数.
31是质数.
37是质数.
41是质数.
43是质数.
47是质数.
53是质数.
59是质数.
61是质数.
67是质数.
71是质数.
73是质数.
79是质数.
83是质数.
89是质数.
97是质数.
2-33定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;
提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
源程序见"
实验指导"
部分实验二
2-34在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。
分别使用while、do…while语句实现循环。
//使用while语句
voidmain(){
intn=18;
intm=0;
while(m!
=n)
请猜这个数的值为多少?
(0~~100):
m;
if(n>
m)
你猜的值太小了!
elseif(n<
你猜的值太大了!
你猜对了!
//使用do…while语句
}while(n!
=m);
50
25
10
15
18
第三章函数
3-2观察下面程序的运行输出,与你设想的有何不同?
仔细体会引用的用法。
intintOne;
int&
rSomeRef=intOne;
intOne=5;
intOne:
\t\t"
intOne<
rSomeRef:
\t"
rSomeRef<
intintTwo=8;
rSomeRef=intTwo;
//notwhatyouthink!
\nintOne:
intTwo:
intTwo<
5
8
3-7编写函数,参数为两个unsignedshortint型数,返回值为第一个参数除以第二个参数的结果,数据类型为shortint;
如果第二个参数为0,则返回值为-1。
在主程序中实现输入输出。
shortintDivider(unsignedshortinta,unsignedshortintb)
if(b==0)
return-1;
returna/b;
typedefunsignedshortintUSHORT;
typedefunsignedlongintULONG;
USHORTone,two;
shortintanswer;
Entertwonumbers.\nNumberone:
one;
Numbertwo:
two;
answer=Divider(one,two);
if(answer>
-1)
Answer:
answer;
Error,can'
tdividebyzero!
Entertwonumbers.
Numberone:
8
2
4
3-8编写函数把华氏温度转换为摄氏温度,公式为:
C=(F-32)*5/9;
在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。
部分实验三
3-10编写函数求两个整数的最大公约数和最小公倍数。
intfn1(inti,intj);
//求最大公约数的函数
inti,j,x,y;
请输入一个正整数:
i;
请输入另一个正整数:
j;
x=fn1(i,j);
y=i*j/x;
和"
的最大公约数是:
的最小公倍数是:
y<
intfn1(inti,intj)
inttemp;
if(i<
j)
temp=i;
i=j;
j=i;
while(j!
=0)
temp=i%j;
j=temp;
returni;
120
72
120和72的最大公约数是:
24
120和72的最小公倍数是:
360
3-12在主程序中提示输入整数n,编写函数用递归的方法求1+2+…+n的值。
intfn1(inti);
从1累加到"
i<
的和为:
fn1(i)<
intfn1(inti)
if(i==1)
return1;
returni+fn1(i-1);
100
从1累加到100的和为:
5050
3-14用递归的方法编写函数求Fibonacci级数,公式为fib(n)=fib(n-1)+fib(n-2),n>
2;
fib
(1)=fib
(2)=1;
观察递归调用的过程。
3-15用递归的方法编写函数求n阶勒让德多项式的值,在主程序中实现输入、输出;
floatp(intn,intx);
intn,x;
请输入正整数n:
n;
请输入正整数x:
n="
x="
P"
("
)="
p(n,x)<
floatp(intn,intx)
if(n==0)
elseif(n==1)
returnx;
return((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n;
1
n=1
x=2
P1
(2)=2
3
4
n=3
x=4
P3(4)=154
第四章类
4-9设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
classRectangle
public:
Rectangle(inttop,intleft,intbottom,intright);
~Rectangle(){}
intGetTop()const{returnitsTop;
}
intGetLeft()const{returnitsLeft;
intGetBottom()const{returnitsBottom;
intGetRight()const{returnitsRight;
voidSetTop(inttop){itsTop=top;
voidSetLeft(intleft){itsLeft=left;
voidSetBottom(intbottom){itsBottom=bottom;
voidSetRight(intright){itsRight=right;
intGetArea()const;
private:
intitsTop;
intitsLeft;
intitsBottom;
intitsRight;
};
Rectangle:
:
Rectangle(inttop,intleft,intbottom,intright)
itsTop=top;
itsLeft=left;
itsBottom=bottom;
itsRight=right;
intRectangle:
GetArea()const
intWidth=itsRight-itsLeft;
intHeight=itsTop-itsBottom;
return(Width*Height);
RectangleMyRectangle(100,20,50,80);
intArea=MyRectangle.GetArea();
Area:
Area<
\n"
3000
UpperLeftXCoordinate:
20
4-11定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积
Rectangle(floatlen,floatwidth)
Length=len;
Width=width;
~Rectangle(){};
floatGetArea(){returnLength*Width;
floatGetLength(){returnLength;
floatGetWidth(){returnWidth;
floatLength;
floatWidth;
floatlength,width;
请输入矩形的长度:
length;
请输入矩形的宽度:
width;
Rectangler(length,width);
长为"
length<
宽为"
width<
的矩形的面积为:
r.GetArea()<
长为5宽为4的矩形的面积为:
20
4-12定义一个"
数据类型"
datatype类,能处理包含字符型、整型、浮点型三种类型的数据,给出其构造函数。
classdatatype{