-1

私は、数値以外が検出されるまで (最大 30 個の数値) 数値のリストを受け入れ、数値を配列に入れ、挿入された数値の数を追跡するプログラムを作成するように依頼されました。次に、配列をスキャンして最大数を見つけ、最大値を出力する必要があります。

これは私が思いついたものです:

#include<stdio.h>
int main()

{
    const int INPUT = 30 ;
    int size [INPUT];
    int i, big;


  printf("Type integer numbers, followed by q to quit: ");
  while (scanf("%d", &size[INPUT]) != 'q')
 {

    for(i=0;i<size;i++)
      scanf("%d",&INPUT[i]);
  big = INPUT[0];


  for(i=1;i<size;i++)

  {
      if(big<INPUT[i])
           big=INPUT[i];
  }

  printf("The largest number is %d",big);
  return 0;
}
4

2 に答える 2

1

問題に加えて、コメントに記載しました。変な名前に戸惑っているようですね~ とにかくコードを作ってみました。

#include<stdio.h>

int main()
{
    const int MAX_INPUT = 30 ;
    int input[MAX_INPUT];
    int size=0, big;


    printf("Type integer numbers, followed by q to quit: ");
    while(size < MAX_INPUT){
        if(scanf("%d", &input[size]) != 1){
            break;
        }
        ++size;
    }

    if(size ==0){
        return 0;
    }

    big = input[size-1];

    while( size-- > 0)
    {
        if(big<input[size]){
            big=input[size];
        }
    }

    printf("The largest number is %d\n",big);
    return 0;
}

GCC 4.1.2 および Linux でテスト済み。

于 2013-04-02T01:12:30.003 に答える
0

scanf の戻り値:

正常に完了すると、これらの関数は、正常に一致して割り当てられた入力項目の数を返します。

さらに、サイズと入力を混合しています。実際には、サイズを定数にし、入力を配列にする必要があります。

const int SIZE = 30 ;
int input[SIZE];

したがって、while ループは次のようになります。

while (scanf("%d", &input[some_index]) == 1)

そしてもちろん、これは間違っています:

scanf("%d",&INPUT[i]);  // should be ==> &input[i]
于 2013-04-02T01:01:07.050 に答える