0

私にとって、私のプログラムは、私がやりたいことをするべきであるように見えます: ユーザーに配列に 10 個の値を入力するように促し、関数を使用して配列内のそれらの値の最大値を見つけ、最大数をメインに返します。 () 関数を実行して出力します。

しかし、値を入力すると、入力した数値と同じように見える数値が返されません。

たとえば、「10, 11」とだけ入力すると、「1606416648 = 最大値」が返されます。

私が間違っていることを誰かが知っていますか?

コードは次のとおりです。

#include <stdio.h>
#define LIMIT 10
int largest(int pointer[]); 
int main(void)
{

int str[LIMIT];
int max;
int i = 0;

printf("Please enter 10 integer values:\n");
while (i < LIMIT)
{
    scanf("%d", &str[i]);
    i++;
}
// Thanks for your help, I've been able to make the program work with the above edit!
max = largest(str);
printf("%d = largest value\n", max);

return 0;
}

int largest(int pointer[])

{
int i;
int max = pointer[0];

for (i = 1; i < LIMIT; i++)
{
   if (max < pointer[i])
        max = pointer[i];
}
return max;
}
4

2 に答える 2

1

scanf("%d", &str[LIMIT]);1 つの数値を読み取り、それを配列の末尾の 1 つ後のメモリ位置に配置します。

変更後:

  1. scanf()while 条件では必要ありません。while代わりに体内に入るべきです。

  2. あなたscanf()はまだ完全に正しくありません。入力を格納する配列内の場所を指定する必要があります。

  3. str[i];何もしません。

于 2013-03-12T01:34:59.190 に答える
0

printf("Please enter 10 integer values:\n"); scanf("%d", &str[LIMIT]);

これはあなたが思うようにはなりません。まず、1 つの数値のみを読み取ります。次に、配列の最後の位置 + 1 に読み取ります。

于 2013-03-12T01:35:42.983 に答える