首页 > 试题广场 >

Noah先生喜欢以2计数,所以他写了以下的程序来创建一个数组

[问答题]
Noah先生喜欢以2计数,所以他写了以下的程序来创建一个数组,并用整数2、4、6、8等等来填充它。如果有错误的话,这个程序的错误是什么?
#include <stdio.h>
#define SIZE 8
int main (void)
{
int by_twos[SIZE];
int index;
for (index = 1; index <= SIZE; index++)
by_twos[index] = 2 * index;
for (index = 1; index <= SIZE; index++)
printf ("%d ", by_twos);
printf ("\n");
return 0;
}

推荐
因为第一个元素的索引为0,所以循环的范围应该从0到SIZE-1,而不是从1到SIZE。但是这样改变会使第一个元素被赋值为0而不是2。所以要这样重写这个循环:
for (index = 0; index < SIZE; index++)
by_twos[index] = 2 * (index + 1);
类似地,也应该改变第二个循环的限制条件。另外,应该在数组名后面使用数组索引:
for (index = 0; index < SIZE; index++)
printf ("%d ", by_twos[index]);
错误的循环限制条件的一个危险的方面在于程序可以运行,但是因为它把数据放在不正确的地方,所以可能在未来的某个时刻不能运行,这样就形成了一种程序中的****。
发表于 2018-03-23 22:23:12 回复(0)