单类程序设计.docx

上传人:b****5 文档编号:28244831 上传时间:2023-07-09 格式:DOCX 页数:27 大小:42.07KB
下载 相关 举报
单类程序设计.docx_第1页
第1页 / 共27页
单类程序设计.docx_第2页
第2页 / 共27页
单类程序设计.docx_第3页
第3页 / 共27页
单类程序设计.docx_第4页
第4页 / 共27页
单类程序设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单类程序设计.docx

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

单类程序设计.docx

单类程序设计

1题目:

定义一个描述学生基本情况的类Student,数据成员包括学号、

C++成绩、英语和数学成绩,成员函数包括获取学号、求出总成绩和平均成绩,格式:

longgetID()

intsum()

doubleavg()

#include

usingnamespacestd;

/**********Program**********/

classStudent{

longID,c,e,m;

public:

Student(long_ID,long_c,long_e,long_m)

{ID=_ID;

c=_c;

e=_e;

m=_m;}

longgetID(){

returnID;

}

intsum(){

returnc+e+m;

}

doubleavg(){

return(c+e+m)/3;

}

};

/**********End**********/

voidmain(void)

{

Students(201211145,90,80,97);

cout<<"ID:

"<

cout<<"\tThesumofsource:

"<

cout<<"\tTheavgofsource:

"<

}2题目:

定义一个处理日期的类TDate,它有3个私有数据成员:

Day,Month,Year,

并实现如下要求:

构造函数重载,缺省的年月日置0;

TDate()

TDate(intday)

TDate(intday,intmonth)

TDate(intday,intmonth,intyear)

#include

usingnamespacestd;

classTDate{

intDay,Month,Year;

/**********Program**********/

public:

public:

TDate(){Day=0;Month=0;Year=0;};

TDate(intday)

{Month=0;Year=0;Day=day;}

TDate(intday,intmonth)

{Year=0;Day=day;Month=month;}

TDate(intday,intmonth,intyear)

{Day=day;Month=month;Year=year;}

 

/**********End**********/

voiddisplay(){

if(Day+Month+Year==0)cout<<"日期无效"<

else{

cout<<"今天是";

if(Year!

=0)cout<

if(Month!

=0)cout<

if(Day!

=0)cout<

}

}

};//endclassTDate

voidmain(void)

{

TDated1,d2(24),d3(24,3),d4(24,3,2012);

d1.display();

d2.display();

d3.display();

d4.display();

}

/*-------------------------------------------------------

3题目:

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

#include

#include

usingnamespacestd;

classCtriangle{

private:

doublea,b,c;

public:

Ctriangle(doublex,doubley,doublez)

{a=x;b=y;c=z;}

doubleGetZhouChang();

doubleGetArea();

voiddisplay()

{

cout<<"Ctriangle:

"<<"a="<

cout<<"ZhouChang:

"<

cout<<"Area:

"<

}

};

/**********Program**********/

doubleCtriangle:

:

GetZhouChang(){

returna+b+c;}

doubleCtriangle:

:

GetArea(){

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

doublet=p*(p-a)*(p-b)*(p-c);

returnsqrt(t);

}

/**********End**********/

voidmain()

{

CtriangleT(3,4,5);

T.display();

}

4题目:

定义个time类,其三个数据成员分别代表小时分秒,

使其对象可以按格式“hh:

mm:

ss”显示时间。

要求写一个带三个参数的默认构造函数。

#include

usingnamespacestd;

/**********Program**********/

classTime

{

inth,m,s;

public:

Time(intss=0,intmm=0,inthh=0){

h=hh;

m=mm;

s=ss;

}

voidprint(void);

};

/**********End**********/

voidTime:

:

