文档库 最新最全的文档下载
当前位置:文档库 › C++程序大全

C++程序大全

课本123页第十题

#include "iostream.h"

#include "string.h"

#include "stdio.h"

class Date

{

public:

Date()

{

year=2010;

month=01;

day=01;

}

void SetY ear(int y)

{

year=y;

}

void SetMonth(int m)

{

month=m;

}

void SetDay(int d)

{

day=d;

}

int GetY ear()

{

return year;

}

int GetMonth()

{

return month;

}

int GetDay()

{

return day;

}

void DisplayDate()

{

cout<

}

private:

int year,month,day;

};

class Person

{

private:

int PersonNumber;

char sex[2];

Date date;

int ID;

public:

Person()

{

}

Person(int personnumber,char sex1[],Date d,int ID=0):date(d) {

PersonNumber=personnumber;

strcpy(sex,sex1);

ID=0;

}

~Person()

{

}

Person(Person&);

void SetPersonNumber(int spn)

{

PersonNumber=spn;

}

void SetSex(char *str)

{

strcpy(sex,str);

}

void SetDate(Date d)

{

date.SetY ear(d.GetY ear ());

date.SetMonth(d.GetMonth ());

date.SetDay(d.GetDay ());

}

void SetID(int id )

{

ID=id;

}

int GetPersonNumber()

{

return PersonNumber;

}

char* GetSex()

{

return sex;

}

int GetDate()

{

cout<

return 1;

}

int GetID( )

{

return ID;

}

};

Person::Person(Person &p)

{

PersonNumber=p.PersonNumber ;

strcpy(sex,p.sex );

date=p.date ;

ID=p.ID ;

}

void main()

{

Person person[4];

char sex[2];

int personnum;

Date dd;

int year,month,day;

int id;

for(int i=0;i<4;i++)

{

cout<<"请输入员工的编号:"<

cin>>personnum;

person[i].SetPersonNumber(personnum);

cout<<"请输入员工的性别:"<

cin>>sex;

person[i].SetSex (sex);

cout<<"请输入员工的出生年月:"<

cin>>year>>month>>day;

dd.SetY ear (year);

dd.SetMonth (month);

dd.SetDay (day);

person[i].SetDate(dd);

cout<<"请输入员工的身份证号:"<

cin>>id;

person[i].SetID(id);

cout<

}

for(int j=0;j<4;j++)

{

cout<

cout<

cout<

cout<

}

}

类的组合

#include "iostream.h"

#include "math.h"

class Point

{

public:

Point(int xx=0,int yy=0)

{

x=xx;

y=yy;

}

Point(Point &p);

int Getx()

{

return x;

}

int Gety()

{

return y;

}

private:

int x,y;

};

Point::Point(Point &p)

{

x=p.x ;

y=p.y ;

cout<<"Point拷贝构造函数被调用"<

}

class Line

{

public :

Line(Point xp1,Point xp2);

Line(Line&);

double Getlen()

{

return len;

}

private:

Point p1,p2;

double len;

};

Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)

{

cout<<"Line拷贝构造函数被调用"<

double x=double(p1.Getx()-p2.Getx());

double y=double(p1.Gety()-p2.Gety());

len=sqrt(x*x+y*y);

}

Line::Line(Line &L):p1(L.p1),p2(L.p2)

{

cout<<"Line拷贝构造函数被调用"<

len=L.len;

}

void main()

{

Point myp1(1,1),myp2(4,5);

Line line(myp1,myp2);

Line line2(line);

cout<

cout<

}

1实现客户机(CLIENT)类。声明字符静态数据成员ServerName,保存其服务器名称;声明整形静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeSeverName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件test.cpp中测试这个类,观察相应的成员变量取值的变化情况。

#include "iostream"

#include "cstring"

using namespace std;

class Client

{

private:

static char ServerName[20];

static int ClientNum;

public:

Client();

static void ChangeSeverName(char name[]);

void GetServerName();

void GetServerNum();

};

#include "Client.h"

int Client::ClientNum =0;

char Client::ServerName[20] =" ";

void Client::ChangeSeverName(char name[]) {

strcpy(ServerName,name);

}

