1、单类程序设计1题目:定义一个描述学生基本情况的类Student,数据成员包括学号、C+成绩、英语和数学成绩,成员函数包括获取学号、求出总成绩和平均成绩,格式: long getID() int sum ()double avg ()#include using namespace std;/*Program*/ class Student long ID,c,e,m;public:Student(long _ID,long _c,long _e,long _m)ID=_ID;c=_c;e=_e;m=_m;long getID()return ID;int sum () return c+e+m
2、;double avg ()return (c+e+m)/3;/* End */void main(void) Student s(201211145, 90, 80, 97); coutID:s.getID()endl; couttThe sum of source:s.sum()endl; couttThe avg of source:s.avg()endl;2题目:定义一个处理日期的类TDate,它有3个私有数据成员:Day, Month, Year,并实现如下要求:构造函数重载,缺省的年月日置0; TDate() TDate(int day) TDate(int day, int mo
3、nth) TDate(int day, int month, int year) #include using namespace std;class TDate int Day, Month, Year;/*Program*/public:public: TDate () Day=0; Month=0; Year=0; ; TDate (int day) Month=0; Year=0; Day=day; TDate (int day, int month) Year=0; Day=day; Month=month; TDate (int day, int month, int year)
4、Day=day; Month=month; Year=year; /* End */ void display() if(Day+Month+Year=0) cout日期无效endl; else cout今天是; if(Year!=0) coutYear年; if(Month!=0) coutMonth月; if(Day!=0) coutDay日endl; ;/end class TDate void main(void) TDate d1,d2(24),d3(24,3),d4(24,3,2012); d1.display (); d2.display (); d3.display (); d
5、4.display ();/*-3题目:定义一个三角形类Ctriangle,求三角形面积和周长#include #include using namespace std; class Ctriangle private: double a,b,c; public: Ctriangle(double x,double y,double z) a=x;b=y;c=z; double GetZhouChang(); double GetArea(); void display() coutCtriangle:a=a,b=b,c=cendl; coutZhouChang:GetZhouChang()e
6、ndl; coutArea:GetArea()endl; ; /*Program*/double Ctriangle :GetZhouChang() return a+b+c; double Ctriangle :GetArea() double p=(a+b+c)/2; double t=p*(p-a)*(p-b)*(p-c); return sqrt(t) ; /* End */void main() Ctriangle T(3,4,5); T.display(); 4题目:定义个time类,其三个数据成员分别代表小时分秒,使其对象可以按格式“hh:mm:ss”显示时间。要求写一个带三个参
7、数的默认构造函数。#include using namespace std;/*Program*/class Time int h,m,s;public: Time(int ss=0,int mm=0,int hh=0) h=hh; m=mm; s=ss; void print(void);/* End */void Time:print(void) couth:m:sendl;void main(void) Time t1(27,37,5), t2(27,37), t3(27), t4; cout格式=hh:mm:ssendl; t1.print(); t2.print(); t3.prin
8、t(); t4.print();数组与指针1题目:有一个数组,内放10个整数,要求找出最小的数和它的下标,然后把它和数组中最前面的元素对换。#include #include using namespace std;void main() int a10; int i,min,j,temp;/min为最小值,j为最小值下标 cout请输入10个数n; for(i=0;iai;/*Program*/ min=a0;j=0; for(i=0;i10;i+) if(ai=min) j=i; min=ai; temp=aj;aj=a0;a0=temp;cout交换后数组endl; for(i=0;i1
9、0;i+) coutai ; coutendl;/* End */2题目:下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。请完成该函数。格式:int str_count(char *substr, char *str)输出结果见图:样张.JPG-*/#include #include using namespace std;/*Program*/int str_count(char *substr, char *str)int q=strlen(substr),p=strlen(str),a=0,w=0,y=0,b=0,o=0; fo
10、r(int i=0;ip;i+)/q,p表示字符串的长度 for(a=0;aq;a+)/先在字符串s中 int b=i; if(substra=strb)/当字符串ss的第一个字符与字符串s的第a个字符相等时; w+;b=b+1;/w表示字符串s中能与ss相等的数目; if(w=q) y+;w=0;/当又一次在s中寻找到ss时y+; continue; return y;/* End */void main(void) char ss100; char *s=ABCDabcd1234+-*/XYZxyz/ABCDabcd1234+-*/Aa1 ABCDabcd; cout母串=sendl; c
11、out待计数子串=; cin.getline(ss,99); cout子串在母串中共出现str_count(ss,s)次endl;3题目:定义一个函数min,求n个数中的平均值、最小数和其下标,并在主函数中打印平均值、最小数和下标。格式:int min(int *s, int n,double &aver)注意:如有多个最小值,以第一个为准。输出结果见图:样张.JPG-*/#include using namespace std;/*Program*/int min(int *s, int n,double &aver)int j=0,i;double sum=s0;for(i=1;in;i+
12、)sum+=si;if(sisj)j=i;aver=sum/n;return j;/* End */void main(void) int pos; double aver; int s10=34,12,83,56,29,93,56,12,88,72; int s13=12,83,56; int n=10; int i; pos=min(s,n,aver); coutn个数如下:endl; for(i=0;in;i+ ) coutsi ; coutn平均值=averendl; cout最小值=sposendl; cout位置=pos+1endl; n=3; pos=min(s1,n,aver)
13、; coutn个数如下:endl; for(i=0;in;i+ ) couts1i ; coutn平均值=averendl; cout最小值=s1posendl; cout位置=pos+1endl;4题目:输入一个16进制数,将其转换为10进制数输出结果见图:样张.JPG#include#includeusing namespace std;void main() char data164=A7; int data10=0,d; int i; /*Program*/ 方法1sscanf( data16, %X, &data10 );方法2/for(i=0;data16i!=0;i+)/ / d
14、=(data16i=0&data16i=9)/ ?data16i-0:data16i-A+10);/ data10=data10*16+d;/ /* End */ coutdata10endl;5题目:有一个34的矩阵,要求编写程序求出其中值最大的那个元素的值,以及其所在的行号和列号。运行结果见样张.JPG#include using namespace std;void main(void) int a34 = 1,3,5,6,8,10,11,9,18,13,14,15; int max; / 保存最大值 int n; / 保存最大值所在行的行号 int m; /保存最大值所在列的列号/*P
15、rogram*/ max=0; max=a00; for(int i=0;i3;i+)/i是行,三行四列;/这里的ij要注意顺序。 for(int j=0;jmax) max=aij; n=i; m=j;/* End */ couta34矩阵中最大的值为:maxendl; cout最大值行号:nendl; cout最大值列号:mendl;/*-数组与指针21题目:输入一个字符串,把其中的字符按逆序输出,如输入light,输出thgil.#include#includeusing namespace std;void main() char c,str=light; int i,length;
16、/*Program*/ int temp; int j=0; length=0; do if(strj!=0)/统计出字符串的长度; length+; j+; while(strj!=0); /coutlength; for(i=0;i(length-1)/2-1) strlength=0; break; /* End */ coutstrendl;2题目:m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,但score数组的数据为10、20、30、40、50、60、70、80、90时,函数返回
17、的人数应该时4,below中的数据应为10、20、30、40。输出结果见图:样张.JPG#include using namespace std;/*Program*/ int choose(int *grade,int N,int *below) int q=0,sum=0,ave=0; for(int i=0;iN;i+) sum=sum+gradei; ave=sum/N; int j=0,w=0; for(i=0;iN;i+) if(gradeiave) belowj=gradei; j+; w+; belowj+1=0;/添加结束符;这一步不能至于括号外 return w; /* E
18、nd */void main(void) const int N=9; int scoreN=10,20,30,40,50,60,70,80,90; int belowN=-1,-1,-1,-1,-1,-1,-1,-1,-1; int number,i; number=choose(score,N,below); cout低于平均分的人数=numberendl; cout低于平均分的分数=; for(i=0;inumber;i+) coutbelowi ; coutendl; 3题目:编写程序求解M*M矩阵的两条对角线上的元素之和。#include using namespace std;co
19、nst int M=5;void main(void) int minor; / 主对角线上元素之和 int leading; / 次对角线上元素之和 int aMM= 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(int i=0;i5;i+) minor=minor+aii; leading=leading+ai4-i;/* End */ cout主对角线上元素之和=leadingendl; cout次对角线上元
20、素之和=minorendl;4题目:有n个数,已按由小到大顺序排列好,要求输入一个数,把它插入到原有数列中,而且仍然保持有序,同时输出新的数列。输出结果见图:样张.JPG-*/#include #include using namespace std;void main() int i,n,j; int a11=10,20,30,40,50,60,70,80,90,100; for(i=0;i10;i+) coutai ; coutendl; coutn;/*Program*/ int s=0,d=0;/sum表示数列长度;do s+; d+; while(ad!=0); int sum=0;
21、/sum和s用两个变量较好。sum=s;asum=n;asum+1=0;int min=0,tep=0;for(i=0;i=sum;i+) min=i; for(j=i+1;jaj) min=j; tep=ai; ai=amin; amin=tep;cout插入后的数组endl;for(i=0;isum+1;i+)coutai ;coutendl; /* End */ 类的组合;1定义一个点类Point,包括x坐标和y坐标(int)。定义一个CRect类,代表一个矩形,要求CRect类中有代表矩形的左上角坐标(x1,y1)和右下角坐标(x2,y2)点类的对象,要求CRect类中有两个成员函数R
22、ectHeight()和RectWidth(),通过这两个函数能得到矩形的高和宽。(高和宽必须为非负数)输出结果见样张.JPG#include #include using namespace std;/*Program*/class Point public: int x,y; Point(int x1=0,int y1=0)x=x1;y=y1; void setP(int x1,int y1)x=x1;y=y1; ; class CRect Point lefttop,rightbottom; public: CRect(Point a,Point b):lefttop(a),rightb
23、ottom(b) CRect() void SetR(Point a,Point b)lefttop=a;rightbottom=b; int RectHeight() return fabs(lefttop.y-rightbottom.y); int RectWidth() return fabs(rightbottom.x-lefttop.x); ; /* End */int main() Point p1(1,9),p2(8,5),p3,p4; /p1-左上角坐标 1-x坐标 9-y坐标 p2-右下角坐标 8-x坐标 5-y坐标 CRect cr(p1,p2),cr1; coutHeight=cr.RectHeight()endl; /输出矩形高度 coutWidth=cr.RectWidth()endl; /输出矩形宽度 p3.setP(1,1);/改变p坐标 p4.setP(3,5); / 改变p4坐标 cr1.SetR(p3,p4)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1