0

私は学生で、C を初めて使用します。宿題の質問の 1 つは次のとおりです。

max は、2 つの int パラメーターを受け取り、大きい方の値を返す関数です。4 つの int 変数、population1、population2、population3、population4 は既に宣言され、初期化されています。max を呼び出して、値が人口 1 、人口 2 、人口 3 、および人口 4 の最大値である式 (ステートメントではありません!) を記述します。(ヒント: max を 3 回呼び出す必要があり、そのうちの 2 つの呼び出しの戻り値を引数として max に渡す必要があります。注意: ステートメントではなく、式を記述してください。)

私はそれの論理を理解しています:

最初の 2 つの変数で関数 max を呼び出すと、関数は 2 つのうち大きい方を返し、その値を取得して (5 番目に宣言された変数に代入せずに何らかの形で渡します)、3 番目の変数の値と比較します。2 番目のペアリングの大きい方を取り (再び新しい変数の恩恵を受けずに渡します。これはステートメントではなく式であることを思い出してください)、4 番目の値と比較します。しかし、正しい構文を書くことができませんでした。

また、これは100レベルのクラスであることを理解してください。したがって、この特定の質問では、より高いレベルのものは受け入れられません。#include(d) するライブラリがありません。

4

3 に答える 3

1

あなたはそれを行う方法を理解しているようです。はい、質問では、戻り値を新しい変数に割り当てないように求めているようです。基本的に、max() を別の max() のパラメーターとしてチャックできます。内側の max() の戻り値は、外側の max() パラメーターの int になります。c は正格なので、関数の戻り値の型がパラメータと同じでなければコンパイルされません (この場合、どちらも int なので問題ありません)。

max(2, max(3, 4)); // inner returns 4, which puts 4 into the outer max, and compares 2 to 4
于 2013-02-01T04:26:45.427 に答える
0

void式の中で何も ( ) を自由に使用できないという別のものを返す関数。式は、終端記号 (定数または関数呼び出しとして) に到達するまで部分式によって作成されるため、再帰的に定義されます。

したがって、構文を理解するのに奇妙なことは何もありません。への呼び出しは、構文max的に数値定数と同等です。

int x = 5;
int y = max(5,10);
int z = 5 + 10;
int k = max(5,10) + 3;
int j = max(3 + 2, 8);

これらはすべて合法です。もちろん、割り当ては単なる式ではなくステートメントであるため、明確にするためだけのものです。

于 2013-02-01T04:22:54.917 に答える
0

関数呼び出しはネストできます。ヒントは次のとおりです。

max(population1, max(...))

の正しいコードを思いつくことができます...か?

于 2013-02-01T04:23:55.723 に答える