學習筆記《計算機程序設計C++》第11周基礎練習

第11周基礎練習查看幫助返回

依照學術誠信條款,我保證此作業是本人獨立完成的。

溫馨提示:

1.本次作業屬於Online Judge題目,提交後由系統即時判分。

2.學生可以在作業截止時間之前不限次數提交答案,系統將取其中的最高分作爲最終成績。

1繼承點類定義圓類(10分)
目內容:

定義基類——平面點類POINT,x,y座標爲其私有數據成員,double;成員函數有:默認構造設置座標爲(0,0);兩參數構造函數設置x,y;set()函數設置x,y座標;show()顯示x,y座標。成員函數均爲公有。

定義派生類——圓類,繼承上面的POINT點類,增加數據成員radius表示半徑,double,私有。成員函數有:默認構造函數,設置圓心半徑均爲0;三參數構造函數初始化圓心和半徑;set()設置圓心和半徑;show()顯示圓心和半徑。

編寫主程序,(1)使用默認構造函數定義圓類對象1,使用三參數構造函數定義圓類對象2,圓心半徑爲(1,2),3;顯示對象1、對象2的信息;輸入圓心半徑,設置對象1的圓心半徑,再次顯示對象1的信息。主函數如下:

運行結果

輸入:三個實數,用空格隔開,表示圓的圓心和半徑。

輸出:三行,三個圓的圓心和半徑,格式見樣例,數據間用空格隔開。

【提示】

樣例1輸入:

3 4 5

樣例1輸出:

x=0 y=0 r=0

x=1 y=2 r=3

x=3 y=4 r=5

參考程序

