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

2021-10-08 21:55:13 字數 4645 閱讀 6524

本題要求實現乙個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並賦值。a的值為1, b為2, c為3

本程式無需鍵盤輸入(10分)

在主函式中宣告三個變數 a, b, c並賦值。a的值為1, b為2, c為3;

以a、b、c作為實參,呼叫swap函式;

最後輸出a、b、c三個整數中最大的值,以及三個整數;

變數定義時均應賦初值0。

不得使用c語言中的輸入輸出函式

函式介面定義:

int swap (

int& x,

int& y,

int& z)

;//三個引數均為引用型別

swap()函式接收3個引用型別的引數,可交換3個整數a,b,c的值。將a的值存入b,b的值存入c,c的值存入a。

swap()在交換三個整數的值後,返回x,y,z中最大的數的值

無需輸入

用單個空格分隔的四個整數

最大數 a的值 b的值 c的值

3 3 1 2

第1個3是輸入的三個數的最大值,

第二個3是交換後a的值,

1是交換後b的值,

2是交換後c的值

注意1:輸出的最後乙個整數之後沒有空格,也沒有換行

注意2

在主函式中,不要使用

cout << swap(a,b,c) << a << b << c;

這種連續輸出的語句,會產生***。

要將函式的呼叫單獨作為一條語句,不要與輸出語句放在一起。

#include

using std::cout;

using std::endl;

intswap

(int

& x,

int& y,

int& z)

;int

main()

intswap

(int

& x,

int& y,

int& z)

本題要求實現乙個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 的值需要從鍵盤輸入。(10分)

在主函式中一次讀入三個整數的值存入a、b、c中(使用std::cin);

以a、b、c作為實參,呼叫swap函式;

最後輸出a、b、c三個整數中最大的值,以及三個整數;

變數定義時均應賦初值0。

不得使用c語言中的輸入輸出函式

int swap (

int& x,

int& y,

int& z)

;//三個引數均為引用型別

swap()函式接收3個引用型別的引數,可交換3個整數a,b,c的值。將a的值存入b,b的值存入c,c的值存入a。

swap()在交換三個整數的值後,返回x,y,z中最大的數的值

空格分隔的三個整數

整數1 整數2 整數3

用單個空格分隔的四個整數

最大數 a的值 b的值 c的值

1 2 3

3 3 1 2

第1個3是輸入的三個數的最大值,

第二個3是交換後a的值,

1是交換後b的值,

2是交換後c的值

注意1:**輸出的最後乙個整數之後沒有空格,也沒有換行

注意2:

由於中國大學mooc的oj系統使用的是gcc 4.7這個非常古老的編譯器,因此,你在編寫本作業時,不能使用類似下面的**輸入資訊:

auto a ;

cin >> a;

上面兩行**用在這個oj系統中會導致編譯錯誤。(當然,上面兩行**在gcc 5.1+以及msvc 2017+上都是沒有問題的)

解決辦法是:變數定義的語句中,不能同時出現 auto 和列表初始化方式。要麼將上面第一行**改為 int a ;要麼將其改為 auto a = 2;

注意3:

在主函式中,不要使用

cout << swap(a,b,c) << a << b << c;

這種連續輸出的語句,會產生***。

要將函式的呼叫單獨作為一條語句,不要與輸出語句放在一起。

#include

using std::cout;

using std::endl;

using std::cin;

intswap

(int

& x,

int& y,

int& z)

;int

main()

intswap

(int

& x,

int& y,

int& z)

編寫4個過載函式,分別求整數和字元的最小值(10分)

編寫四個過載函式,函式求對應引數中的最小值並返回該值。

四個函式的原型是:

char min( char c1, char c2 );

char min( char c1, char c2, char c3 );

int min( int i1, int i2);

int min( int i1, int i2, int i3);

在主函式中定義一些變數並賦初值(使用c++11的auto或者列表初始化方法)

用第1個 min 函式比較字元 『[』 和字元 『n』 並輸出較小的字元;

用第2個 min 函式比較字元 『g』 、字元 『9』 和字元 『*』 並輸出較小的字元;

用第3個 min 函式比較整數 -42 與 0 並輸出較小的整數 (注意第乙個整數是負值)

用第4個 min 函式比較整數 42 、0 和 std::numeric_limits::min() 並輸出較小的整數

std::numeric_limits::min() 是c++系統標頭檔案中的成員。所以你編寫**時需要包含這個標頭檔案。

由於中國大學mooc的oj系統使用的是gcc 4.7這個古老的編譯器,因此,你不能在宣告變數的時候同時使用auto和列表初始化,否則這個編譯器會報告很多錯誤。

也就是,你不能寫類似下面的**:

auto x , y;

cout << min(x, y);

無用單個空格分隔開的4個資料

無n * -42 -2147483648

注意:上述輸出樣例中,結尾沒有空格,也沒有換行符

注意:在c++標準庫標頭檔案中,有一套 min()和max()函式。你在程式設計序時,不要包含該標頭檔案,也不要使用

using namespace std;

這種會汙染當前**預設名字空間的語句

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

#include

#include

using std::cout;

using std::endl;

char

min(

char c1,

char c2)

;char

min(

char c1,

char c2,

char c3)

;int

min(

int i1,

int i2)

;int

min(

int i1,

int i2,

int i3)

;int

main()

, minc2

;auto minint1

, minint2

; minc1 =

min(

'[',

'n')

; minc2 =

min(

'g',

'9',

'*')

; minint1 =

min(0,

-42);

minint2 =

min(42,

0, std::numeric_limits<

int>

::min()

);cout << minc1 <<

" "<< minc2 <<

" "<< minint1 <<

" "<< minint2;

return0;

}char

min(

char c1,

char c2)

char

min(

char c1,

char c2,

char c3)

intmin

(int i1,

int i2)

intmin

(int i1,

int i2,

int i3)

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

使用者從鍵盤輸入形式如 12 45 這樣的 數值範圍 字串,代表從12到45這個範圍。請你編寫乙個類 parse,可以解析這個字串。然後提供兩個函式,能夠獲取字串中的第乙個整數和第二個整數。10分 parse類要提供乙個有參建構函式,接收乙個字串引數 parse類要提供乙個 int getfirst...

物件導向高階程式設計

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

物件導向高階(三)

一 複習 1 多型的概念 二 實訓操作練習 2 設計乙個商品類,該類有三個字段 商品名稱 商品編號 其中,商品名稱 商品 編號設定為讀寫屬性字段,設定為唯讀屬性字段,具有為商品名稱 商品編號 三個欄位賦初值的建構函式 設計乙個商品類,該類有三個字段 商品名稱 商品編號 其中,商品名稱 商品編號設定為...