print(void){

cout<

'<

'<

voidmain(void)

{

Timet1(27,37,5),t2(27,37),t3(27),t4;

cout<<"格式=hh:

mm:

ss"<

t1.print();

t2.print();

t3.print();

t4.print();

}

数组与指针

1

题目:

有一个数组,内放10个整数,要求找出最小的数和它的下标,

然后把它和数组中最前面的元素对换。

#include

#include

usingnamespacestd;

voidmain()

{

inta[10];

inti,min,j,temp;//min为最小值,j为最小值下标

cout<<"请输入10个数\n";

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

cin>>a[i];

/**********Program**********/

min=a[0];j=0;

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

{

if(a[i]<=min)

{j=i;

min=a[i];}

}

temp=a[j];

a[j]=a[0];

a[0]=temp;

cout<<"交换后数组"<

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

{cout<

cout<

/**********End**********/

}

2

题目:

下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,

则返回值0。

请完成该函数。

格式:

 intstr_count(char*substr,char*str)

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

/**********Program**********/

intstr_count(char*substr,char*str){

intq=strlen(substr),p=strlen(str),a=0,w=0,y=0,b=0,o=0;

for(inti=0;i

{

for(a=0;a

{intb=i;

if(substr[a]==str[b])//当字符串ss的第一个字符与字符串s的第a个字符相等时;

{w++;b=b+1;}//w表示字符串s中能与ss相等的数目;

if(w==q)

{y++;w=0;//当又一次在s中寻找到ss时y++;

}

continue;}

}

returny;

}

/**********End**********/

voidmain(void)

{

charss[100];

char*s="ABCDabcd1234+-*/XYZxyz/ABCDabcd1234+-*/Aa1ABCDabcd";

cout<<"母串="<

cout<<"待计数子串=";

cin.getline(ss,99);

cout<<"子串在母串中共出现"<

}

3

题目:

定义一个函数min,求n个数中的平均值、最小数和其下标,

并在主函数中打印平均值、最小数和下标。

格式:

intmin(int*s,intn,double&aver)

注意:

如有多个最小值,以第一个为准。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

usingnamespacestd;

/**********Program**********/

intmin(int*s,intn,double&aver){

intj=0,i;

doublesum=s[0];

for(i=1;i

{

sum+=s[i];

if(s[i]

j=i;

}

aver=sum/n;

returnj;

}

/**********End**********/

voidmain(void)

{

intpos;

doubleaver;

ints[10]={34,12,83,56,29,93,56,12,88,72};

ints1[3]={12,83,56};

intn=10;

inti;

pos=min(s,n,aver);

cout<

"<

for(i=0;i

cout<

cout<<"\n平均值="<

cout<<"最小值="<

cout<<"位置="<

n=3;

pos=min(s1,n,aver);

cout<

"<

for(i=0;i

cout<

cout<<"\n平均值="<

cout<<"最小值="<

cout<<"位置="<

}

4

题目:

输入一个16进制数,将其转换为10进制数

输出结果见图:

样张.JPG

#include

#include

usingnamespacestd;

voidmain()

{

chardata16[4]="A7";

intdata10=0,d;

inti;

/**********Program**********/

方法1sscanf(data16,"%X",&data10);

方法2//for(i=0;data16[i]!

='\0';i++)

//{

//d=((data16[i]>='0'&&data16[i]<='9')

//?

data16[i]-'0':

data16[i]-'A'+10);

//data10=data10*16+d;

//}

/**********End**********/

cout<

}

5

题目:

有一个3×4的矩阵,要求编写程序求出其中值最大的那个元素的值,

以及其所在的行号和列号。

运行结果见样张.JPG

#include

usingnamespacestd;

voidmain(void)

{

inta[3][4]={{1,3,5,6},{8,10,11,9},{18,13,14,15}};

intmax;//保存最大值

intn;//保存最大值所在行的行号

intm;//保存最大值所在列的列号

/**********Program**********/

max=0;

max=a[0][0];

for(inti=0;i<3;i++)//i是行,三行四列;//这里的ij要注意顺序。

{for(intj=0;j<4;j++)

{if(a[i][j]>max)

{max=a[i][j];

n=i;

m=j;}}}

/**********End**********/

cout<<"a[3][4]矩阵中最大的值为:

"<

cout<<"最大值行号:

"<

cout<<"最大值列号:

"<

}

/*-------------------------------------------------------

数组与指针2

1题目:

输入一个字符串,把其中的字符按逆序输出,如输入light,输出thgil.

#include

#include

usingnamespacestd;

voidmain()

{

charc,str[]="light";

inti,length;

/**********Program**********/

inttemp;

intj=0;

length=0;

do

{if(str[j]!

='\0')//统计出字符串的长度;

length++;j++;

}while(str[j]!

='\0');

//cout<

for(i=0;i

{temp=str[i];//倒序输出

str[i]=str[length-1-i];

str[length-1-i]=temp;

if(i>((length-1)/2-1))

{str[length]='\0';

break;}

}

/**********End**********/

cout<

}

2

题目:

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:

将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,

函数返回的人数应该时4,below中的数据应为10、20、30、40。

输出结果见图:

样张.JPG

#include

usingnamespacestd;

/**********Program**********/

intchoose(int*grade,intN,int*below)

{

intq=0,sum=0,ave=0;

for(inti=0;i

{sum=sum+grade[i];}

ave=sum/N;

intj=0,w=0;

for(i=0;i

{

if(grade[i]

{

below[j]=grade[i];

j++;

w++;

}

below[j+1]='\0';}//添加结束符;这一步不能至于括号外

returnw;

}

/**********End**********/

voidmain(void)

{constintN=9;

intscore[N]={10,20,30,40,50,60,70,80,90};

intbelow[N]={-1,-1,-1,-1,-1,-1,-1,-1,-1};

intnumber,i;

number=choose(score,N,below);

cout<<"低于平均分的人数="<

cout<<"低于平均分的分数=";

for(i=0;i

cout<

}

 

3

题目:

编写程序求解M*M矩阵的两条对角线上的元素之和。

#include

usingnamespacestd;

constintM=5;

voidmain(void)

{

intminor;//主对角线上元素之和

intleading;//次对角线上元素之和

inta[M][M]={

{1,2,3,4,5},

{6,7,8,9,10},

{11,12,13,14,15},

{16,17,18,19,20},

{21,22,23,24,25}

};

/**********Program**********/

minor=0;

leading=0;

for(inti=0;i<5;i++)

{

minor=minor+a[i][i];

leading=leading+a[i][4-i];

}

/**********End**********/

cout<<"主对角线上元素之和="<

cout<<"次对角线上元素之和="<

}

4

题目:

有n个数,已按由小到大顺序排列好,要求输入一个数,把它插入到原有数列中,

而且仍然保持有序,同时输出新的数列。

输出结果见图:

样张.JPG

-------------------------------------------------------*/

#include

#include

usingnamespacestd;

voidmain()

{

inti,n,j;

inta[11]={10,20,30,40,50,60,70,80,90,100};

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

cout<

cout<

cout<<"输入插入数\n";

cin>>n;

/**********Program**********/

ints=0,d=0;//sum表示数列长度;

do

{

s++;d++;

}while(a[d]!

='\0');

intsum=0;//sum和s用两个变量较好。

sum=s;

a[sum]=n;

a[sum+1]='\0';

intmin=0,tep=0;

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

{

min=i;

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

{if(a[min]>a[j])

{min=j;

tep=a[i];

a[i]=a[min];

a[min]=tep;}

}}

cout<<"插入后的数组"<

for(i=0;i

cout<

cout<

/**********End**********/

}

 

类的组合;1定义一个点类Point,包括x坐标和y坐标(int)。

定义一个CRect类,代表一个矩形,

要求CRect类中有代表矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)点类的对象,

要求CRect类中有两个成员函数RectHeight()和RectWidth(),通过这两个函数能得到

矩形的高和宽。

(高和宽必须为非负数)

输出结果见样张.JPG

#include

#include

usingnamespacestd;

/**********Program**********/

classPoint

{

public:

intx,y;

Point(intx1=0,inty1=0){x=x1;y=y1;}

voidsetP(intx1,inty1){x=x1;y=y1;}

};

classCRect

{

Pointlefttop,rightbottom;

public:

CRect(Pointa,Pointb):

lefttop(a),rightbottom(b){}

CRect(){}voidSetR(Pointa,Pointb){lefttop=a;rightbottom=b;}

intRectHeight()

{returnfabs(lefttop.y-rightbottom.y);}

intRectWidth()

{returnfabs(rightbottom.x-lefttop.x);

}};

/**********End**********/

intmain()

{

Pointp1(1,9),p2(8,5),p3,p4;//p1-左上角坐标1-x坐标9-y坐标p2-右下角坐标8-x坐标5-y坐标

CRectcr(p1,p2),cr1;

cout<<"Height="<

cout<<"Width="<

p3.setP(1,1);//改变p坐标

p4.setP(3,5);//改变p4坐标

cr1.SetR(p3,p4)

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

当前位置:首页 > 总结汇报 > 学习总结

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

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