1

我正在尝试使用 for 循环遍历整数数组的元素,并找出该数组中的特定元素是否等于其他整数。

这是我所拥有的,它似乎不起作用:

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;
}

根据我对 for 循环的了解,这应该可以工作,但即使数字应该等于数组的某个元素,它也不会打印任何内容。

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 回答