1

I'm trying to use a for loop to iterate over the elements of an integer array and find out if a particular element in that array is equal to some other integer.

Here's what I've got, and it doesn't seem to work:

int squaresArray[1000];
int numberOfSquares = 1000;
int i = 0;

for (i; i<=numberOfSquares; i++)
{
    squaresArray[i] = i*i;
    if (number == squaresArray[i]){
        printf("%d is a perfect square\n", number);}
        break;
}

According to what I know about for loops this should work, but it prints nothing even when the number should be equal to some element of the array.

4

1 に答える 1

3

ブラケットの配置が間違っているため、最初の反復で中断しています(つまりbreak、ステートメントの範囲外ですif)。次のように変更します。

if (number == squaresArray[i]) {
        printf("%d is a perfect square\n", number);  // no closing bracket here
        break;
} // <--

また、ループ条件はおそらくi < numberOfSquares. 結局のところ、numberOfSquares( ) は長さ 1000 の配列の範囲外のインデックスです。さらに、ループを囲むスコープで1000既に宣言/初期化されている場合は、ループ初期化ステートメントは必要ありません。iしたがって、私たちは

int i = 0;

for (; i < numberOfSquares; i++)

C99以降を使用している場合は、スコープをiループのみに制限できます。これが推奨されます。

for (int i = 0; i < numberOfSquares; i++)
于 2013-10-05T22:30:13.917 に答える