Client::Client()

{

ClientNum++;

}

void Client::GetServerName ()

{

for(int i=0;i<20;i++)

cout<

cout<

}

void Client::GetServerNum()

{

cout<

}

#include "Client.h"

void main()

{

Client client;

char name[20]={'s','e','v'};

client.ChangeSeverName (name);

cout<<"服务器名字是:"<

client.GetServerName ();

cout<<"用户个数是:" <

client.GetServerNum ();

Client client2;

char name2[20]={'s','u','n'};

client.ChangeSeverName (name2);

cout<<"改变后服务器名字是:"<

client.GetServerName ();

cout<<"用户个数是:" <

client.GetServerNum ();

}

王婆卖瓜:每卖一瓜记录该瓜的重量,以及所卖出的总重量和总个数,同时允许退瓜,请编程模拟过程。

#include "iostream"

using namespace std;

class Watermelon

{

private :

//float weight;

static float totalweight;

static int amount;

public:

Watermelon();

void SellOneWatermelon(float w);

void WithdrawWatermelon(float w);

int SellWatermelonAmount();

float SellWaterToalWeight();

};

#include "Watermelon.h"

int Watermelon::amount =0;

float Watermelon::totalweight =0.0f;

void Watermelon::SellOneWatermelon(float w)

{

amount++;

totalweight+=w;

}

void Watermelon::WithdrawWatermelon(float w)

{

amount--;

totalweight-=w;

}

int Watermelon::SellWatermelonAmount()

{

return amount;

}

float Watermelon::SellWaterToalWeight()

{

return totalweight;

}

Watermelon::Watermelon()

{

}

#include "Watermelon.h"

void main()

{

Watermelon wm;

wm.SellOneWatermelon (15.6f);

wm.SellOneWatermelon(15.4f);

cout<<"卖出西瓜的个数:"<

cout<<"卖出西瓜的总重量:"<

wm.WithdrawWatermelon (15.2f);

cout<<"卖出西瓜的个数:"<

cout<<"卖出西瓜的总重量:"<

}

统计银行存款问题:设计一个程序,其中有三个类,即Cbank、Bbank、Gbank,分别为中国银行、工商银行、农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存储数。要求设计友元函数计算储户在这3家银行的总存款数

class Bbank

{

private:

static float balance;

public:

friend class Cbank;

friend class Gbank;

void StoreMoney(float m);

void withdrawal(float m);

friend float TotalMoney(Cbank cb,Bbank bb,Gbank gb); };

#include "Bbank.h"

float Bbank::balance =0;

void Bbank::StoreMoney (float m)

{

balance+=m;

}

void Bbank::withdrawal (float m)

{

balance-=m;

}

class Cbank

{

private:

static float balance;

public:

friend class Bbank;

friend class Gbank;

void StoreMoney(float m);

void withdrawal(float m);

friend float TotalMoney(Cbank cb,Bbank bb,Gbank gb); };

#include "Cbank.h"

float Cbank::balance =0;

void Cbank::StoreMoney (float m)

{

balance+=m;

}

void Cbank::withdrawal (float m)

{

balance-=m;

}

class Gbank

{

private:

static float balance;

public:

friend class Cbank;

friend class Bbank;

void StoreMoney(float m);

void withdrawal(float m);

friend float TotalMoney(Cbank cb,Bbank bb,Gbank gb); };

#include "Gbank.h"

float Gbank::balance =0;

void Gbank::StoreMoney (float m)

{

balance+=m;

}

void Gbank::withdrawal (float m)

{

balance-=m;

}

#include "iostream"

#include "Cbank.h"

#include "Bbank.h"

#include "Gbank.h"

using namespace std;

float TotalMoney(Cbank cb,Bbank bb,Gbank gb)

{

return cb.balance +bb.balance +gb.balance ;

}

void main()

Cbank cb;

Bbank bb;

Gbank gb;

cb.StoreMoney (15.6f);

bb.StoreMoney (56.6f);

gb.StoreMoney (25.6f);

cout<

}

? 编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9.

#include

using namespace std;

int swapFtoC(float f)

{

int c;

c=(f-32)*5/9;

return c;

}

