天天看點

[C++筆記]引用作為函數參數

Q1

本題要求實作一個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

本程式無需鍵盤輸入

題目内容:

在主函數中聲明三個變量 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;

這種連續輸出的語句,會産生副作用。

要将函數的調用單獨作為一條語句,不要與輸出語句放在一起。

[C++筆記]引用作為函數參數
[C++筆記]引用作為函數參數

Q2

本題要求實作一個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、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:你在編寫時,不能使用類似下面的代碼輸入資訊:

auto a {2};

cin >> a;

上面兩行代碼用在系統中會導緻編譯錯誤。

解決辦法是:變量定義的語句中,不能同時出現 auto 和清單初始化方式。要麼将上面第一行代碼改為 int a {2};要麼将其改為 auto a = 2;

注意3:

在主函數中,不要使用

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

這種連續輸出的語句,會産生副作用。

要将函數的調用單獨作為一條語句,不要與輸出語句放在一起。

[C++筆記]引用作為函數參數
[C++筆記]引用作為函數參數

(以下均為碎碎念部分)

起初讀題沒讀透,并沒有利用swap函數傳回三個整數中最大數的值,然而結果是正确的hhhh,運作過後在用例二被扣掉四分,怎麼也找不到原因所在。後來才發現這個問題的😢

繼續閱讀