书签 分享 收藏 举报 版权申诉 / 56
上传文档赚钱

类型《c+程序设计》C+上机指导答案.doc

  • 上传人(卖家):momomo
  • 文档编号:5780888
  • 上传时间:2023-05-08
  • 格式:DOC
  • 页数:56
  • 大小:335KB
  • 【下载声明】
    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

    19、, ElecFee;int main()Salary s(2000,1000,500,50,200);s.Display();s.setWage(3000);coutendl;s.Display();return 0;4、#include using namespace std;#include class Clockpublic: Clock();Clock(int h,int m,int s);void SetClock(int h,int m,int s);void ShowClock();private: int hour,minute,second;Clock:Clock()hour

    20、=0;minute=0;second=0;Clock:Clock(int h,int m,int s)hour=h;minute=m;second=s;void Clock:SetClock(int h,int m,int s)hour=h;minute=m;second=s; void Clock:ShowClock() if(hour10) cout0;couthour:;if(minute10) cout0; coutminute:;if(second10) cout0; coutsecondendl;int main() Clock today;today.SetClock(12,1,

    21、1); today.ShowClock();today.SetClock(13,1,1); today.ShowClock(); return 0;5、#include #include class Employee public: Employee(char *nm,char *str,char *city, char *prov, char *zip); Employee(const Employee &);void SetData(char *newName,char *newaddr,char *newcity, char *newprov, char *newcode); void

    22、Display();private: char name20;char street100;char city20;char province20;char postalcode10;Employee:Employee(char *nm, char *str, char *cit, char *prov, char *code) strcpy(name,nm); strcpy(street,str); strcpy(city,cit); strcpy(province,prov); strcpy(postalcode,code); Employee:Employee(const Employe

    23、e &other) strcpy(name, other.name); strcpy(street, other.street); strcpy(city, other.city); strcpy(province, other.province); strcpy(postalcode, other.postalcode); void Employee:SetData(char *newName,char *newstr,char *newcity, char *newprov, char *newcode) strcpy(name, newName);strcpy(street,newstr

    24、); strcpy(city,newcity); strcpy(province,newprov); strcpy(postalcode,newcode); void Employee:Display()coutname=name;cout street=street;cout city=city;cout province=province;cout postalcode=postalcode;coutendl;int main() Employee employee1(Tom,AAAAAAAA,BB,CC,DD); employee1.Display(); employee1.SetDat

    25、a(Tom,AAAAAAAA,BB,CC,EE);employee1.Display();return 0;6、#include using namespace std;#include class Triangle /定义三角形类public: Triangle(int x,int y,int z);void SetTriangle(int x, int y, int z); /设置三角形成员函数doubleGetArea(); /求三角形面积int GetPerimeter(); /求三角形周长void Print(); /输出三角形信息private:int a,b,c; /数据成员;T

    26、riangle:Triangle(int x,int y,int z)a = x;b = y;c = z; void Triangle:SetTriangle(int x, int y, int z) /设置三角形成员函数a = x;b = y;c = z; double Triangle:GetArea() /求三角形面积double s;s = (a + b + c)/2.0;return sqrt( s*(s-a)*(s-b)*(s-c); int Triangle:GetPerimeter() return (a + b + c); /求三角形周长void Triangle:Print

    27、() /输出三角形信息coutthe three side of the triangle is:a,b,cendl;coutthe perimeter of the triangle is:GetPerimeter()endl;coutthe area of the triangle is:GetArea()endl;int main()Triangle t1(4,5,6); /定义三角形对象Triangle t2(7,8,9); /定义三角形对象t1.Print();t2.Print();return 0;7、#include using namespace std;class intAr

    28、raypublic:intArray(int size);/构造函数intArray(const intArray &x);/复制构造函数intArray();/析构函数bool Set(int i, int elem);/设置第i个数组元素的值,设置成功返回true,失败返回falsebool Get(int i, int &elem); /获取第i个数组元素的值,获取成功返回true,失败返回falseint Length( ) const;/获取数组的长度void ReSize ( int size ); /重置数组void Print();/输出数组private:int *eleme

    29、nts; /指向动态数组的指针int arraysize; /数组的大小;intArray:intArray(int size)if ( size = 0 ) cerr Invalid Array Size endl; return; elements=new intsize;if ( elements = NULL ) cerr Memory Allocation Errorendl; return; else arraysize=size;intArray:intArray(const intArray &x)int n = arraysize = x.arraysize; element

    30、s = new intn; if ( elements = NULL ) cerr Memory Allocation Error endl; int *srcptr = x.elements; int *destptr = elements;while ( n- ) * destptr+ = * srcptr+;intArray:intArray()delete elements; bool intArray:Set(int i, int elem)if(iarraysize) coutI is invalid!endl; return false; else elementsi=elem;

    31、 return true;bool intArray:Get(int i, int &elem)if(iarraysize) coutI is invalid!= 0 & size != arraysize ) int * newarray = new intsize; if ( newarray = NULL ) cerr Memory Allocation Error endl; int n = ( size = arraysize ) ? size: arraysize; int *srcptr = elements; int *destptr = newarray; while ( n

    32、- ) * destptr+ = * srcptr+; delete elements; elements = newarray;arraysize = size; void intArray:Print()for(int i=0;iarraysize;i+) coutelementsi ;coutendl;int main()intArray arr(5);for(int i=0;i5;i+)if(!arr.Set(i,i) exit(1);arr.Print();return 0;8、#include using namespace std;class intListprotected:

    33、struct Node Node * next; int data;Node * pFirst;public: intList();/构造函数 intList(); /析构函数 /向链表的第i个位置插入一个元素,插入成功返回true,失败返回false bool Insert(int i, int elem) ; /删除链表的第i个位置的元素,删除成功返回true,失败返回false bool Remove(int i, int &elem) ; int Find(int elem)const; /查找值为elem的元素,返回指向该元素的指针 int Length( ) const;/返回链表

    34、长度 void PrintList();/输出链表;intList:intList() pFirst=new Node; pFirst-next=NULL; ;intList:intList() Node *p,*q; p=pFirst; while (p-next!=NULL ) q=p-next; delete p; p=q; ;delete p;pFirst=NULL;int intList:Length() const Node *p;int j; p= pFirst-next; j=0; while (p!=NULL ) p=p-next; j+; return j;int intL

    35、ist:Find(int elem)const Node *p; int j; int data; p=pFirst-next; j=1; while (p!=NULL ) data=p-data; if (data=elem) break; p=p-next; j=j+1; ; if (p!=NULL ) return(j); else return (0);bool intList:Insert(int loc,int elem) Node *p,*s;int j; p= pFirst; j=0; while (p!=NULL ) & (jnext;j=j+1; ; if (p!=NULL

    36、 )& (j=loc-1) s=new Node; s-data=elem; s-next=p-next; p-next=s; return true; else return false;bool intList:Remove(int i,int &elem) Node *p,*q; int j; p= pFirst; j=0; while (p-next!=NULL ) & (jnext;j=j+1; ; if (p-next!=NULL )&(j=i-1) q=p-next; p-next=p-next-next; elem=q-data; delete(q); return true; else return false;void intList:PrintList()Node *p; p=pFirst-next; while (p!=NULL

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《c+程序设计》C+上机指导答案.doc
    链接地址:https://www.163wenku.com/p-5780888.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库