C++语言程序设计上机实验.docx

上传人:b****5 文档编号:4042546 上传时间:2022-11-27 格式:DOCX 页数:27 大小:20.93KB
下载 相关 举报
C++语言程序设计上机实验.docx_第1页
第1页 / 共27页
C++语言程序设计上机实验.docx_第2页
第2页 / 共27页
C++语言程序设计上机实验.docx_第3页
第3页 / 共27页
C++语言程序设计上机实验.docx_第4页
第4页 / 共27页
C++语言程序设计上机实验.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C++语言程序设计上机实验.docx

《C++语言程序设计上机实验.docx》由会员分享,可在线阅读,更多相关《C++语言程序设计上机实验.docx(27页珍藏版)》请在冰豆网上搜索。

C++语言程序设计上机实验.docx

C++语言程序设计上机实验

C++程序语言设计上机实验

2009/4-6

实验一

/*******************************************

*程序文件名:

1.cpp*

*功能:

设计一个函数,判断一整数是否为素数。

*

*设计者:

xlj*

*时间:

4-16-2009*

*******************************************/

#include

usingnamespacestd;

intfun(intx)

{

inti,a;

for(i=2;i

if(x%i==0){a=0;break;}

elsea=1;

returna;

}

voidmain()

{

intn,b;

cout<<"请输入一个整数n"<

cin>>n;

b=fun(n);

if(b==1)

cout<

if(b==0)

cout<

}

运行结果

请输入一个整数n

3

3是素数

请输入一个整数n

69

69不是素数

请输入一个整数n

-9

Pressanykeytocontinue

/*2、用一个函数名编写几个分别计算圆、矩形、梯形和三角形面积的函数。

(注释:

(1)对于三角形,可以直接通过三角形的底边长和高来求三角形面积;

(2)在默认情况下,圆的半径值为1;矩形的边长为1;

三角形的底边长为2,高为1;

梯形的上底长为1,下底长为2,高为1)*/

#include

usingnamespacestd;

doubleyuan(intr)

{doubles;

s=3.14*r*r;

returns;}

doublejuxing(inta,intb)

{doubles;

s=a*b;

returns;}

doubleadd(inta,intb,inth)

{doubles;

s=(a+b)*h/2.0;

returns;}

doubleadd(inta,inth)

{doubles;

s=a*h/2;

returns;}

voidmain()

{cout<<"圆面积"<

(1)<

cout<<"矩形面积"<

cout<<"梯形面积"<

cout<<"三角形面积"<

}

运行结果

圆面积3.14

矩形面积1

梯形面积1.5

三角形面积1

Pressanykeytocontinue

实验二

/*1、编写程序,其中包含三个重载的min()函数:

min函数带有三个参数。

第一个min函数输出它的三个double型参数中的最小值;

第二个min函数输出它的三个char型参数中的最小值;

第一个min函数输出它的三个int型参数中的最小值;

在主函数中,分别通过键盘输入三个int型数、三个double型数和三个char型数,

并通过min函数求出其中的最小值。

*/

#include

usingnamespacestd;

intmin(intx,inty,intz)

{

ints;

s=(x>y)?

y:

x;

s=(s>z)?

z:

s;

returns;

}

doublemin(doublex,doubley,doublez)

{

doubles;

s=(x>y)?

y:

x;

s=(s>z)?

z:

s;

returns;

}

charmin(charx,chary,charz)

{

chars;

s=(x>y)?

y:

x;

s=(s>z)?

z:

s;

returns;

}

voidmain()

{

inta,b,c;

doublea1,b1,c1;

chara2,b2,c2;

cout<<"请输入inta,b,c"<

cin>>a>>b>>c;

cout<<"最小值为"<

cout<<"请输入doublea1,b1,c1"<

cin>>a1>>b1>>c1;

cout<<"最小值为"<

cout<<"请输入chara2,b2,c2"<

cin>>a2>>b2>>c2;

cout<<"最小值为"<

}

运行结果

请输入inta,b,c

261

最小值为1

请输入doublea1,b1,c1

2.31.23.6

最小值1.2

请输入chara2,b2,c2

aw5

最小值为5

Pressanykeytocontinue

/*2、将上题改用函数模板的方法来解决。

*/

#include

usingnamespacestd;

template

Tmin(Tx,Ty,Tz)

{

Ts;

s=(x>y)?

y:

x;

s=(s>z)?

z:

s;

returns;

}

voidmain()

{

doublea,b,c;

inta1,b1,c1;

chara2,b2,c2;

cout<<"请输入三个double数"<

cin>>a>>b>>c;

cout<<"最小值为"<

cout<<"请输入三个int数"<

cin>>a1>>b1>>c1;

cout<<"最小值为"<

cout<<"请输入三个char数"<

cin>>a2>>b2>>c2;

cout<<"最小值为"<

}

实验三

/*1、编写程序,从键盘分别输入十个int型数据、

十个double型数据和十个char型数据,

对其分别进行冒泡方法和选择方法的排序,

并输出排序后的结果。

(要求用函数模板来实现)*/

#include

usingnamespacestd;

template

voidfun(Tb[])

{

inti,j;

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

for(j=i+1;j<10;j++)

if(b[i]

{

Tt;

t=b[i];

b[i]=b[j];

b[j]=t;//选择排序法

}

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

cout<

}

voidmain()

{

inti;

inta1[10];

doublea2[10];

chara3[10];

cout<<"请输入十个int数据"<

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

cin>>a1[i];

fun(a1);

cout<<"请输入十个double数据"<

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

cin>>a2[i];

fun(a2);

cout<<"请输入十个char数据"<

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

cin>>a3[i];

fun(a3);

}

运行结果

请输入十个int数据

0123456789

9876543210

请输入十个double数据

1.22.33.44.55.66.77.88.99.110.2

10.29.18.97.86.75.64.53.42.31.2

请输入十个char数据

ielsaopnms

ssponmliea

Pressanykeytocontinue

将fun()函数换成如下格式,结果一样:

voidfun(Tb[])

{

inti,j;

Tt;

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

for(j=0;j<9-i;j++)

if(b[j]

{t=b[j];b[j]=b[j+1];b[j+1]=t;}//冒泡排序法

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

cout<

}

实验四

/*1、编写程序,输入三个整数,将它们按由大到小的顺序输出。

要求形参分别使用变量的引用和变量的指针。

*/

#include

usingnamespacestd;

voidfun1(int&a,int&b,int&c)

{

intt,y;

if(a

{t=b;b=a;a=t;}

if(a

{t=c;c=a;a=t;}

if(b

{y=c;c=b;b=y;}

}

voidfun2(int*a,int*b,int*c)

{

intt,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;}

}

voidmain()

{

inta,b,c,x,y,z;

cout<<"请输入三个整数"<

cin>>a>>b>>c;

cout<<"引用法:

"<

fun1(a,b,c);

cout<

cin>>x>>y>>z;

cout<<"指针法:

"<

fun2(&x,&y,&z);

cout<

}

运行结果

请输入三个整数

254512

引用法:

452512

996975

指针法:

997569

Pressanykeytocontinue

/*2、编写一程序,将字符数组s2中的全部字符复制到字符数组s1中,不用strcpy函数。

复制时,'\0'也要复制过去。

'\0'后面的字符不复制。

*/

#include

usingnamespacestd;

voidmain()

{

inti,j,k,w;

chars1[5],s2[5];

cout<<"请输入字符串:

"<

cout<<"s1[5]=";

for(w=0;w<5;w++)

cin>>s1[w];

cout<<"s2[5]=";

for(k=0;k<5;k++)

cin>>s2[k];

cout<<"将s2中字符复制s1中后s1变为"<

for(i=0;s2[i]!

='\0';i++)

s1[i]=s2[i];

s1[i+1]='\0';

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

cout<

cout<

}

运行结果

请输入字符串:

s1[5]=abcde

s2[5]=12345

将s2中字符复制s1中后s1变为

12345

Pressanykeytocontinue

/*3、编写一程序实现将用户输入的字符串中所有的字符"c"删除,并输出结果。

*/

#include

voidfun(chara[])

{

inti,j;

for(i=0;a[i]!

='\0';i++)

if(a[i]=='c')

for(j=i;a[j]!

='\0';j++)

a[j]=a[j+1];

for(i=0;a[i]!

=0;i++)

cout<

}

voidmain()

{

inti;

chara[20];

cin>>a;

fun(a);

}

运行结果

Abcdeci2345ccjk

Abdei2345jk

Pressanykeytocontinue

实验五

实验目的

1.掌握类与对象的定义与使用方法

2.掌握类中不同访问权限的成员的使用方法。

/*

(1)定义一个三角形类Ctriangle,求三角形面积和周长。

*/

#include

#include

usingnamespacestd;

classCtriangle

{

private:

doublea,b,c;

public:

voidlongth(doublea,doubleb,doublec)

{

cout<<"周长为"<<(double)(a+b+c)<

}

voidarea(doublea,doubleb,doublec)

{

doublep,q;//l为二分之周长

p=(a+b+c)/2;

q=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<"面积为"<

}

};

voidmain()

{

doublea,b,c;

cout<<"请输入三边边长"<

cin>>a>>b>>c;

Ctrianglem;

m.longth(a,b,c);

m.area(a,b,c);

}

运行结果

请输入三边边长

5.62.96.8

周长为15.3

面积为7.95727

Pressanykeytocontinue

/*

(2)设计一个学生类Cstudent,该类

包括学生学号、姓名以及数学、英语、c语言成绩等数据成员;

包括设置学生每门课成绩的函数setScore;

计算三门课程平均成绩的函数average;

计算三门课程总成绩的函数sum;

显示学生数据信息的函数print。

编写主函数,完成对类的使用。

*/

方法一

#include

usingnamespacestd;

classCstudent

{

private:

intm;

charn[4];

doublea,b,c;

public:

voidsetScore(intx,inty,intz)

{

a=x;

b=y;

c=z;

}

voidaverage()

{

cout<<"三门课平均成绩为"<<(double)(a+b+c)/3;

}

voidsum()

{

cout<<"三门课程总成绩"<<(double)(a+b+c);

}

voidprint(intno,charn0[])

{

inti;

m=no;

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

n[i]=n0[i];

cout<<"学号"<

cout<<"姓名";

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

cout<

cout<<"数学"<<":

"<

"<

"<

}

};

voidmain()

{

intx,y,z,i,no;

charn0[4];

cout<<"学号";

cin>>no;

cout<<"姓名";

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

cin>>n0[i];

cout<<"三科成绩";

cin>>x>>y>>z;

Cstudentw;

w.setScore(x,y,z);

w.average();

w.sum();

w.print(no,n0);

}

方法二

#include

usingnamespacestd;

classCstudent

{

private:

intnum;

charname[10];

doublea,b,c;

public:

voidsetScore()

{

cout<<"输入学生学号:

";

cin>>num;

cout<<""<<"姓名:

";

cin>>name;

cout<<""<<"数学、英语、C语言成绩依次为";

cin>>a>>b>>c;

}

voidaverage()

{

cout<<"三门课平均成绩为"<<(double)(a+b+c)/3<

}

voidsum()

{

cout<<"三门课程总成绩"<<(double)(a+b+c)<

}

voidprint()

{

cout<<"《学生信息》"<

cout<<"学号"<

"<

cout<<"数学"<

average();

sum();

}

};

voidmain()

{

Cstudentw;

w.setScore();

w.average();

w.sum();

w.print();

}

运行结果

输入学生学号:

33

姓名:

任我行

数学,英语,c语言成绩依次为948784

三门课平均成绩为88.3333

三门课程总成绩265

《学生信息》

学号33姓名:

任我行

数学94英语87c语言84

三门课平均成绩为88.3333

三门课程总成绩265

Pressanykeytocontinue

实验六(类的定义与构造函数的使用)

实验目的:

1.掌握类与对象的定义与使用方法

2.掌握类的构造函数、析构函数、拷贝构造函数的使用方法。

(1)设计一个学生类,包括学生学号、数学、英语、c语言成绩等数据成员;包括设置学生每门课成绩的函数setScore();计算三门课程平均成绩的函数average();计算三门课程总成绩的函数sum;显示学生数据信息的函数print()。

编写主函数,完成对类的使用。

(2)针对上一个程序中建立的类,加入两个构造函数,分别用来创建带参对象和无参对象;加入一个拷贝构造函数,用来完成同类对象的初始化工作。

(3)针对上一个程序中建立的类,再加入一个析构函数,然后在程序中建立两个全局对象,建立两个局部对象,观察构造函数与析构函数的调用顺序。

实验七

实验目的

1.掌握组合类的定义与使用方法

2.掌握组合类的构造函数的使用方法

1#include

usingnamespacestd;

classClock

{

private:

intH,M,S;

public:

voidShowTime()

{

cout<

"<

"<

}

voidSetTime(intH=0,intM=0,intS=0)

{

this->H=H,this->M=M,this->S=S;

}

Clock(intH=0,intM=0,intS=0)

{

this->H=H,this->M=M,this->S=S;

}

intGetH()

{

returnH;

}

intGetM()

{

returnM;

}

intGetS()

{

returnS;

}

};

classTrainTrip

{

private:

char*TrainNo;

ClockStartTime;

ClockEndTime;

public:

TrainTrip(char*TrainNo,ClockS,ClockE)

{

this->TrainNo=TrainNo;

StartTime=S;

EndTime=E;

}

ClockTripTime()

{

inttH,tM,tS;

intcarry=0;

ClocktTime;

(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);

returntTime;

}

};

voidmain()

{

ClockC1(8,10,10),C2(6,1,2);

ClockC3;

TrainTripT1("K16",C1,C2);

C3=T1.TripTime();

C3.ShowTime();

}

运行结果

21:

50:

52

Pressanykeytocontinue

实验八

实验目的

1.掌握类静态成员的定义与使用方法

2.掌握公有派生类的定义与使用方法

1、参考教材p226例7-9,验证类的静态数据成员的共享性。

例7-9使用静态成员维护内存中Student类对象的个数(对象计数器)

#include

usingnamespacestd;

classStudent

{

private:

char*Name;

intNo;

staticintcountS;

public:

staticintGetCount()

{

returncountS;

}

Student(char*="",int=0);

Student(Student&);

~Student();

};

Student:

:

Student(char*Name,intNo)

{

this->Name=newchar[strlen(Name)+1];

strcpy(this->Name,Name);

this->No=No;

++countS;

cout<<"constructing:

"<

}

Student:

:

Student(Student&r)

{

Name=newchar[strlen(r.Name)+1];

strcpy(Name,r.Name);

No=r.No;

++countS;

cout<<"copyconstructing:

"<

}

Student:

:

~Student()

{

cout<<"destructing:

"<

delete[]Name;

--countS;

}

intStudent:

:

countS=0;

voidmain()

{

cout<

:

GetCount()<

Students1("Antony");///

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1