時間限制:500ms內存限制:32000kb
C++
#include
using namespace std;
class POINT {
double x, y;
public:POINT() {
x = y = 0;
}
void set(double x, double y) {
this->x = x;
this->y = y;
}
void show() {
cout << “x=” << x << " y=" << y;
}
};
class CIRCLE :public POINT {
double r;
public: CIRCLE() {
r = 0;
}
CIRCLE(double x, double y, double r) {
this->r = r;
POINT::set(x, y);
}
void set(double x, double y, double r) {
this->r = r;
POINT::set(x, y);
}
void show() {
POINT::show();
cout << " r=" << r;
}
};
int main() {
CIRCLE a, b(1, 2, 3);
a.show();cout << endl;
b.show();cout << endl;
double x, y, r;
cin >> x >> y >> r;
a.set(x, y, r);
a.show();cout << endl;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 3ms 372kb
5
用例2通過 3ms 256kb
5
提交答案本次得分/總分:10.00/10.00分
2繼承點類定義矩形類(10分)
題目內容:

定義基類——平面點類POINT,x,y座標爲其私有數據成員,double;成員函數有:默認構造設置座標爲(0,0);兩參數構造函數設置x,y;set()函數設置x,y座標;show()顯示x,y座標。成員函數均爲公有。

定義派生類——矩形類RECT,繼承上面的POINT點類(表示矩形左上角位置,矩形邊和座標軸平行),增加數據成員width表示寬度,height表示高度,double,私有。成員函數有:默認構造函數,設置位置、寬、高均爲0;四參數構造函數初始化位置、寬度和高度;set()設置位置、寬度和高度;show()顯示位置、寬度和高度。

編寫主程序,(1)使用默認構造函數定義矩形類對象1,使用四參數構造函數定義矩形類對象2,位置爲(1,2),寬度10,高度5;顯示對象1、對象2的信息;輸入位置、寬度和高度,設置對象1的參數,再次顯示對象1的信息。主函數如下:

輸入:四個實數,用空格隔開,前兩個表示矩形的位置(左上角的x,y座標),後兩個表示寬度和高度。

輸出:三行,三個矩形的位置、寬度和高度,格式見樣例,數據間用空格隔開。

【提示】

樣例1輸入:

5 6 20 10

樣例1輸出:

x=0 y=0 width=0 height=0

x=1 y=2 width=10 height=5

x=5 y=6 width=20 height=10

時間限制:500ms內存限制:32000kb
C++
#include
using namespace std;
class POINT {
double x, y;
public:POINT() {
x = y = 0;
}
void set(double x, double y) {
this->x = x;
this->y = y;
}
void show() {
cout << “x=” << x << " y=" << y;
}
};
class RECT :public POINT {
double r,h;
public: RECT() {
r=h = 0;
}
RECT(double x, double y, double r,double h) {
this->r = r;
this->h = h;
POINT::set(x, y);
}
void set(double x, double y, double r,double h) {
this->r = r;this->h = h;
POINT::set(x, y);
}
void show() {
POINT::show();
cout << " width=" << r<<" height="<<h;
}
};
int main() {
RECT a, b(1, 2, 10,5);
a.show();cout << endl;
b.show();cout << endl;
double x, y, r,h;
cin >> x >> y >> r>>h;
a.set(x, y, r,h);
a.show();cout << endl;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 15ms 368kb
5
用例2通過 2ms 376kb
5
提交答案本次得分/總分:10.00/10.00分
3繼承房間類定義教室類(10分)
題目內容:

定義一個基類——房間類ROOM,房間號是私有數據成員,字符數組,大小20;成員函數有:默認構造函數設置房間號爲“0000”;一參數構造函數設置房間號,參數:字符指針;set()函數設置房間號,參數:字符指針;show()顯示房間號。成員函數均爲公有。

定義派生類——教室類CLASSROOM,繼承上面的ROOM類,增加數據成員座位數seats,int,私有。成員函數有:默認構造函數,設置房間號"0000"和座位數0;兩參數構造函數初始化房間號和座位數;set()設置房間號和座位數,默認座位數0;show()顯示房間號和座位數。

編寫主程序,(1)使用默認構造函數定義教室類對象1,使用兩參構造函數定義教室類對象2,房間號爲“工程館505”,座位數130;顯示對象1、對象2的信息;輸入房間號和座位數,設置對象1的成員,再次顯示對象1的信息。主函數如下:

運行結果:

輸入:一行,一個字符串表示房間號,一個整數表示座位數,空格隔開。

輸出:三行,三個教室的信息。兩項數據間一個空格,冒號後無空格。

【提示】

樣例1輸入:

工程館507 140

樣例1輸出:

Number:0000 seats:0

Number:工程館505 seats:130

Number:工程館507 seats:140

時間限制:500ms內存限制:32000kb
C++
#include
#include
using namespace std;
class ROOM {
char number[20];
public:ROOM() {
strcpy(number, “0000”);
} ROOM(char const *c) {
strcpy(number, c);
}
void set(char const *c) {
strcpy(number, c);
}
void show() {
cout <<“Number:”<< number;
}
};
class CLASSROOM :public ROOM {
int sit;
public: CLASSROOM() {
sit = 0;
}
CLASSROOM(char const *st,int s) {
sit = s;
ROOM::set(st);
}
void set(char *st,int s) {
sit = s;
ROOM::set(st);
}
void show() {
ROOM::show();
cout << " seats:" <<sit;
}
};
int main() {
CLASSROOM a, b(“工程館505”,130);
a.show();cout << endl;
b.show();cout << endl;
char x[20];int y;
cin >> x >> y ;
a.set(x, y);
a.show();cout << endl;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 3ms 372kb
5
用例2通過 3ms 372kb
5
提交答案本次得分/總分:10.00/10.00分
4繼承車輛類定義客車類(10分)
題目內容:

定義基類——車輛類VEHICLE,車牌號、車主是私有數據成員,字符數組,大小20;成員函數有:默認構造函數設置車牌號爲“00000”,車主爲"unknown";兩參數構造函數設置車牌號、和車主,參數:字符指針;set()函數設置車牌號和車主,參數:字符指針;show()顯示車牌號和車主。成員函數均爲公有。

定義派生類——客車類BUS,繼承上面的VEHICLE類,增加數據成員座位數seats,int,私有。成員函數有:默認構造函數,設置車牌號"00000"、車主“unknown”和座位數0;三參數構造函數初始化車牌號、車主和座位數;set()設置車牌號、車主和座位數,默認座位數0;show()顯示車牌號、車主和座位數。

編寫主程序,(1)使用默認構造函數定義客車類對象1,使用三參構造函數定義客車類對象2,車牌號爲“SHAN-1234567”,車主“ZhangSan”,座位數40;顯示對象1、對象2的信息;輸入車牌號、車主和座位數,設置對象1的成員,再次顯示對象1的信息。主函數如下:

運行結果

輸入:一行,兩個字符串表示車牌號和車主,一個整數表示座位數,空格隔開。

輸出:三行,三輛客車的信息。兩項數據間一個空格,冒號後無空格。

【提示】

樣例1輸入:

SHAAN-111111 Wang 30

樣例1輸出:

Number:00000 owner:unknown seats:0

Number:SHAN-1234567 owner:ZhangSan seats:40

Number:SHAAN-111111 owner:Wang seats:30

時間限制:500ms內存限制:32000kb
C++
#include
#include
using namespace std;
class VEHICLE {
char number[20];char boss[20];
public:VEHICLE() {
strcpy(number, “00000”);
strcpy(boss, “unknown”);
}
VEHICLE(char const c,char const b) {
strcpy(number, c);
strcpy(boss, b);
}
void set(char const c, char const b) {
strcpy(number, c);
strcpy(boss, b);
}
void show() {
cout <<“Number:”<< number<<" owner:"<<boss;
}
};
class BUS :public VEHICLE {
int sit;
public: BUS() {
sit = 0;
}
BUS(char const *bs, char const *st, int s) {
sit = s;
VEHICLE::set(bs,st);
}
void set(char *bs,char *st,int s) {
sit = s;
VEHICLE::set(bs,st);
}
void show() {
VEHICLE::show();
cout << " seats:" <<sit;
}
};
int main() {
BUS a, b(“SHAN-1234567”, “ZhangSan”,40);
a.show();cout << endl;
b.show();cout << endl;
char x[20],c[20];int y;
cin >> x >>c>> y ;
a.set(x,c, y);
a.show();cout << endl;
return 0;
}
用例測試結果 運行時間 佔用內存 提示 得分
用例1通過 2ms 360kb
5
用例2通過 3ms 360kb
5
提交答案本次得分/總分:10.00/10.00分

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章