C++数据的抽象与封装:类与对象(1)
程序员文章站
2022-04-14 10:18:35
题目内容:设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。//根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函...
题目内容:设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。//根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数register()。
//1设计person类(20分) //题目内容: //设计一个person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。 //根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数register()、showme()来访问这些属性,在register()函数中对数据成员进行初始化。person1通过cin来得到信息,person2通过register("zhang3", //19, 'm') 来得到信息。 // //输入格式 : //person1的信息 // //输出格式: //person1和person2的信息 // //输入样例: //li4 18 f // //输出样例: //li4 18 f //zhang3 19 m #include #include "string.h" using namespace std; class person { private: char name[5]; int age; char sex; public: void register(char* _name, int _age, char _sex); void showme(); }; void person::register(char* _name, int _age, char _sex) { strcpy(name, _name); age = _age; sex = _sex; } void person::showme() { cout << name << " " << age << " " << sex << endl; } int main() { person person1, person2; person2.register("zhang3", 19, 'm'); char name[5]; int age; char sex; cin >> name >> age >> sex; person1.register(name, age, sex); person1.showme(); person2.showme(); system("pause"); return 0; }
//2设计dog类(20分) //题目内容: //设计一个dog类,包含name、age、sex和weight等属性以及对这些属性操作的方法。实现并测试这个类。 //根据类的封装性要求,把name、age、sex和weight声明为私有的数据成员,编写公有成员函数setdata()对数据进行初始化,getname()、getage()、getsex()和getweight()获取相应属性。初始化数据由用户输入。 // //输入格式 : //dog类对象的初始化数据 // //输出格式: //根据dog类对象的初始化数据输出一句话,请严格按照格式输出,句末有点号。 // //输入样例: //ahuang 3 m 2.4 // //输出样例: //it is my dog. //its name is ahuang. //it is 3 years old. //it is male. //it is 2.4 kg. #include #include "string.h" using namespace std; class dog { public: dog(); ~dog(); void setdata(char* name, int age,char sex,float weight); void getname(); void getage(); void getsex(); void getweight(); private: char name[20]; int age; char sex; float weight; }; dog::dog() { } dog::~dog() { } void dog::setdata(char* _name, int _age, char _sex, float _weight) { strcpy(name, _name); age = _age; sex = _sex; weight = _weight; } void dog::getage() { cout << "it is " << age << " years old" <<"." <> _name >> _age >> _sex >> _weight; dog.setdata( _name, _age, _sex, _weight); cout << "it is my dog." << endl; dog.getname(); dog.getage(); dog.getsex(); dog.getweight(); system("pause"); return 0; }
//3设计并测试trapezium类(20分) //题目内容: //设计并测试一个名为trapezium的梯形类,其属性为梯形的四个顶点的坐标。该梯形上边和下边均和x轴平行。 //根据类的封装性要求,在类的声明中用8个私有的整型变量表示4个点的坐标值,声明成员函数initial(int, int, int, int, int, int, int, int)初始化数据成员,函数getposition(int&, int&, int&, int&, int&, int&, int&, int&)读取坐标值,函数area()计算面积。 // //输入格式 : //梯形四个顶点的坐标, // //输出格式: //梯形的面积,依次为左上(x1, y1)、右上(x2, y2)、左下(x3, y3)和右下(x4, y4)角的顶点。 // //输入样例: //3 2 5 2 1 - 4 7 - 4 // //输出样例: //24 #include using namespace std; class trapezium { public: trapezium(); ~trapezium(); void initial(int, int, int, int, int, int, int, int); void getposition(int&, int&, int&, int&, int&, int&, int&, int&); void area(); private: int xul, yul, xur, yur, xdl, ydl, xdr, ydr; }; void trapezium::initial(int _xul, int _yul, int _xur, int _yur, int _xdl, int _ydl, int _xdr, int _ydr) { xul = _xul; yul = _yul; xur = _xur; yur = _yur; xdl = _xdl; ydl = _ydl; xdr = _xdr; ydr = _ydr; } void trapezium::getposition(int& a, int& b, int& c , int& d , int& e , int& f , int& g , int& h) { cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << " " << g << " " << h << endl; } void trapezium::area() { float s; s = (xur - xul + xdr - xdl)*(yur - ydr) / 2; cout << s << endl; } trapezium::trapezium() { } trapezium::~trapezium() { } int main() { int _xul, _yul, _xur, _yur, _xdl, _ydl, _xdr, _ydr; cin >> _xul>> _yul>> _xur>>_yur>>_xdl>> _ydl>> _xdr>> _ydr; trapezium t1; t1.initial(_xul, _yul, _xur, _yur, _xdl, _ydl, _xdr, _ydr); t1.area(); system("pause"); return 0; }
//设计mytime类(20分) //题目内容: //设计一个mytime类,成员函数settime()设置时间,print_12()以12(0 - 11)小时制显示时间(am上午,pm下午),print_24()以24(0 - 23)小时制显示时间。 // //输入格式 : //所需设置时间的时、分、秒 // //输出格式: //按照12小时制和24小时制依次显示时间, 注意时间格式中的冒号是英文冒号, 时分秒都是两位,am, pm前有一个空格,晚上12 : 00是00 : 00 : 00 am,中午十二点是00 : 00 : 00 pm。 // //输入样例: //13 23 34 // //输出样例: //01:23 : 34 pm //13 : 23 : 34 #include using namespace std; class mytime { public: mytime(); ~mytime(); void settime(int _h,int _m,int _s); void print12(); void print24(); private: int h, m, s; }; void mytime::settime(int _h, int _m, int _s) { h = _h; m = _m; s = _s; } void mytime::print12() { int h_temp; (h - 12) > 0 ? h_temp = h - 12 : h_temp = h; if (h_temp<10) { cout << '0'; } cout << h_temp << ':'; if (m<10) { cout << '0'; } cout << m << ':'; if (s<10) { cout << '0'; } cout << s << ' '; if ((h - 12>0) || ((h==12)&&((m!=0)||(s!=0)))) { cout << "pm" << endl; } else { cout << "am" << endl; } } void mytime::print24() { if (h < 10) { cout << '0'; } cout << h << ':'; if (m < 10) { cout << '0'; } cout << m << ':'; if (s < 10) { cout << '0'; } cout << s; cout << endl; } mytime::mytime() { } mytime::~mytime() { } int main() { mytime time1; int _h, _m, _s; cin >> _h >> _m >> _s; time1.settime(_h, _m, _s); time1.print12(); time1.print24(); system("pause"); return 0; }
//5设计weekday类(20分) //题目内容: //设计一个weekday类,成员函数setday()设置星期几,incday()前进一天,nowday()打印当前是星期几。 // //输入格式 : //用户输入一个数字,0表示星期日,1表示星期一,类推,6表示星期六,用该数字初始化weekday类 // //输出格式: //使用中文打印出从当日起连续3天是星期几(不够三天时,循环) // //输入样例: //0 // //输出样例: //星期日 //星期一 //星期二 #include using namespace std; class weekday { public: weekday(); ~weekday(); void setday(int _today); void incday(); void nowday(); private: int today; }; void weekday::nowday() { switch (today) { case 0: { cout << "星期日" << endl; break; } case 1: { cout << "星期一" << endl; break; } case 2: { cout << "星期二" << endl; break; } case 3: { cout << "星期三" << endl; break; } case 4: { cout << "星期四" << endl; break; } case 5: { cout << "星期五" << endl; break; } case 6: { cout << "星期六" << endl; break; } default: break; } } void weekday::setday(int _today) { today = _today; } void weekday::incday() { today = (today + 1) % 7; } weekday::weekday() { } weekday::~weekday() { } int main() { int _today; weekday data1; cin >> _today; data1.setday(_today); data1.nowday(); data1.incday(); data1.nowday(); data1.incday(); data1.nowday(); system("pause"); return 0; }
上一篇: JSP Struts之HTML标签库详解
下一篇: jsp中jstl标签库core全解析
推荐阅读
-
C++类对象的返回与引用实例讲解
-
Python面向对象程序设计类的封装与继承用法示例
-
C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换(第二版-增加深度读取和更新功能)
-
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
-
数据结构与算法——散列表类的C++实现(探测散列表)
-
C++中的类---封装与访问控制
-
对继承与多态、成员变量的隐藏和方法重写、super关键字、final关键字、对象的上转型对象、抽象类的学习理解(java)
-
python 类的封装/property类型/和对象的绑定与非绑定方法
-
C++数据的抽象与封装:类与对象(1)
-
数据结构与算法——散列表类的C++实现(分离链接散列表)