《c+程序设计》C+上机指导答案.doc
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《c+程序设计》C+上机指导答案.doc》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+程序设计 c+ 程序设计 上机 指导 答案
- 资源描述:
-
1、实验答案实验一(略)实验二1、程序1:运行结果:This is a C+ program.程序2:运行结果:Please input to a and b:1 2 a+b=3This is a C+ program.2、测试的知识点:若函数的调用在前,定义在后,则需要在函数调用语句前对该函数作原型声明。3、(1)#include /包含头文件命令using namespace std;/使用名字空间stdint main()int a,b,c; /定义两个变量a和b coutPlease input to a, b and c: abc;/等待用户从键盘输入数据 int max(int x,
2、int y); /有两个形参的max函数原型声明cout Max(a,b)= max(a,b)endl;/输出结果信息至屏幕int max(int x, int y, int z); /有三个形参的max函数原型声明cout Max(a,b,c)= max(a,b,c) y)?x:y; /求两个数中的大者的函数int max(int x, int y, int z) /求三个数中的大者的函数 int temp;temp=max(x,y);temp=max(temp,z);return temp; (2)#include using namespace std;int main()int max
3、(int a,int b,int c=0); int a,b,c; cinabc; coutmax(a,b,c)=max(a,b,c)endl; coutmax(a,b)=max(a,b)a) a=b; if(ca) a=c; return a;4、(1)#include using namespace std;int main()void sort(int *,int *,int *); int a,b,c,a1,b1,c1; coutabc; a1=a;b1=b;c1=c; sort(&a1,&b1,&c1); couta b c in sorted order is ; couta1 b
4、1 c1*j) change(i,j); if (*i*k) change(i,k); if (*j*k) change(j,k);void change(int *x,int *y) int temp; temp=*x; *x=*y; *y=temp;(2)#include using namespace std;int main()void sort(int &,int &,int &); int a,b,c,a1,b1,c1; coutabc; a1=a;b1=b;c1=c; sort(a1,b1,c1); couta b c in sorted order is ; couta1 b1
5、 c1j) change(i,j); if (ik) change(i,k); if (jk) change(j,k);void change(int &x,int &y) int temp; temp=x; x=y; y=temp;5、#include #include using namespace std;int main() int a5=1,9,0,23,-45; float b5=2.4f, 7.6f, 5.5f, 6.6f, -2.3f; string c5=”student”, ”teacher”,”library”,”class”,”school”; void sort(in
6、t ); void sort(float ); void sort(double ); sort(a); sort(b); sort(c); return 0;void sort(int a)/冒泡排序int i,j,t; for (j=0;j5;j+) for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; coutthe sorted numbers :endl; for(i=0;i5;i+) coutai ; coutendlendl; void sort(float a)/改进的冒泡排序int i,j; float t; int flag; for (j=0;j5;j+
7、) flag=1; for(i=0;iai+1) flag=0; t=ai;ai=ai+1;ai+1=t; if (flag=1) break; coutthe sorted numbers :endl; for(i=0;i5;i+) coutai ; coutendlendl;void sort(string a)/选择排序int i,j;string min; long t; for(i=0;i5;i+) min=i; for (j=i+1;jaj) min=j;t=ai; ai=amin;amin=t; coutthe sorted numbers :endl; for(i=0;i5;i
8、+) coutai ; coutendlendl;6、#include #include using namespace std;int main() string s1=week,s2=end; couts1=s1endl; couts2=s2endl; s1=s1+s2; coutThe new string is:s1endl; return 0;实验三1、(1)程序错误:错误1:set_clock()函数和show_clock()函数放在Clock类的类体中,这表示它们是Time类的成员函数,但是在定义这两个函数时是按一般函数定义的。错误2:在Time类中没指定访问权限(public或
9、private),按C+的规定,如不指定访问权限,按private处理。私有的成员在类外是不能被访问的,在set_clock()函数和show_clock()函数中都访问了私有成员hour,minute,second,main函数调用set_clock()函数和show_clock()函数都是不允许的。错误3:在main函数中调用set_clock()函数和show_clock()函数,而这两个函数都是在main()函数之后定义的,而在main()函数中并未对这两个函数进行原型声明。对该程序景象修改的思路有以下两种:修改思路1:把set_clock()和show_clock()函数看作是类Cl
10、ock的成员函数。#include using namespace std;class Clockpublic:void set_clock(void); void show_clock(void); private: int hour; int minute; int second;int main() Clock clock; clock.set_clock(); clock.show_clock ();return 0;void Clock:set_clock(void) cinhour; cinminute; cinsecond;void Clock:show_clock(void)
11、couthour:minute:secondendl; 修改思路2:把set_clock()和show_clock()函数看作是普通函数。#include using namespace std;class Clockpublic: int hour; int minute; int second;Clock clock;int main() void set_clock(void); void show_clock(void); set_clock(); show_clock ();return 0;void set_clock(void) cinclock.hour; cinclock.m
12、inute; cinclock.second;void show_clock(void) coutclock.hour:clock.minute:clock.secondendl; (2)程序错误:错误1:构造函数指定了返回值类型,删除其前面是void错误2:析构函数指定了返回值类型,删除其前面是void错误3:m为类A的私有数据成员,类外不能访问。可以在类A中增加设置m的值的公用成员函数set()。可以对程序代码做如下修改:#include using namespace std;class Apublic: A(int i=0)m=i; void set(int x)m=x;void sh
13、ow()coutmendl; A()private: int m;int main() A a(5);a.set(10);a.show();return 0;(3)程序错误:错误1:类X的私有数据成员a的初始化不能在类中进行,只能通过构造函数完成。错误2:类X的私有数据成员b定义为引用,但没有初始化。错误3:类X的私有成员函数setA()不能在类外调用。错误4:构造函数:X(int i) a=i;的访问权限不能定义为私有的。错误5:构造函数:X(int i) a=i;没有对常数据成员c在参数初始化表中进行初始化。错误6:构造函数:int X() a=b=0;不能定义返回类型错误7:构造函数:i
14、nt X() a=b=0; 没有对常数据成员c在参数初始化表中进行初始化。错误8:构造函数:X(int i, int j, int k) a=i; b=j; c=k; 对对常数据成员c的初始化不是在参数初始化表中完成的。错误9:常成员函数:setC(int k) const c=c+k;修改常数据成员c的值。可以对程序代码做如下修改:#include using namespace std;class X private: int a; int b; const int c; public:X(int i):c(0) a=i; X():c(0) a=b=0; X(int i, int j, i
15、nt k):c(k) a=i; b=j; void showC(int k) const coutcendl;void setA(int i)a=i;int main() X x1; X x2(2) ; X x3(1,2,3) ; x1.setA(3) ; return 0 ;2、(1)运行结果:Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active(2)运行结果:a=4 b=X:X(int,char,float) c=32a=0 b=X:X() c=10a=10 b=X:X(.) c=
16、10a=0 b=X:X(const X &other) c=103、#include using namespace std;class Salarypublic:Salary()/初始化工资数据的各分项数据为0Wage=0; Subsidy=0; Rent=0; WaterFee=0; ElecFee=0; Salary(double W, double S, double R, double WF, double EF)/初始化工资数据的各分项数据Wage=W; Subsidy=S; Rent=R; WaterFee=WF; ElecFee=EF; void setWage(double
17、w) Wage=w; double getWage() return Wage; void setSubsidy(double s) Subsidy=s; double getSubsidy() return Subsidy; void setRent(double r) Rent=r; double getRent() return Rent; void setWaterFee(double wf) WaterFee=wf; double getWaterFee() return WaterFee; void setElecFee(double ef) ElecFee=ef; double
18、getElecFee() return ElecFee; double RealSalary()/计算实发工资 return Wage+Subsidy-Rent-WaterFee-ElecFee; void Display()coutWage=Wageendl;coutSubsidy=Subsidyendl;coutRent=Rentendl;coutWaterFee=WaterFeeendl;coutElecFee=ElecFeeendl;coutRealSalary=RealSalary()endl;private: double Wage, Subsidy, Rent, WaterFee
展开阅读全文