C++例题.docx
- 文档编号:12128975
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:21
- 大小:20.90KB
C++例题.docx
《C++例题.docx》由会员分享,可在线阅读,更多相关《C++例题.docx(21页珍藏版)》请在冰豆网上搜索。
C++例题
例1:
创建一个employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。
把构造函数、changname()、display()的函数的原型放在类定义中,构造函数初始化每个成员,display()函数把完整的对象数据打印出来。
其中的数据成员是保护的,函数是公共的。
#include
#include
{
protected:
charname[10];//姓名
charstreet[20];//街道地址
charcity[10];//市
charprov[10];//省
charpost[7];//邮政编码
intno;//记录序号
public:
employee(char[],char[],char[],char[],char[],int);
voidchangename(charstr[]);
voiddisplay();
};
employee:
:
employee(charn[],chars[],charc[],
charp1[],charp2[],intnum){
strcpy(name,n);
strcpy(street,s);
strcpy(city,c);
strcpy(prov,p1);
strcpy(post,p2);
no=num;
}
voidemployee:
:
changename(charn[])
{
strcpy(name,n);
}
voidemployee:
:
display()
{
cout<<"输出记录"< cout<<"姓名: "< cout<<"街道地址: "< cout<<"市: "< cout<<"省: "< cout<<"邮政编码"< } voidmain() { employeeobj1("王华","中华路15号","武汉市", "湖北省","430070",1); employeeobj2("杨丽","天津路30号","南京市", "江苏市","210020",2); obj1.display(); obj2.display(); } 本程序的执行结果如下: 输出记录1 姓名: 王华 街道地址: 中华路15号 市: 武汉市 省: 湖北省 邮政编码: 430070 输出记录2 姓名: 杨丽 街道地址: 天津路30号 市: 南京市 省: 江苏省 邮政编码: 210020 例2: 分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。 要求最后的结果为最简分数形式。 试建立一个分数类Fract,完成两个分数相加的功能。 具体要求如下: (1)私有数据成员 intnum,den;//num为分子,den为分母 (2)公有成员函数 Fract(inta=0,intb=1): 构造函数,用a和b分别初始化分子num、分母den; intged(intm,intn): 求m、n的最大公约数。 此函数供成员函数add()调用; Fractadd(Fractf): 将参数分数f与对象自身相加,返回约简后的分数对象; voidshow(): 按照num/den的形式在屏幕上显示分数。 (3)在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。 #include classFract{ intnum,den; public: Fract(inta=0,intb=1); intged(int,int); Fractadd(Fract); voidshow(); } }; Fract: : Fract(inta=0,intb=1){ num=a;den=b; } intFract: : ged(intm,intn){ intk; if(m>n)k=n; elsek=m; for(;k>0;k--) if(m%k==0&&n%k==0) returnk; } FractFract: : add(Fractf){ Fractff; intv; v=ged(den,f.den); v=den*f.den/v; num=v/den*num; f.num=v/f.den*f.num; ff.num=num+f.num; ff.den=v; v=ged(ff.num,ff.den); ff.num/=v; ff.den/=v; returnff; } voidFract: : show(){ cout< } voidmain(){ Fractf1(1,5),f2(7,20),f3; f3=f1.add(f2); f3.show(); } 例3: 由一个已知一维数组派生出另一个一维数组的派生规则如下: 新数组的每一元素等于原始数组的对应元素及其相邻两元素的平均值。 其中第0个元素的左邻元素约定为最后一个元素,最后一个元素的右邻元素约定为第0个元素。 假设原始数组为a[10],则b[0]=(a[9]+a[0]+a[1])/3,b[1]=(a[0]+a[1]+a[2])/3,b[2]=(a[1]+a[2]+a[3])/3,¼,b[9]=(a[8]+a[9]+a[0])/3。 试建立一个实现此功能的类ARRAY。 具体要求如下: (1)私有数据成员 floata[10],b[10];a存放原始数组,b存放派生数组。 (2)公有成员函数 ARRAY(floatt[10]): 构造函数,初始化成员数组a; voidprocess(): 由数组a根据上述派生规则,用循环语句计算数组b的各元素; voidprint(): 屏幕显示数组a和b。 (3)在主程序中对该类进行测试。 使用测试数据 {0,3,6,9,12,15,18,21,24,27}。 #include classARRAY{ floata[10],b[10]; public: ARRAY(floatt[10]); voidprocess(); voidprint(); }; ARRAY(floatt[10]){ for(inti=0;i<10;i++)a[i]=t[i]; } voidARRAY: : process(){ intI,j,k; for(i=0;i<10;i++){ j=i-1; k=i+1; if(j<0)j=10+j; if(k>9)k=10-k; b[i]=(a[j]+a[i]+a[k])/3; } } voidARRAY: : print(){ for(inti=0;i<10;i++){ if(i%10==5)cout<<’\n’;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 例题