C++语言程序设计课后答案.docx
《C++语言程序设计课后答案.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计课后答案.docx(15页珍藏版)》请在冰豆网上搜索。
![C++语言程序设计课后答案.docx](https://file1.bdocx.com/fileroot1/2022-10/26/e42d75e1-6982-4162-a1df-1dc714d77020/e42d75e1-6982-4162-a1df-1dc714d770201.gif)
C++语言程序设计课后答案
第二章C++简单程序设计
2-10执行完下列语句后,a、b、c三个变量的值为多少?
a=30;
b=a++;
c=++a;
解:
a:
32;b:
30;c:
32;
2-13写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while语句完成同样的循环。
解:
for循环:
for(intn=100;n<=200;n+=2);
while循环:
intx=100;
while(n<=200)
n+=2;
do…while循环:
intn=100;
do
{
n+=2;
}while(n<=200);
2-17修改下面这个程序中的错误,改正后它的运行结果是什么?
#include<>
voidmain()
inti
intj;
i=10;/*给i赋值
j=20;/*给j赋值*/
cout<<"i+j=<
return0;
}
解:
改正:
#include<>
intmain()
{
inti;
intj;
i=10;09:
;<>?
@ABCDEFGHIJKLMNOP_QRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz<|>~s
2-21运行下面的程序,观察其输出,与你的设想是否相同?
#include<>
intmain()
{
unsignedintx;
unsignedinty=100;
unsignedintz=50;
x=y-z;
cout<<"Differenceis:
"<x=z-y;
cout<<"\nNowdifferenceis:
"<return0;
}
解:
程序运行输出:
Differenceis:
50
Nowdifferenceis:
46
注意,第二行的输出并非-50,注意x、y、z的数据类型。
2-22运行下面的程序,观察其输出,体会i++与++i的差别。
#include<>
intmain()
{
intmyAge=39;n";
cout<<"Youare:
"<myAge++;.\n";
cout<<"Iam:
"<cout<<"Youare:
"<cout<<"Anotheryearpasses\n";
cout<<"Iam:
"<cout<<"Youare:
"<<++yourAge<<"yearsold\n";
cout<<"Let'sprintitagain.\n";
cout<<"Iam:
"<cout<<"Youare:
"<return0;
}
解:
程序运行输出:
Iam39yearsold
Youare39yearsold
Oneyearpasses
Iam40yearsold
Youare40yearsold
Anotheryearpasses
Iam40yearsold
Youare41yearsold
Let'sprintitagain
Iam41yearsold
Youare41yearsold
2-28编写一个完整的程序,实现功能:
向用户提问"现在正在下雨吗?
",提示用户输入Y或N。
若输入为Y,显示"现在正在下雨。
";若输入为N,显示"现在没有下雨。
";否则继续提问"现在正在下雨吗?
"
解:
源程序:
#include<>
#include<>
voidmain()
{
charflag;
while
(1)
{
cout<<"现在正在下雨吗?
(YesorNo):
";
cin>>flag;
if(toupper(flag)=='Y')
{
cout<<"现在正在下雨。
";
break;
}
if(toupper(flag)=='N')
{
cout<<"现在没有下雨。
";
break;
}
}
}
程序运行输出:
现在正在下雨吗?
(YesorNo):
x
现在正在下雨吗?
(YesorNo):
l
现在正在下雨吗?
(YesorNo):
q
现在正在下雨吗?
(YesorNo):
n
现在没有下雨。
或:
现在正在下雨吗?
(YesorNo):
y
现在正在下雨。
2-29编写一个完整的程序,运行时向用户提问"你考试考了多少分?
(0~100)",接收输入后判断其等级,显示出来。
规则如下:
解:
#include<>
voidmain()
{
inti,score;
cout<<"你考试考了多少分?
(0~100):
";
cin>>score;
if(score>100||score<0)
cout<<"分数值必须在0到100之间!
";
else
{
i=score/10;
switch(i)
{
case10:
case9:
cout<<"你的成绩为优!
";
break;
case8:
cout<<"你的成绩为良!
";
break;
case7:
case6:
cout<<"你的成绩为中!
";
break;
default:
cout<<"你的成绩为差!
";
}
}
}
程序运行输出:
你考试考了多少分?
(0~100):
85
你的成绩为良!
2-31用穷举法找出1~100间的质数,显示出来。
分别使用while,do-while,for循环语句实现。
解:
源程序:
使用while循环语句:
#include<>
#include<>
voidmain()
{
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;
break;
}
j++;
}
if(flag)
cout<
i++;
}
}
使用do…while循环语句:
#include<>
#include<>
voidmain()
{
inti,j,k,flag;
i=2;
do{
flag=1;
k=sqrt(i);
j=2;
do{
if(i%j==0)
{
flag=0;
break;
}
j++;
}while(j<=k);
if(flag)
cout<
i++;
}while(i<=100);
}
使用for循环语句:
#include<>
#include<>
voidmain()
{
inti,j,k,flag;
for(i=2;i<=100;i++)
{
flag=1;
k=sqrt(i);
for(j=2;j<=k;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag)
cout<
}
}
程序运行输出:
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语句实现循环。
解:
nNumberone:
";
cin>>one;
cout<<"Numbertwo:
";
cin>>two;
answer=Divider(one,two);
if(answer>-1)
cout<<"Answer:
"<else
cout<<"Error,can'tdividebyzero!
";
return0;
}
程序运行输出:
Entertwonumbers.
Numberone:
8
Numbertwo:
2
Answer:
4
3-8编写函数把华氏温度转换为摄氏温度,公式为:
C=(F-32)*5/9;在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。
解:
源程序见"实验指导"部分实验三
3-10编写函数求两个整数的最大公约数和最小公倍数。
解:
源程序:
#include<>
#include<>
intfn1(inti,intj);voidPrintNameOf();};
Document:
:
Document(char*name)
{
Name=newchar[strlen(name)+1];
strcpy(Name,name);
};
voidDocument:
:
PrintNameOf()
{
cout<}
classBook:
publicDocument
{
public:
Book(char*name,longpagecount);
voidPrintNameOf();
private:
longPageCount;
};
Book:
:
Book(char*name,longpagecount):
Document(name)
{
PageCount=pagecount;
}
voidBook:
:
PrintNameOf()
{
cout<<"Nameofbook:
";
Document:
:
PrintNameOf();
}
voidmain()
{
Documenta("Document1");
Bookb("Book1",100);
();
}
程序运行输出:
Nameofbook:
Book1
7-9定义基类Base,