单类程序设计.docx
- 文档编号:28244831
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:27
- 大小:42.07KB
单类程序设计.docx
《单类程序设计.docx》由会员分享,可在线阅读,更多相关《单类程序设计.docx(27页珍藏版)》请在冰豆网上搜索。
单类程序设计
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++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计