C 程式設計(物件導向高階) 第四單元測驗與作業

2021-10-11 03:09:31 字數 3981 閱讀 1161

使用者從鍵盤輸入形式如 12-45 這樣的「數值範圍」字串,代表從12到45這個範圍。

請你編寫乙個類 parse,可以解析這個字串。然後提供兩個函式,能夠獲取字串中的第乙個整數和第二個整數。(10分)

parse類要提供乙個有參建構函式,接收乙個字串引數;

parse類要提供乙個 int getfirst() 函式,返回「數值範圍」字串中的前面的整數;

parse類要提供乙個 int getlast() 函式,返回「數值範圍」字串中的後面的整數;

程式的主函式如下,請將主函式**拷貝到你的開發環境中,但是不要修改主函式內部的**:

#include

#include

intmain()

; std::cin >> s;

// 使用者輸入乙個範圍字串

parse p

(s);

// 構造parse物件p,同時解析字串 s

std::cout << p.

getfirst()

<<

' '<< p.

getlast()

;// 中間是兩個單引號括起來的乙個空格字元

return0;

}

要求:

不要使用c語言的字串處理函式

使用string類自帶的函式,或者標準庫中的函式

警告1:

不要在主函式的返回語句前加 std::cin.get(); 否則無法通過本作業的測試用例

警告2:

請不要使用c++14或者c++17的特性。本oj還不支援這兩個標準。比如將函式返回值寫為 auto (c++14的特性)

警告3:

請不要新增額外資訊的輸出(比如輸出提示等)。額外輸出的資訊會導致oj系統無法判別你的結果

輸入格式:

用英文連字元分隔的兩個整數構成的字串

輸出格式:

兩個整數,中間用1個空格分隔。第二個整數後面沒有空格或者換行

輸入樣例:

12345-54321

輸出樣例:

12345 54321

時間限制:500ms記憶體限制:32000kb

#pragma once

using std::string;

class

parse

;

#include

#include

"parse.h"

using std::string;

parse::

parse

(string s_)

int parse::

getfirst()

int parse::

getlast()

#include

#include

"parse.h"

using std::cin;

using std::cout;

using std::endl;

intmain()

; std::cin >> s;

// 使用者輸入乙個範圍字串

parse p

(s);

// 構造parse物件p,同時解析字串 s

std::cout << p.

getfirst()

<<

' '<< p.

getlast()

;// 中間是兩個單引號括起來的乙個空格字元

return0;

}

使用者從鍵盤輸入形式如 #ab!#12-45c#+f 這樣的「數值範圍」字串,代表從12到45這個範圍。12前面和45後面會有一些不包含數字以及英文連字元的干擾字元。

請你編寫乙個類 parse,可以解析這個字串。然後提供兩個函式,能夠獲取字串中的第乙個整數和第二個整數。(10分)

#pragma once

using std::string;

class

parse

;

#include

#include

"parse.h"

using std::string;

parse::

parse

(string s_)

int parse::

getfirst()

i++;}

int first = std::

stoi

(firststr.

substr

(i))

;return first;

}int parse::

getlast()

#include

#include

"parse.h"

using std::cin;

using std::cout;

using std::endl;

intmain()

; std::cin >> s;

// 使用者輸入乙個範圍字串

parse p

(s);

// 構造parse物件p,同時解析字串 s

std::cout << p.

getfirst()

<<

' '<< p.

getlast()

;// 中間是兩個單引號括起來的乙個空格字元

return0;

}

編寫類circle。

編寫主函式,利用 std::array 建立包含10個物件的circle陣列並初始化。

用基於範圍的for迴圈遍歷circle陣列,求10個circie物件的面積之和(10分)

題目內容:

類circle有兩個建構函式。無參建構函式沒有函式體,使用default關鍵字宣告。有參建構函式接收乙個double型別引數作為circle的半徑。circle類的半徑的預設值是1.0

類circle有乙個 double getarea() 函式,返回圓的面積。圓周率的值取 3.14

在主函式中用 std::array 宣告乙個有10個circle物件的陣列。其中前5個circle物件的半徑分別設定為1.0、2.0、3.0、4.0、5.0。後5個物件使用circle的預設建構函式初始化。

在主函式中,用基於範圍的for迴圈遍歷circle陣列,求10個circie物件的面積之和

在主函式中,輸出所求出的面積和。輸出結果為雙精度浮點數。使用系統預設精度。無需做格式和精度控制

輸入格式:

無輸入輸出格式:

乙個浮點數。浮點數前後沒有空格和換行

輸入樣例:

無輸出樣例:

無時間限制:500ms記憶體限制:32000kb

#pragma once

class

circle

;

#include

#include

"circle.h"

circle::

circle

(double radius_)

double circle::

getarea()

#include

#include

"circle.h"

#include

using std::array;

using std::cout;

using std::endl;

intmain()

;for

(auto i : group)

cout << sum;

return0;

}

C 程式設計(物件導向高階) 第三單元測驗與作業

本題要求實現乙個swap函式,swap函式接收3個引用型別的引數,可交換3個整數a,b,c的值。將a的值存入b,b的值存入c,c的值存入a,並且返回三個整數中最大的數的值。例如a,b,c的值為1,2,3,則交換後,a,b,c的值為3,1,2,所返回的值為3。在主函式中宣告三個變數 a,b,c並賦值。...

物件導向高階(四)

一 複習 總結上次課內容。再次強調,動手操作很重要,很重要,很重要!二 新課引入 1 再動手寫一次 基類 圖形類,有乙個點座標,有乙個表示面積的方法。派生類 圓類,繼承圖形類,多乙個屬性半徑。同樣擁有表示面積的方法。2 抽象 l當例項方法宣告包含abstract修飾符時,稱該方法為抽象方法。l在類宣...

物件導向高階程式設計

相同class的各物件互為友元 class complex int func const complex param private double re,im string inline string string const char cstr 0 else inline string strin...