int main()

{

float f,c;

cout<<"请输入华氏温度"<

cin>>f;

c=swapFtoC(f);

cout<<"摄氏温度为:"<

return 0;

}

? 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个又精度数的最大值

#include

using namespace std;

int max(int a,int b)

{

return a>b?a:b;

}

int max(int a,int b,int c)

{

return c>(a>b?a:b)?c:(a>b?a:b);

double max(double a,double b)

{

return a>b?a:b;

}

double max(double a,double b,double c)

{

return c>(a>b?a:b)?c:(a>b?a:b);

}

int main()

{

int a=5,b=12,c=7;

double f=2.5,d=15.2,e=12.5;

cout<<"整数a与b的最大值:"<

cout<<"整数a,b和c的最大值:"<

cout<<"双精度数d与e的最大值:"<

cout<<"双精度数d,e和f的最大值:"<

}

? 使用系统函数pow(x,y)计算x?y的值,注意包含头文件cmath #include

#include

using namespace std;

int main()

{

int x,y;

cout<<"请输入x的值:";

cin>>x;

cout<<"请输入x的y次方的值:";

cin>>y;

cout<<'\n'<<"x的y次方为"<

}

? 用递归的方法编写函数求Fibonacci级数、观察递归调用的过程#include

using namespace std;

int Fibonacci(int array[],int n)

{

if(n==0)

return array[0]=0;

else if(n==1)

return array[1]=1;

else

return Fibonacci(array,n-1)+Fibonacci(array, n-2);

}

int main()

{

int array[20]={0},c;

for(int i=0;i<20;i++)

{

c=Fibonacci(array,i);

cout<

}

}

(1) 编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵#include

using namespace std;

const int N=3;

void TransformArray(int Array[][N], int n )

{

int i,j;

for( i=0;i

for( j=0;j

{int t=Array[i][j];

Array[i][j]=Array[j][i];

Array[j][i]=t;

}

}

void main()

{

int array[3][N];

int (*point)[N];

point=array;

int *p[3];

p[0]=array[0];

p[1]=array[1];

p[2]=array[2];

for( int i=0;i<3;i++)

for( int j=0;j

cin>>*(*(point+i)+j);

cout<<"原来的数组"<

for( i=0;i<3;i++)

{

for(int j=0;j

cout<

cout<

}

TransformArray(array,3);

cout<<"转置后的数组"<

for( i=0;i<3;i++)

{

for(int j=0;j

cout<<*(*(p+i)+j)<<" ";

cout<

}

}

(2) 使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能说明:

A可作成一维动态数组int *p=new array[3*3]。;也可作为二维动态数组:

B Int (*p)[3]=new array[3][3],int n=3;int (*p)=array[n][3].

C 若想行数列数都做成变量,需定义成:

Int m,n; int **p=new int *[m];for(i=0;i

释放时,是for(i=0;i

建议使用a 或b,c较难,有兴趣的同学可以尝试

#include "iostream.h"

/*void transformarray(int **p,int **p2,int n)

{

for(int i=0;i

for(int j=0;j

p2[i][j]=p[j][i];

}*/

void transformarray(int **p,int **p2,int m,int n) {

for(int i=0;i

for(int j=0;j

p2[j][i]=p[i][j];

}

void main()

{ //int (*point)[3],(*point2)[3];

int m,n,i,j;

/*int i1[]={1,2,3};

int i2[]={4,5,6};

int i3[]={7,8,9};*/

cout<<"请输入M:";

cin>>m;

cout<<"\n请输入N:"<

cin>>n;

int **p=new int*[m],**p2=new int*[m];

//cout<

for(i=0;i

p[i]=new int[n];

for(i=0;i

p2[i]=new int[n];

for(i=0;i

for(j=0;j

cin>>p[i][j];

/*p[0]=i1;

p[1]=i2;

p[2]=i3;*/

// point=new int[n][3];

// point2=new int[n][3];

/*for( i=0;i

for( j=0;j

cin>>p[i][j];*/

//transformarray(point,point2,n);

transformarray(p,p2,m,n);

/* for( i=0;i

for( j=0;j<3;j++)

cout<

/*delete[] point;

delete[] point2;*/

for( i=0;i

for( j=0;j

cout<

for(i=0;i

delete p[i];

delete []p;

for(i=0;i

delete []p2[i];

delete []p2;

}

编程实现两字符串的连接,要求分别使用字符数组保存字符串(不要使用系统函数)和用string类声明字符串对象,(使用string类需包含string库)

#include "iostream.h"

void StrConnect(char *c1,char *c2)

{

while(*c1++!='\0');

c1--;

while(*c2!='\0')*c1++=*c2++;

}

void main()

{

char c3[20]={'i','a','m','a'};

char c4[6]={'b','o','y'};

StrConnect(c3,c4);

for(int i=0;i<20&&c3[i]!='\0';i++)

cout<

}

#include "iostream.h"

#include "String.h"

void main()

{

char c3[20]={'i','a','m','a'};

char c4[6]={'b','o','y'};

strcat(c3,c4);

for(int i=0;i<20&&c3[i]!='\0';i++)

cout<

}

定义对象数组,类的定义与要求同4-10

void main()

{

int n;

cin>>n;

Person *p=new Person[n];

char sex[2];

int personnum;

Date dd;

int year,month,day;

int id;

for(int i=0;i

{

cout<<"请输入员工的编号:"<

cin>>personnum;

p[i].SetPersonNumber(personnum);

cout<<"请输入员工的性别:"<

cin>>sex;

p[i].SetSex (sex);

cout<<"请输入员工的出生年月:"<

cin>>year>>month>>day;

dd.SetY ear (year);

dd.SetMonth (month);

dd.SetDay (day);

p[i].SetDate(dd);

cout<<"请输入员工的身份证号:"<

cin>>id;

p[i].SetID(id);

cout<

}

for(int j=0;j

{

cout<

cout<

cout<

cout<

}

}

王婆卖瓜的动态实现

#include "iostream"

using namespace std;

class Watermelon

{

private :

//float weight;

static float totalweight;

static int amount;

public:

Watermelon();

void SellOneWatermelon(float w);

void WithdrawWatermelon(float w);

int SellWatermelonAmount();

float SellWaterToalWeight();

};

int Watermelon::amount =0;

float Watermelon::totalweight =0.0f;

void Watermelon::SellOneWatermelon(float w) {

amount++;

totalweight+=w;

}

void Watermelon::WithdrawWatermelon(float w) {

amount--;

totalweight-=w;

}

int Watermelon::SellWatermelonAmount() {

return amount;

}

float Watermelon::SellWaterToalWeight()

{

return totalweight;

}

Watermelon::Watermelon()

{

}

void main()

{

int n;

cin>>n;

float f;

Watermelon *wm=new Watermelon[n];

for(int i=1;i<=n;i++)

{

cout<<"第"<

cout<<"卖出第一个瓜的重量";

cin>>f;

wm[i].SellOneWatermelon (f);

cout<<"卖出第二个瓜的重量";

cin>>f;

wm[i].SellOneWatermelon(f);

cout<<"卖出西瓜的个数:"<

cout<<"卖出西瓜的总重量:"<

cout<<"被退回瓜的重量"<

cin>>f;

wm[i].WithdrawWatermelon (15.2f);

cout<<"卖出西瓜的个数:"<

cout<<"卖出西瓜的总重量:"<

}

}

? 声明Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――“(自减)运算符,实现对坐标值的改变。(用成员函数实现)重载”+”运算符,实现对两个点的x,y成员分别相加。(用友元函数实现)。

#include

using namespace std;

class Point

{

private:

int x;

int y;

public:

Point()

{

}

Point(int xx,int yy)

{

x=xx;

y=yy;

}

Point& operator ++();

Point operator ++(int);

void show()

{

cout<<"x:"<

}

};

Point& Point::operator ++()

{

x++;

y++;

return *this;

}

Point Point::operator ++(int)

{

Point pt=*this;

++(*this);

return pt;

}

void main()

{

Point pt(5,5);

pt++;

pt.show();

++pt;

pt.show();

}

#include

//using namespace std;

class Point

{

private:

int x;

int y;

public:

相关文档