<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>c++程序设计答案</title><link>http://www.wb98.com/cjia/</link><description>c++程序设计第3版谭浩强课后答案</description><generator>RainbowSoft Studio Z-Blog 2.2 Prism Build 140101</generator><language>zh-CN</language><pubDate>Tue, 30 Jun 2020 19:11:39 +0800</pubDate><item><title>学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址)，教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩)，  C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_14.3.html</link><pubDate>Tue, 28 Jun 2016 17:18:45 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_14.3.html</guid><description><![CDATA[<p>
	C++编程：学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址)，教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩)，两个部门分别编写了本部门的学生数据管理程序，其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据，分别输出两种内容的学生数据。要求用C++编程，使用命名空间。<br />
<br />
以下是此题的【c源代码】<br />
<br />
//main file<br />
#include &lt;iostream&gt;<br />
using namespace std;<br />
#include "xt14-3-h1.h"<br />
#include "xt14-3-h2.h"<br />
using namespace std;<br />
using namespace student1;
</p>
<p>
	int main()<br />
&nbsp;{Student stud1(1001,"Wang",18,"123 Beijing Road,Shanghua");<br />
&nbsp; stud1.show_data();<br />
&nbsp; student2::Student stud2(1102,"Li",'f',89.5);<br />
&nbsp; stud2.show_data();<br />
&nbsp; return 0;<br />
&nbsp;}
</p>
<p>
	&nbsp; <br />
