C++语言程序设计上机实验.doc_第1页
C++语言程序设计上机实验.doc_第2页
C++语言程序设计上机实验.doc_第3页
C++语言程序设计上机实验.doc_第4页
C++语言程序设计上机实验.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序语言设计上机实验2009/4-6实验一/*程序文件名:1.cpp*功能:设计一个函数,判断一整数是否为素数。* 设计者:xlj * 时间:4-16-2009*/#includeusing namespace std;int fun(int x)int i,a;for(i=2;ix;i+)if(x%i=0)a=0;break;else a=1;return a;void main()int n,b;cout请输入一个整数nn;b=fun(n);if(b=1)coutn是素数endl;if(b=0)coutn不是素数endl;运行结果请输入一个整数n33是素数请输入一个整数n6969不是素数请输入一个整数n-9Press any key to continue/*2、用一个函数名编写几个分别计算圆、矩形、梯形和三角形面积的函数。(注释:(1)对于三角形,可以直接通过三角形的底边长和高来求三角形面积;(2)在默认情况下,圆的半径值为1;矩形的边长为1; 三角形的底边长为2,高为1; 梯形的上底长为1,下底长为2,高为1)*/#includeusing namespace std;double yuan(int r)double s;s=3.14*r*r;return s;double juxing(int a,int b)double s;s=a*b;return s;double add(int a,int b,int h)double s;s=(a+b)*h/2.0;return s;double add(int a,int h)double s;s=a*h/2;return s;void main()cout圆面积yuan(1)endl;cout矩形面积juxing(1,1)endl;cout梯形面积add(1,2,1)endl;cout三角形面积add(2,1)endl;运行结果圆面积3.14矩形面积1梯形面积1.5三角形面积1Press any key to continue实验二/*1、编写程序,其中包含三个重载的min()函数: min函数带有三个参数。第一个min函数输出它的三个double型参数中的最小值;第二个min函数输出它的三个char型参数中的最小值;第一个min函数输出它的三个int型参数中的最小值;在主函数中,分别通过键盘输入三个int型数、三个double型数和三个char型数,并通过min函数求出其中的最小值。*/#includeusing namespace std;int min(int x,int y,int z)int s;s=(xy)?y:x;s=(sz)?z:s;return s;double min(double x,double y,double z)double s;s=(xy)?y:x;s=(sz)?z:s;return s;char min(char x,char y,char z)char s;s=(xy)?y:x;s=(sz)?z:s;return s;void main()int a,b,c;double a1,b1,c1;char a2,b2,c2;cout请输入 int a,b,cabc;cout最小值为min(a,b,c)endl;cout请输入 double a1,b1,c1a1b1c1;cout最小值为min(a1,b1,c1)endl;cout请输入 char a2,b2,c2a2b2c2;cout最小值为min(a2,b2,c2)endl;运行结果请输入 int a,b,c2 6 1最小值为1请输入 double a1,b1,c12.3 1.2 3.6 最小值1.2请输入 char a2,b2,c2 a w 5最小值为5Press any key to continue/*2、将上题改用函数模板的方法来解决。*/#includeusing namespace std;templateT min(T x,T y,T z)T s;s=(xy)?y:x;s=(sz)?z:s;return s;void main()double a,b,c;int a1,b1,c1;char a2,b2,c2;cout请输入三个double 数abc;cout最小值为min(a,b,c)endl;cout请输入三个int数a1b1c1;cout最小值为min(a1,b1,c1)endl;cout请输入三个char数a2b2c2;cout最小值为min(a2,b2,c2)endl;实验三/*1、编写程序,从键盘分别输入十个int型数据、十个double型数据和十个char型数据,对其分别进行冒泡方法和选择方法的排序,并输出排序后的结果。(要求用函数模板来实现)*/#includeusing namespace std;templatevoid fun(T b)int i,j;for(i=0;i10;i+)for(j=i+1;j10;j+)if(bibj)T t;t=bi;bi=bj;bj=t; /选择排序法for(i=0;i10;i+)coutbit;void main()int i;int a110;double a210;char a310;cout请输入十个int数据endl;for(i=0;ia1i;fun(a1);cout请输入十个double数据endl;for(i=0;ia2i;fun(a2);cout请输入十个char数据endl;for(i=0;ia3i;fun(a3);运行结果请输入十个int数据 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 请输入十个double数据1.2 2.3 3.4 4.5 5.6 6.7 7.8 8.9 9.1 10.210.2 9.1 8.9 7.8 6.7 5.6 4.5 3.4 2.3 1.2 请输入十个char数据i e l s a o p n m s s s p o n m l i e aPress any key to continue将fun()函数换成如下格式,结果一样:void fun(T b)int i,j;T t;for(i=0;i10;i+)for(j=0;j9-i;j+)if(bjbj+1)t=bj;bj=bj+1;bj+1=t; /冒泡排序法for(i=0;i10;i+)coutbit;实验四/*1、编写程序,输入三个整数,将它们按由大到小的顺序输出。要求形参分别使用变量的引用和变量的指针。*/#includeusing namespace std;void fun1(int &a,int &b,int &c)int t,y;if(ab)t=b;b=a;a=t;if(ac)t=c;c=a;a=t;if(bc)y=c;c=b;b=y;void fun2(int *a,int *b,int *c)int t,y;if(*a*b)t=*b;*b=*a;*a=t;if(*a*c)t=*c;*c=*a;*a=t;if(*b*c)y=*c;*c=*b;*b=y;void main ()int a,b,c,x,y,z;cout请输入三个整数abc;cout引用法:endl;fun1(a,b,c);couta b c xyz;cout指针法:endl;fun2(&x,&y,&z);coutx y z endl;运行结果请输入三个整数25 45 12引用法:45 25 1299 69 75指针法:99 75 69Press any key to continue/*2、编写一程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数。复制时,0也要复制过去。0后面的字符不复制。*/#includeusing namespace std;void main()int i,j,k,w;char s15,s25;cout请输入字符串:endl;couts15=;for(w=0;ws1w;couts25=;for(k=0;ks2k;cout将s2中字符复制s1中后s1变为endl;for(i=0;s2i!=0;i+) s1i=s2i;s1i+1=0;for(j=0;j5;j+) cout s1j;coutendl;运行结果请输入字符串:s15=abcdes25=12345将s2中字符复制s1中后s1变为12345Press any key to continue/*3、编写一程序实现将用户输入的字符串中所有的字符c删除,并输出结果。*/#includevoid fun(char a)int i,j;for(i=0;ai!=0;i+)if(ai=c)for(j=i;aj!=0;j+)aj=aj+1;for(i=0;ai!=0;i+)couta;fun(a);运行结果Abcdeci2345ccjkAbdei2345jkPress any key to continue实验五实验目的1掌握类与对象的定义与使用方法 2掌握类中不同访问权限的成员的使用方法。/*(1)定义一个三角形类Ctriangle,求三角形面积和周长。*/#include#includeusing namespace std;class Ctriangleprivate:double a,b,c;public:void longth(double a,double b,double c)cout周长为(double)(a+b+c)endl; void area(double a,double b,double c)double p,q; /l为二分之周长p=(a+b+c)/2; q=sqrt(p*(p-a)*(p-b)*(p-c);cout面积为qendl;void main()double a,b,c;cout请输入三边边长abc; Ctriangle m;m.longth(a,b,c);m.area(a,b,c);运行结果请输入三边边长5.6 2.9 6.8周长为15.3面积为7.95727Press any key to continue/*(2)设计一个学生类Cstudent,该类 包括学生学号、姓名以及数学、英语、c语言成绩等数据成员; 包括设置学生每门课成绩的函数setScore; 计算三门课程平均成绩的函数average; 计算三门课程总成绩的函数sum; 显示学生数据信息的函数print。 编写主函数,完成对类的使用。*/方法一#includeusing namespace std;class Cstudentprivate:int m;char n4;double a,b,c;public:void setScore(int x,int y,int z) a=x;b=y;c=z;void average()cout三门课平均成绩为(double)(a+b+c)/3;void sum()cout三门课程总成绩(double)(a+b+c);void print(int no,char n0)int i;m=no;for(i=0;i4;i+)ni=n0i;cout学号m;cout姓名;for(i=0;i4;i+)coutni;cout数学:a;英语:b;C语言:cendl;void main()int x,y,z,i,no; char n04;coutno;cout姓名;for (i=0;in0i;coutxyz;Cstudent w;w. setScore(x,y,z);w.average();w.sum();w. print(no,n0);方法二#includeusing namespace std;class Cstudentprivate:int num;char name10;double a,b,c;public:void setScore()coutnum;cout name;cout abc;void average()cout三门课平均成绩为(double)(a+b+c)/3endl;void sum()cout三门课程总成绩(double)(a+b+c)endl;void print()cout 学生信息endl;cout学号num 姓名:nameendl;cout数学a 英语b c语言cendl;average();sum();void main()Cstudent w;w. setScore();w.average();w.sum();w. print();运行结果输入学生学号:33 姓名:任我行 数学,英语,c语言成绩依次为 94 87 84三门课平均成绩为88.3333三门课程总成绩265学生信息学号33 姓名:任我行数学94 英语87 c语言84三门课平均成绩为88.3333三门课程总成绩265Press any key to continue实验六(类的定义与构造函数的使用)实验目的:1掌握类与对象的定义与使用方法 2掌握类的构造函数、析构函数、拷贝构造函数的使用方法。(1)设计一个学生类,包括学生学号、数学、英语、c语言成绩等数据成员;包括设置学生每门课成绩的函数setScore();计算三门课程平均成绩的函数average();计算三门课程总成绩的函数sum;显示学生数据信息的函数print()。编写主函数,完成对类的使用。(2)针对上一个程序中建立的类,加入两个构造函数,分别用来创建带参对象和无参对象;加入一个拷贝构造函数,用来完成同类对象的初始化工作。(3)针对上一个程序中建立的类,再加入一个析构函数,然后在程序中建立两个全局对象,建立两个局部对象,观察构造函数与析构函数的调用顺序。实验七实验目的1掌握组合类的定义与使用方法 2掌握组合类的构造函数的使用方法1 #includeusing namespace std;class Clockprivate:int H,M,S;public:void ShowTime()coutH:M:SH=H,this-M=M,this-S=S;Clock(int H=0,int M=0,int S=0)this-H=H,this-M=M,this-S=S;int GetH()return H;int GetM()return M;int GetS()return S;class TrainTripprivate:char * TrainNo;Clock StartTime;Clock EndTime;public:TrainTrip(char* TrainNo,Clock S,Clock E)this-TrainNo=TrainNo;StartTime=S;EndTime=E;Clock TripTime()int tH,tM,tS;int carry=0;Clock tTime;(tS=EndTime.GetS()-StartTime.GetS()0?carry=0:tS+=60,carry=1;(tM=EndTime.GetM()-StartTime.GetM()-carry)0?carry=0:tM+=60,carry=1;(tH=EndTime.GetH()-StartTime.GetH()-carry)0?carry=0:tH+=24;tTime.SetTime(tH,tM,tS); return tTime;void main()Clock C1(8,10,10),C2(6,1,2);Clock C3;TrainTrip T1(K16,C1,C2);C3=T1.TripTime();C3.ShowTime();运行结果21:50:52Press any key to continue实验八实验目的1掌握类静态成员的定义与使用方法2掌握公有派生类的定义与使用方法1、参考教材p226例7-9,验证类的静态数据成员的共享性。例7-9使用静态成员维护内存中Student类对象的个数(对象计数器)#includeusing namespace std;class Studentprivate:char *Name;int No;static int countS;public:static int GetCount()return countS;Student(char* =, int=0);Student(Student &);Student();Student:Student(char * Name,int No)this-Name=new char strlen(Name)+1;strcpy(this-Name,Name);this-No=No;+countS;coutconstructing:Nameendl;Student:Student(Student & r)Name=new char strlen(r.Name)+1;strcpy(Name,r.Name);No=r.No;+countS;coutcopy constructing:r.Nameendl;Student:Student()coutdestructing:Nameendl;delete Name;-countS;int Student:countS=0;void main ()coutStudent:GetCount()endl; /使用类调用静态成员函数Student s1(Antony);/ /建立一个新对象couts1.GetCount()endl; /通过对象调用静态成员函数Student s2(s1); /利用已有对象建立一个新对象couts1.GetCount()endl;Student S32; /建立一个对象数组coutStudent:GetCount()endl;Student *s4=new Student3; /建立一动态对象数组coutStudent:GetCount()endl;delete s4; /删除动态对象数组coutStudent:GetCount()endl;运行结果0constructing:Antony1copy constructing:Antony2constructing:constructing:4 constructing:constructing:constructing:7destructing:destructing:destructing:4destructing:destructing:destructing:Antonydestructing:AntonyPress any key to continue2、参考教材p256,参考例8-1联系使用公有继承机制。(注:可考虑使用多文件结构)/*公有继承及其访问*/在直观上,我们可以将点理解为半径长度为0的圆,所以,在本例中,我们从Point(点)类公有派生出新的Circle(圆)类。圆类具备Point类的全部特征,同时自身也有自己的特点:圆的半径,因此,圆在继承Point类的同时添加新的成员半径。Point类,Circle类,和使用Circle的函数分别如下:/Point.h#includeusing namespace std;class Point private:int X,Y;public:Point(int X=0,int Y=0) /Point()用户自定义构造函数this-X=X,this-Y=Y;void move(int OffX,int OffY) /move()实现点的移动X+=OffX,Y+=OffY;void ShowXY() /ShowXY()显示点对象的基本信息cout(X,Y)endl;/*Circle.h 从Point类派生出圆(Circle)*/#includepoint.hconst double PI=3.14159;class Circle :public Point private:double radius; /半径public:Circle(double R,int X,int Y):Point(X,Y)radius=R;double area() /求面积return PI*radius*radius;v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论