A.类的应用1 | |||||
|
|||||
Description | |||||
利用面向对象程序设计的方法,通过长方体的长、宽、高求长方体的体积与表面积。 | |||||
Input | |||||
多组测试数据。第一行输入测试数据的组数t(0<t<10);以下t行每行输入长方体的长a、宽b、高c,(0<a,b,c<10,且为int型,a、b、c之间由空格分隔)。 | |||||
Output | |||||
每组输出数据为2个,分别为长方体的体积和表面积,数据之间由空格分隔。 | |||||
Sample Input | |||||
6 7 5 6 4 6 8 5 9 4 1 10 1 5 4 5 10 7 7 |
|||||
Sample Output | |||||
214 210 208 192 202 180 42 10 130 100 378 490 |
code:
#include<iostream> using namespace std; class rectangle{ float length; float width; float height; public: rectangle(){}; rectangle(float l,float w,float h){ length = l; width = w; height = h; } ~rectangle(){}; void setDimension(float l,float w,float h){ length = l; width = w; height = h; } float getLength(){return length;} float getWidth(){return width;} float getHeight(){return height;} float getVolum(){return length*width*height;} float getArea(){return 2*(length*width+length*height+width*height);;} }; int main(){ int T; cin>>T; while(T--){ int a,b,c; cin>>a>>b>>c; rectangle myrectangle(a,b,c); cout<<myrectangle.getArea()<<" "<<myrectangle.getVolum()<<endl; } return 0; }
B.类的应用2 | |||||
|
|||||
Description | |||||
利用面向对象程序设计的方法,通过三角形的三边求三角形的周长。 | |||||
Input | |||||
多组测试数据。第一行输入测试数据的组数t(0<t<10);以下t行每行输入三角形的三边a、b、c,(0<a,b,c<10,且为int型,a、b、c之间由空格分隔)。 | |||||
Output | |||||
每组输出数据为1个。当输入的三边能够构成三角形时,输出周长;当输入的三边不能构成三角形时输出“error”。 | |||||
Sample Input | |||||
2 1 10 1 5 4 5 |
|||||
Sample Output | |||||
error 14 |
#include<iostream> using namespace std; class triangle{ int a,b,c; public: void set(int a, int b, int c){ this->a = a; this->b = b; this->c = c; } bool istri(){ return a+b>c && a+c>b && b+c>a; } int getl(){ return a+b+c; } }; int main(){ int a,b,c,N=0; triangle T; cin>>N; while(N--){ cin >> a >> b >> c; T.set(a,b,c); if(T.istri()){ cout <<T.getl()<< endl; }else{ cout <<"error"<< endl; } } }
C.类的应用3 | |||||
|
|||||
Description | |||||
利用面向对象程序设计的方法解决问题。行走江湖,靠的是脑力和武器。脑瓜灵光,武器平平免不了输给或愚钝但手握屠龙的无名之辈,脑力与武器按照四六比例决定一个人的江湖地位。适逢Apple新店开业,当街擂台比武海选晋级选手赢取Apple X。比武之前要登记选手:选手名(长度不大于10的字符串)、脑力值(不大于100的整数)、武器名(长度不大于10的字符串)、武器攻击力(不大于100的整数)。比武方式:两两一组,对打。 | |||||
Input | |||||
多组测试数据。第一行输入测试数据的组数t(0<t<10);以下2t行每2行输入2名比武者的信息:选手名、脑力值、武器名、武器攻击力,数据之间由空格分隔。 | |||||
Output | |||||
针对每2行选手的输入,输出比武结果。 当前者打败了后者,会输出:前者名 win 后者名 当前者输给了后者,会输出:前者名 lost 后者名 当前者与后者不分胜负,会输出:前者名 tie 后者名 |
|||||
Sample Input | |||||
3 Sunwk 100 Jingb 100 Niumw 0 Bajs 100 Tangsz 100 Chanzhang 0 Honghe 80 Huolongqiang 60 ZHUba 60 JCdp 60 SHAwj 30 FTc 80 |
|||||
Sample Output | |||||
Sunwk win Niumw Tangsz lost Honghe ZHUba tie SHAwj |
|||||
Hint | |||||
Honghe 80 Huolongqiang 60:此人江湖能力为80*0.4+60*0.6=68 |
#include<iostream> using namespace std; class people{ string name; int wind; string gun; int power; public: void set(string name,int wind, string gun, int power){ this->name = name; this->wind = wind; this->gun = gun; this->power = power; } int getTolPower(){ return wind*0.4+power*0.6; } }; int main(){ int t; cin>>t; people p1,p2; while(t--){ string name,name2,gun; int wind,power; cin>>name>>wind>>gun>>power; p1.set(name,wind,gun,power); cin>>name2>>wind>>gun>>power; p2.set(name,wind,gun,power); if(p1.getTolPower()==p2.getTolPower()){ cout<<name <<" tie "<< name2<<endl; }else if(p1.getTolPower()>p2.getTolPower()){ cout<<name <<" win "<< name2<<endl; }else{ cout<<name <<" lost "<< name2<<endl; } } }
D.类的应用4 | |||||
|
|||||
Description | |||||
利用面向对象程序设计的方法解决问题。 神魔争斗一直延续着...,是集智慧兵器威力一体(智慧与兵器威力权重比为4:6)的神与仅凭兵器威力的魔的较量。进入新的时代,要举办一场神魔擂台预选赛。现场注册登记,要记录神的名号(长度不大于10的字符串)、神的智慧值(不大于100的整数)、神使用兵器的名字(长度不大于10的字符串)以及威力值(不大于100的整数)。魔要记录魔的名字(长度不大于10的字符串)、魔使用兵器的名字(长度不大于10的字符串)以及威力值(不大于100的整数)。 |
|||||
Input | |||||
多组测试数据。第一行输入测试数据的组数t(0<t<10);以下2t行每2行的第一行输入神的名号、神的智慧值、神使用的兵器名字以及威力值,数据之间由空格分隔;第二行输入魔的名字、魔使用的兵器以及威力值,数据之间由空格分隔。 | |||||
Output | |||||
针对每2行神魔比武的输入,输出比武结果。 当神打败了魔,会输出:神名 win 魔名 当神败给了魔,会输出:神名 lost 魔名 当神魔不分胜负,会输出:神名 tie 魔名 |
|||||
Sample Input | |||||
3 Tangsz 100 Chanzhang 0 Honghe Huolongqiang 60 Sunwk 100 Jingb 100 Niumw Bajs 100 Zhubj 20 Jiucdp 80 Xiaoy Pud 20 |
|||||
Sample Output | |||||
Tangsz lost Honghe Sunwk tie Niumw Zhubj win Xiaoy |
|||||
Hint | |||||
Tangsz 100 Chanzhang 0:此神战斗力为100*0.4+0*0.6=40 Honghe Huolongqiang 60:此魔战斗力为60 |
#include<iostream> #include<cstdlib> using namespace std; class people{ string name; int wind; string gun; int power; public: void set(string name,int wind, string gun, int power){ this->name = name; if(wind!=0){ this->wind = wind; }else{ this->wind = 0; } this->gun = gun; this->power = power; } int getTolPower(){ if(this->wind==0){ return power; } return wind*0.4+power*0.6; } }; int main(){ int t; cin>>t; people p1,p2; while(t--){ string name,name2,gun; int wind,power; cin>>name>>wind>>gun>>power; p1.set(name,wind,gun,power); cin>>name2>>gun>>power; p2.set(name2,0,gun,power); if(p1.getTolPower()==p2.getTolPower()){ cout<<name <<" tie "<< name2<<endl; }else if(p1.getTolPower()>p2.getTolPower()){ cout<<name <<" win "<< name2<<endl; }else{ cout<<name <<" lost "<< name2<<endl; } } }
E.类的应用5 | |||||
|
|||||
Description | |||||
利用面向对象设计方法解决问题。根据主函数main()的内容、输入与输出数据,完成类的设计。 主函数如下: cin>>x1>>y1>>x2>>y2; Line L1(0,0,1,1); return 0; |
|||||
Input | |||||
第一行输入的是:A、B两点坐标在x和y方向上的偏移量,数据以空格分隔。 第二行输入的是:线段L两端点的坐标x1,y1,x2,y2,数据以空格分隔。 第三行输入的是:线段L1两端点在x和y方向上的偏移量,数据以空格分隔。 |
|||||
Output | |||||
第一、二行输出的是点A与点B的坐标(按格式)。 第三、四行输出的是在平移后的点A与点B的坐标(按格式)。 第五行输出的是线段L两端点的坐标及长度(按格式)。 第六行输出的是线段L1在平移后两端点的坐标及长度(按格式)。 |
|||||
Sample Input | |||||
5 5 0 0 10 10 1 1 5 5 |
|||||
Sample Output | |||||
PointA:[0,0] PointB:[10,10] PointA:[5,5] PointB:[15,15] (0,0)--(10,10):14.14 (1,1)--(6,6):7.07 |
#include<iostream> #include<cstdio> #include<cmath> using namespace std; class Point{ int X,Y; public: Point(){ X=0; Y=0; } Point(int x,int y):X(x),Y(y){} int getX(){ return X; } int getY(){ return Y; } void setP(int x,int y){ this->X+=x; this->Y+=y; } }; class Line{ int X1,Y1,X2,Y2; public: Line(){ X2=1; Y2=1; } Line(int x1,int y1,int x2,int y2):X1(x1),Y1(y1),X2(x2),Y2(y2){} void setL(int x1,int y1,int x2,int y2){ this->X1=x1; this->Y1=y1; this->X2+=x2; this->Y2+=y2; } int getP(){ cout<<"("<<X1<<","<<Y1<<")"<<"--"<<"("<<X2<<","<<Y2<<")"<<endl; } float dis(){ return sqrt((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1)); } }; int main() { int n,x1,x2,y1,y2; Point A,B(10,10); cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"] "; cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"] "; cin>>x1>>y1; A.setP(x1,y1); B.setP(x1,y1); cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"] "; cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"] "; cin>>x1>>y1>>x2>>y2; Line L(x1,y1,x2,y2); L.getP();printf("%.2lf ",L.dis()); Line L1(0,0,1,1); cin>>x1>>y1>>x2>>y2; L1.setL(x1,y1,x2,y2); L1.getP();printf("%.2lf ",L1.dis()); return 0; }