************************************<br />
//header1.h<br />
#include &lt;string&gt;<br />
namespace student1<br />
&nbsp;{class Student<br />
&nbsp;&nbsp;&nbsp; {public:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student(int n,string nam,int a,string addr)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {num=n;name=nam;age=a;address=addr;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void show_data();<br />
&nbsp;&nbsp;&nbsp;&nbsp; private:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int num;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string address;<br />
&nbsp;&nbsp;&nbsp; };<br />
&nbsp; void Student::show_data()<br />
&nbsp;&nbsp;&nbsp; {cout&lt;&lt;"num:"&lt;&lt;num&lt;&lt;"&nbsp; name:"&lt;&lt;name&lt;&lt;"&nbsp; age:"&lt;&lt;age<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;"&nbsp; address:"&lt;&lt;address&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;}<br />
&nbsp;&nbsp;&nbsp; <br />
******************************************<br />
//header2.h<br />
#include &lt;string&gt;<br />
namespace student2<br />
&nbsp;{class Student<br />
&nbsp;&nbsp; {public:<br />
&nbsp;&nbsp;&nbsp;&nbsp; Student(int n,string nam,char s,float sco)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {num=n;name=nam;sex=s;score=sco;}<br />
&nbsp;&nbsp;&nbsp;&nbsp; void show_data();<br />
&nbsp;&nbsp;&nbsp; private:<br />
&nbsp;&nbsp;&nbsp;&nbsp; int num;<br />
&nbsp;&nbsp;&nbsp;&nbsp; string name;<br />
&nbsp;&nbsp;&nbsp;&nbsp; char sex;<br />
&nbsp;&nbsp;&nbsp;&nbsp; float score;<br />
&nbsp;&nbsp; };<br />
&nbsp;&nbsp; <br />
&nbsp; void Student::show_data()<br />
&nbsp;&nbsp; {cout&lt;&lt;"num:"&lt;&lt;num&lt;&lt;"&nbsp; name:"&lt;&lt;name&lt;&lt;" sex:"&lt;&lt;sex<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;"&nbsp;&nbsp; score:"&lt;&lt;score&lt;&lt;endl; }<br />
&nbsp;}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_14.3.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=146</wfw:commentRss></item><item><title>求一元二次方程式 ax2+bx+c=0 的实根，如果方程没有实根，则输出有关警告信息。 C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_14.1.html</link><pubDate>Tue, 28 Jun 2016 17:15:04 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_14.1.html</guid><description><![CDATA[<p>
	C++编程：求一元二次方程式 ax2+bx+c=0 的实根，如果方程没有实根，则输出有关警告信息。<br />
<br />
以下是此题的【c源代码】<br />
<br />
#include &lt;iostream&gt;<br />
#include &lt;cmath&gt;<br />
using namespace std;<br />
double q(double,double,double);<br />
void main()<br />
{double a,b,c,p,x1,x2;<br />
&nbsp;cout&lt;&lt;"please enter a,b,c:";<br />
&nbsp;cin&gt;&gt;a&gt;&gt;b&gt;&gt;c;<br />
&nbsp;p=-b/(2*a);<br />
&nbsp;try<br />
&nbsp; {x1=p+q(a,b,c);<br />
&nbsp;&nbsp; x2=p-q(a,b,c);<br />
&nbsp;&nbsp; cout&lt;&lt;"x1="&lt;&lt;x1&lt;&lt;endl&lt;&lt;"x2="&lt;&lt;x2&lt;&lt;endl;<br />
&nbsp; }<br />
&nbsp;catch(double d)<br />
&nbsp;&nbsp; {cout&lt;&lt;"a="&lt;&lt;a&lt;&lt;",b="&lt;&lt;b&lt;&lt;",c="&lt;&lt;c&lt;&lt;",disc="&lt;&lt;d&lt;&lt;",error!"&lt;&lt;endl;}<br />
&nbsp;cout&lt;&lt;"end"&lt;&lt;endl;<br />
}
</p>
<p>
	double q(double a,double b,double c)<br />
&nbsp;{double disc;<br />
&nbsp; disc=b*b-4*a*c;<br />
&nbsp; if (disc&lt;0) throw disc;<br />
&nbsp; return sqrt(disc)/(2*a);<br />
&nbsp;}<br />
&nbsp;
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_14.1.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=145</wfw:commentRss></item><item><title>在例7.17的基础上，修改程序，将存放在c数组中的数据读入并显示出来。C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.6.html</link><pubDate>Tue, 28 Jun 2016 10:54:23 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.6.html</guid><description><![CDATA[<p>
	在例7.17的基础上修改程序将存放在c数组中的数据读入并显示出来。<br />
<br />
谭浩强c++程序设计第3版答案<br />
c++设计(第3版)题解与上机指导 谭浩强 编著<br />
c++设计第3版谭浩强课后答案<br />
<br />
以下是此题的【c源代码】<br />
#include &lt;iostream&gt;<br />
#include &lt;strstream&gt;<br />
using namespace std;
</p>
<p>
	struct student<br />
{int num;<br />
&nbsp;char name[20];<br />
&nbsp;double score;<br />
};<br />
int main()<br />
{student stud[3]={1001,"Li",78,1002,"Wang",89.5,1004,"Fun",90},stud1[3];<br />
&nbsp;char c[50];<br />
&nbsp;int i;<br />
&nbsp;ostrstream strout(c,50);<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; strout&lt;&lt;stud[i].num&lt;&lt;" "&lt;&lt;stud[i].name&lt;&lt;" "&lt;&lt;stud[i].score&lt;&lt;" ";<br />
&nbsp;strout&lt;&lt;ends;<br />
&nbsp;cout&lt;&lt;"array c:"&lt;&lt;endl&lt;&lt;c&lt;&lt;endl&lt;&lt;endl;<br />
&nbsp;istrstream strin(c,50);<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; strin&gt;&gt;stud1[i].num&gt;&gt;stud1[i].name&gt;&gt;stud1[i].score;<br />
&nbsp;cout&lt;&lt;"data from array c to array stud1:"&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; cout&lt;&lt;stud1[i].num&lt;&lt;" "&lt;&lt;stud1[i].name&lt;&lt;" "&lt;&lt;stud1[i].score&lt;&lt;endl;<br />
&nbsp;cout&lt;&lt;endl;<br />
&nbsp;return 0;<br />
}<br />
<br />
<br />
以下代码可以改一下，改为只建立一个输入输出串流，既用它向字符数组C数据，又从字符数组C读数据。程序如下：<br />
#include &lt;iostream&gt;<br />
#include &lt;strstream&gt;<br />
using namespace std;<br />
struct student<br />
{int num;<br />
&nbsp;char name[20];<br />
&nbsp;double score;<br />
};<br />
int main()<br />
{int i;<br />
&nbsp;student stud[3]={1001,"Li",78,1002,"Wang",89.5,1004,"Fun",90},stud1[3];<br />
&nbsp;char c[50];<br />
&nbsp;strstream strio(c,50,ios::in|ios::out);<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; strio&lt;&lt;stud[i].num&lt;&lt;" "&lt;&lt;stud[i].name&lt;&lt;" "&lt;&lt;stud[i].score&lt;&lt;" ";<br />
&nbsp;strio&lt;&lt;ends;<br />
&nbsp;cout&lt;&lt;"array c:"&lt;&lt;endl&lt;&lt;c&lt;&lt;endl&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; strio&gt;&gt;stud1[i].num&gt;&gt;stud1[i].name&gt;&gt;stud1[i].score;<br />
&nbsp;cout&lt;&lt;"data from array c to array stud1:"&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;3;i++)<br />
&nbsp; cout&lt;&lt;stud1[i].num&lt;&lt;" "&lt;&lt;stud1[i].name&lt;&lt;" "&lt;&lt;stud1[i].score&lt;&lt;endl;<br />
&nbsp;cout&lt;&lt;endl;<br />
&nbsp;return 0;<br />
}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.6.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=144</wfw:commentRss></item><item><title>编程序实现以下功能:  (1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。 C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.5.html</link><pubDate>Tue, 28 Jun 2016 10:50:56 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.5.html</guid><description><![CDATA[<p>
	<span id="__kindeditor_bookmark_start_0__"></span>编程序实现以下功能:&nbsp; <br />
(1) 按职工号由小到大的顺序将5个员工的数据(包括号码、姓名、年龄、工资)输出到磁盘文件中保存。<br />
(2) 从键盘输入两个员工的数据(职工号大于已有的职工号)，增加到文件的末尾。<br />
(3) 输出文件中全部职工的数据。<br />
(4) 从键盘输入一个号码，从文件中查找有无此职工号，如有则显示此职工是第几个职工，以及此职工的全部数据。如没有，就输出“无此人”。可以反复多次查询，如果输入查找的职工号为0，就结束查询。<br />
<br />
谭浩强c++程序设计第三版答案<br />
以下是此题的【c源代码】<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
using namespace std;<br />
struct staff<br />
{int num;<br />
&nbsp;char name[20];<br />
&nbsp;int age;<br />
&nbsp;double&nbsp; pay;<br />
};<br />
int main()<br />
{staff staf[7]={2101,"Li",34,1203,2104,"Wang",23,674.5,2108,"Fun",54,778,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3006,"Xue",45,476.5,5101,"Ling",39,656.6},staf1;<br />
&nbsp;fstream iofile("staff.dat",ios::in|ios::out|ios::binary);<br />
&nbsp;if(!iofile)<br />
&nbsp; {cerr&lt;&lt;"open error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; abort();<br />
&nbsp; }<br />
&nbsp;int i,m,num;<br />
&nbsp;cout&lt;&lt;"Five staff :"&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;5;i++)<br />
&nbsp;&nbsp; {cout&lt;&lt;staf[i].num&lt;&lt;" "&lt;&lt;staf[i].name&lt;&lt;" "&lt;&lt;staf[i].age&lt;&lt;" "&lt;&lt;staf[i].pay&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp; iofile.write((char *)&amp;staf[i],sizeof(staf[i]));}<br />
&nbsp;cout&lt;&lt;"please input data you want insert:"&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;2;i++)<br />
&nbsp;&nbsp; {cin&gt;&gt;staf1.num&gt;&gt;staf1.name&gt;&gt;staf1.age&gt;&gt;staf1.pay;<br />
&nbsp;&nbsp;&nbsp; iofile.seekp(0,ios::end);<br />
&nbsp;&nbsp;&nbsp; iofile.write((char *)&amp;staf1,sizeof(staf1));}<br />
&nbsp; iofile.seekg(0,ios::beg);<br />
&nbsp; for(i=0;i&lt;7;i++)<br />
&nbsp;&nbsp; {iofile.read((char *)&amp;staf[i],sizeof(staf[i]));<br />
&nbsp;&nbsp;&nbsp; cout&lt;&lt;staf[i].num&lt;&lt;" "&lt;&lt;staf[i].name&lt;&lt;" "&lt;&lt;staf[i].age&lt;&lt;" "&lt;&lt;staf[i].pay&lt;&lt;endl;<br />
&nbsp;&nbsp; }<br />
&nbsp;bool find;<br />
&nbsp;cout&lt;&lt;"enter number you want search,enter 0 to stop.";<br />
&nbsp;cin&gt;&gt;num;<br />
&nbsp;while(num)<br />
&nbsp;{find=false;<br />
&nbsp; iofile.seekg(0,ios::beg);<br />
&nbsp; for(i=0;i&lt;7;i++)<br />
&nbsp;&nbsp; {iofile.read((char *)&amp;staf[i],sizeof(staf[i]));<br />
&nbsp;&nbsp;&nbsp; if(num==staf[i].num)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {m=iofile.tellg();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;num&lt;&lt;" is No."&lt;&lt;m/sizeof(staf1)&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;staf[i].num&lt;&lt;" "&lt;&lt;staf[i].name&lt;&lt;" "&lt;&lt;staf[i].age&lt;&lt;" "&lt;&lt;staf[i].pay&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; find=true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; }<br />
&nbsp; if(!find)<br />
&nbsp;&nbsp;&nbsp; cout&lt;&lt;"can't find "&lt;&lt;num&lt;&lt;endl;<br />
&nbsp; cout&lt;&lt;"enter number you want search,enter 0 to stop.";<br />
&nbsp; cin&gt;&gt;num;<br />
&nbsp;}<br />
&nbsp; iofile.close();<br />
&nbsp; return 0;<br />
}
</p>
<p>
	<br />
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.5.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=143</wfw:commentRss></item><item><title>建立两个磁盘文件f1.dat和f2.dat编程序实现以下工作: (1) 从键盘输入20个整数分别存放在两个磁盘文件中(每个文件中放10个整数)C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.4.html</link><pubDate>Tue, 28 Jun 2016 10:39:13 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.4.html</guid><description><![CDATA[<p>
	++编程：建立两个磁盘文件f1.dat和f2.dat编程序实现以下工作: <br />
&nbsp;(1) 从键盘输入20个整数分别存放在两个磁盘文件中(每个文件中放10个整数)<br />
&nbsp;(2) 从f1.dat读入10个数然后存放到f2.dat文件原有数据的后面<br />
&nbsp;(3) 从f2.dat中读入20个整数将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。<br />
<br />
以下是此题的【c源代码】<br />
#include &lt;iostream&gt;<br />
#include &lt;fstream&gt;<br />
using namespace std;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //VC++ 6.0要此行<br />
//fun1函数从键盘输入20个整数，分别存放在两个磁盘文件中
</p>
<p>
	void fun1()<br />
{int a[10];<br />
&nbsp;ofstream outfile1("f1.dat"),outfile2("f2.dat");&nbsp; //分别定义两个文件流对象<br />
&nbsp;if(!outfile1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //检查打开f1.dat是否成功<br />
&nbsp; {cerr&lt;&lt;"open f1.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; exit(1);<br />
&nbsp; }<br />
&nbsp;if(!outfile2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //检查打开f2.dat是否成功<br />
&nbsp; {cerr&lt;&lt;"open f2.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; exit(1);<br />
&nbsp; } <br />
&nbsp;cout&lt;&lt;"enter 10 integer numbers:"&lt;&lt;endl;<br />
&nbsp;for(int i=0;i&lt;10;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输入10个数存放到f1.dat文件中<br />
&nbsp; {cin&gt;&gt;a[i];<br />
&nbsp;&nbsp; outfile1&lt;&lt;a[i]&lt;&lt;" ";}<br />
&nbsp; cout&lt;&lt;"enter 10 integer numbers:"&lt;&lt;endl;<br />
&nbsp;for(i=0;i&lt;10;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输入10个数存放到f2.dat文件中<br />
&nbsp; {cin&gt;&gt;a[i];<br />
&nbsp;&nbsp; outfile2&lt;&lt;a[i]&lt;&lt;" ";}<br />
&nbsp;outfile1.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //关闭f1.dat文件<br />
&nbsp;outfile2.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //关闭f2.dat文件<br />
}
</p>
<p>
	//从f1,dat读入10个数，然后存放到f2.dat文件原有数据的后面<br />
void fun2()<br />
{ifstream infile("f1.dat");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //f1.dat作为输入文件<br />
&nbsp;if(!infile)<br />
&nbsp; {cerr&lt;&lt;"open f1.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; exit(1);<br />
&nbsp; }<br />
&nbsp; ofstream outfile("f2.dat",ios::app); <br />
&nbsp;//f2.dat作为输出文件，文件指针指向文件尾，向它写入的数据放在原来数据的后面<br />
&nbsp; if(!outfile)<br />
&nbsp;&nbsp; {cerr&lt;&lt;"open f2.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; exit(1);<br />
&nbsp; }<br />
&nbsp; int a;<br />
&nbsp; for(int i=0;i&lt;10;i++)<br />
&nbsp;&nbsp; {infile&gt;&gt;a;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //磁盘文件f2.dat读入一个整数<br />
&nbsp;&nbsp;&nbsp; outfile&lt;&lt;a&lt;&lt;" ";&nbsp;&nbsp;&nbsp;&nbsp; //将该数存放到f2.dat中<br />
&nbsp;&nbsp; }<br />
&nbsp; infile.close();<br />
&nbsp; outfile.close();<br />
&nbsp;}
</p>
<p>
	//从f2.dat中读入20个整数，将它们按从小到大的顺序存放到f2.dat <br />
void fun3()<br />
{ifstream infile("f2.dat"); //定义输入文件流infile，以输入方式打开f2.dat <br />
&nbsp;if(!infile)<br />
&nbsp; {cerr&lt;&lt;"open f2.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp; exit(1);<br />
&nbsp; }<br />
&nbsp;int a[20];<br />
&nbsp;int i,j,t;<br />
&nbsp;for(i=0;i&lt;20;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; infile&gt;&gt;a[i];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //从磁盘文件f2.dat读入20个数放在数组a中<br />
&nbsp;for(i=0;i&lt;19;i++)&nbsp;&nbsp;&nbsp;&nbsp; //用起泡法对20个数排序<br />
&nbsp;&nbsp; for(j=0;j&lt;19-i;j++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(a[j]&gt;a[j+1])<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {t=a[j];a[j]=a[j+1];a[j+1]=t;}<br />
&nbsp; infile.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //关闭输入文件f2.dat<br />
&nbsp; ofstream outfile("f2.dat",ios::out);<br />
// f2.dat作为输出文件，文件中原有内容删除<br />
&nbsp; if(!outfile)<br />
&nbsp;&nbsp; {cerr&lt;&lt;"open f2.dat error!"&lt;&lt;endl;<br />
&nbsp;&nbsp;&nbsp; exit(1);}<br />
cout&lt;&lt;"data in f2.dat:"&lt;&lt;endl;<br />
&nbsp; for( i=0;i&lt;20;i++)<br />
&nbsp;&nbsp;&nbsp; {outfile&lt;&lt;a[i]&lt;&lt;" ";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //向f2.dat输出已排序的20个数<br />
&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;a[i]&lt;&lt;" ";}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //同时输出到显示器<br />
&nbsp; cout&lt;&lt;endl;<br />
&nbsp; outfile.close();<br />
}
</p>
<p>
	int main()<br />
{fun1();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //分别调用3个函数<br />
&nbsp;fun2();<br />
&nbsp;fun3();<br />
&nbsp;return 0;<br />
}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.4.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=142</wfw:commentRss></item><item><title>编程序，在显示屏上显示一个由字母B组成的三角形。C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.3.html</link><pubDate>Tue, 28 Jun 2016 10:09:11 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.3.html</guid><description><![CDATA[<p>
	编程序，在显示屏上显示一个由字母B组成的三角形。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;BBBBB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;BBBBBBB<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBBBBBBBB<br />
&nbsp;&nbsp;&nbsp; BBBBBBBBBBB<br />
&nbsp; BBBBBBBBBBBBB<br />
BBBBBBBBBBBBBBB<br />
<br />
以下是此题的【c源代码】<br />
#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;<br />
using namespace std;<br />
int main()<br />
{<br />
&nbsp;for(int n=1;n&lt;8;n++)<br />
&nbsp;cout&lt;&lt;setw(20-n)&lt;&lt;setfill(' ')&lt;&lt;" "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //nm<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;setw(2*n-1)&lt;&lt;setfill('B')&lt;&lt;"B"&lt;&lt;endl;<br />
&nbsp;return 0;<br />
}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.3.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=141</wfw:commentRss></item><item><title>从键盘输入一批数值要求保留3位小数在输出时上下行小数点对齐。C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.2.html</link><pubDate>Tue, 28 Jun 2016 10:04:28 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.2.html</guid><description><![CDATA[<p>
	C++编程：从键盘输入一批数值要求保留3位小数在输出时上下行小数点对齐。<br />
<br />
c++设计第3版谭浩强课后答案<br />
以下是此题的【c源代码】<br />
<br />
1，用控制符控制输出格式的源代码：<br />
#include &lt;iostream&gt;<br />
#include &lt;iomanip&gt;<br />
using namespace std;
</p>
<p>
	int main()<br />
{float a[5];<br />
&nbsp;cout&lt;&lt;"input data:";<br />
&nbsp;for(int i=0;i&lt;5;i++)<br />
&nbsp; cin&gt;&gt;a[i];<br />
&nbsp;cout&lt;&lt;setiosflags(ios::fixed)&lt;&lt;setprecision(2);<br />
&nbsp;for(i=0;i&lt;5;i++)<br />
&nbsp; cout&lt;&lt;setw(10)&lt;&lt;a[i]&lt;&lt;endl;<br />
&nbsp;return 0;<br />
}<br />
<br />
2，用流成员函数控制输出格式<br />
#include &lt;iostream&gt;<br />
using namespace std;<br />
int main()<br />
{float a[5];<br />
&nbsp;int i;<br />
&nbsp;cout&lt;&lt;"input data:";<br />
&nbsp;for(i=0;i&lt;5;i++)<br />
&nbsp; cin&gt;&gt;a[i];<br />
&nbsp;cout.setf(ios::fixed);<br />
&nbsp;cout.precision(2);<br />
&nbsp;for(i=0;i&lt;5;i++)<br />
&nbsp; {cout.width(10);<br />
&nbsp;&nbsp; cout&lt;&lt;a[i]&lt;&lt;endl;}<br />
&nbsp;return 0;<br />
}<br />
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.2.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=140</wfw:commentRss></item><item><title>输入三角形的三边 a,b,c,计算三角形的面积的公式是  C++</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_13.1.html</link><pubDate>Tue, 28 Jun 2016 09:49:26 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_13.1.html</guid><description><![CDATA[<p>
	C++编程：输入三角形的三边 a,b,c,计算三角形的面积的公式是<br />
<img alt="" src="http://www.wb98.com/cjia/zb_users/upload/2016/6/20160628095862846284.PNG" />
</p>
<p>
	形成三角形的条件是：a+b&gt;c,b+c&gt;a,c+a&gt;b<br />
编写程序，输入a,b,c，检查a,b,c是否满足以上条件，如不满足，由cerr输出有关出错信息。<br />
<br />
以下是此题的【c源代码】<br />
<br />
#include &lt;iostream&gt;<br />
#include &lt;cmath&gt;<br />
using namespace std;<br />
int main()<br />
{double a,b,c,s,area;<br />
&nbsp;cout&lt;&lt;"please input a,b,c:";<br />
&nbsp;cin&gt;&gt;a&gt;&gt;b&gt;&gt;c;<br />
&nbsp;if (a+b&lt;=c)<br />
&nbsp; cerr&lt;&lt;"a+b&lt;=c,error!"&lt;&lt;endl;<br />
&nbsp;else if(b+c&lt;=a)<br />
&nbsp; cerr&lt;&lt;"b+c&lt;=a,error!"&lt;&lt;endl;<br />
&nbsp;else if (c+a&lt;=b)<br />
&nbsp; cerr&lt;&lt;"c+a&lt;=b,error!"&lt;&lt;endl;<br />
&nbsp;else<br />
&nbsp; {s=(a+b+c)/2;<br />
&nbsp;&nbsp; area=sqrt(s*(s-a)*(s-b)*(s-c));<br />
&nbsp;&nbsp; cout&lt;&lt;"area="&lt;&lt;area&lt;&lt;endl;}<br />
&nbsp;return 0;<br />
}<br />
<br />
上面的C源代码，可以改下，编写计算三角形面积的函数。代码如下：<br />
<br />
#include &lt;iostream&gt;<br />
#include &lt;cmath&gt;<br />
using namespace std;
</p>
<p>
	void input(double a,double b,double c)<br />
{cout&lt;&lt;"please input a,b,c:";<br />
&nbsp;cin&gt;&gt;a&gt;&gt;b&gt;&gt;c;<br />
}<br />
void area(double a,double b,double c)<br />
{double s,area;<br />
&nbsp;if (a+b&lt;=c)<br />
&nbsp; cerr&lt;&lt;"a+b&lt;=c,error!"&lt;&lt;endl;<br />
&nbsp;else if(b+c&lt;=a)<br />
&nbsp; cerr&lt;&lt;"b+c&lt;=a,error!"&lt;&lt;endl;<br />
&nbsp;else if (c+a&lt;=b)<br />
&nbsp; cerr&lt;&lt;"c+a&lt;=b,error!"&lt;&lt;endl;<br />
&nbsp;else<br />
&nbsp; {s=(a+b+c)/2;<br />
&nbsp;&nbsp; area=sqrt(s*(s-a)*(s-b)*(s-c));<br />
&nbsp;&nbsp; cout&lt;&lt;"area="&lt;&lt;area&lt;&lt;endl;}<br />
}<br />
int main()<br />
{double a=2,b=3,c=5;<br />
&nbsp;input(a,b,c);<br />
&nbsp;area(a,b,c);<br />
&nbsp;return 0;<br />
}<br />
&nbsp;
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_13.1.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=139</wfw:commentRss></item><item><title>编写一个程序,定义抽象基类Shape，由它派生出5个派生类：Cricle（圆形),Square（正方形)， Rectangle（矩形）， Trapezoid （梯形）,Triangle（三角形）。</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_12.5.html</link><pubDate>Sun, 26 Jun 2016 16:26:27 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_12.5.html</guid><description><![CDATA[<p>
	C+编程：编写一个程序,定义抽象基类Shape，由它派生出5个派生类：Cricle（圆形),Square（正方形)， Rectangle（矩形）， Trapezoid （梯形）,Triangle（三角形）。用虚函数分别计算图形面积，并求所有图形面积的和．要求用基类指针数组，使它的每一个元素指向一个派生类对象。<br />
<br />
以下是此题的【c++源代码】<br />
#include &lt;iostream&gt;<br />
using namespace std;<br />
//定义抽象基类Shape<br />
class Shape<br />
{public:<br />
&nbsp;virtual double area() const =0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //纯虚函数<br />
};
</p>
<p>
	//定义Circle(圆形)类<br />
class Circle:public Shape<br />
{public:<br />
Circle(double r):radius(r){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp; virtual double area() const {return 3.14159*radius*radius;};&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double radius;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //半径<br />
};
</p>
<p>
	//定义Square(正方形)类<br />
class Square:public Shape<br />
{public:<br />
&nbsp; Square(double s):side(s){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; virtual double area() const {return side*side;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double side;<br />
};
</p>
<p>
	//定义Rectangle(矩形)类<br />
class Rectangle:public Shape<br />
{public:<br />
&nbsp;Rectangle(double w,double h):width(w),height(h){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp;virtual double area() const {return width*height;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double width,height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //宽与高<br />
};
</p>
<p>
	//定义Trapezoid(梯形)类<br />
class Trapezoid:public Shape<br />
{public:<br />
&nbsp; Trapezoid(double t,double b,double h):top(t),bottom(t),height(h){} //结构函数<br />
&nbsp; virtual double area() const {return 0.5*(top+bottom)*height;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double top,bottom,height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //上底、下底与高<br />
};
</p>
<p>
	//定义Triangle(三角形)类<br />
class Triangle:public Shape<br />
{public:<br />
&nbsp; Triangle(double w,double h):width(w),height(h){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp; virtual double area() const {return 0.5*width*height;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double width,height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //宽与高<br />
};
</p>
<p>
	int main()<br />
{<br />
&nbsp;Circle circle(12.6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Circle类对象circle<br />
&nbsp;Square square(3.5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Square类对象square<br />
&nbsp;Rectangle rectangle(4.5,8.4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Rectangle类对象rectangle<br />
&nbsp;Trapezoid trapezoid(2.0,4.5,3.2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Trapezoid类对象trapezoid<br />
&nbsp;Triangle triangle(4.5,8.4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Triangle类对象<br />
&nbsp;Shape *pt[5]={&amp;circle,&amp;square,&amp;rectangle,&amp;trapezoid,&amp;triangle};&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义基类指针数组pt，使它每一个元素指向一个派生类对象<br />
&nbsp;double areas=0.0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //areas为总面积<br />
&nbsp;for(int i=0;i&lt;5;i++)<br />
&nbsp; {areas=areas+pt[i]-&gt;area();}<br />
&nbsp;cout&lt;&lt;"totol of all areas="&lt;&lt;areas&lt;&lt;endl;&nbsp;&nbsp; //输出总面积<br />
&nbsp;return 0;<br />
}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_12.5.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=138</wfw:commentRss></item><item><title>编写一个程序，声明抽象基类Shape，由它派生出3个派生类：Circle(圆形)、Rectangle(矩形)、Triangle（三角形），用一个函数pritArea分别输出以上三者的面积，3个图形的数</title><author>null@null.com (hyf64)</author><link>http://www.wb98.com/cjia/post/cjia_12.4.html</link><pubDate>Sun, 26 Jun 2016 15:57:10 +0800</pubDate><guid>http://www.wb98.com/cjia/post/cjia_12.4.html</guid><description><![CDATA[<p>
	编写一个程序，声明抽象基类Shape，由它派生出3个派生类：Circle(圆形)、Rectangle(矩形)、Triangle（三角形），用一个函数pritArea分别输出以上三者的面积，3个图形的数据在定义对象时给定。<br />
<br />
以下是此题的【c++源代码】<br />
#include &lt;iostream&gt;<br />
using namespace std;<br />
//定义抽象基类Shape<br />
class Shape<br />
{public:<br />
&nbsp;virtual double area() const =0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //纯虚函数<br />
};
</p>
<p>
	//定义Circle类<br />
class Circle:public Shape<br />
{public:<br />
Circle(double r):radius(r){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp; virtual double area() const {return 3.14159*radius*radius;};&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double radius;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //半径<br />
};
</p>
<p>
	//定义Rectangle类<br />
class Rectangle:public Shape<br />
{public:<br />
&nbsp;Rectangle(double w,double h):width(w),height(h){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp;virtual double area() const {return width*height;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double width,height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //宽与高<br />
};
</p>
<p>
	class Triangle:public Shape<br />
{public:<br />
&nbsp; Triangle(double w,double h):width(w),height(h){}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //结构函数<br />
&nbsp; virtual double area() const {return 0.5*width*height;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义虚函数<br />
&nbsp;protected:<br />
&nbsp; double width,height;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //宽与高<br />
};
</p>
<p>
	//输出面积的函数<br />
void printArea(const Shape &amp;s)<br />
{cout&lt;&lt;s.area()&lt;&lt;endl;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出s的面积
</p>
<p>
	int main()<br />
{<br />
&nbsp;Circle circle(12.6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Circle类对象circle<br />
&nbsp;cout&lt;&lt;"area of circle&nbsp;&nbsp;&nbsp; =";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;printArea(circle);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出circle的面积<br />
&nbsp;Rectangle rectangle(4.5,8.4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Rectangle类对象rectangle<br />
&nbsp;cout&lt;&lt;"area of rectangle =";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;printArea(rectangle);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出rectangle的面积<br />
&nbsp;Triangle triangle(4.5,8.4);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //建立Triangle类对象 <br />
&nbsp;cout&lt;&lt;"area of triangle&nbsp; =";<br />
&nbsp;printArea(triangle);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出triangle的面积<br />
&nbsp;return 0;<br />
}
</p>]]></description><category>c++程序设计第三版谭浩强课后答案</category><comments>http://www.wb98.com/cjia/post/cjia_12.4.html#comment</comments><wfw:commentRss>http://www.wb98.com/cjia/feed.asp?cmt=137</wfw:commentRss></item></channel></rss>
