不能使用for循环在C中打印数组

时间:2015-10-31 20:24:16

标签: c codeblocks

所以我有这个代码

#include <stdio.h>

main()
{
  int a[10];
  int i= 0;

  for (i=0; i<11; ++i){
      a[i] = 0;
  }
  for(i=0; i<11; ++i){
      printf("%d", a[i]);
  }
}

我读过丹尼斯·里奇(Dennis Ritchie)的书,并且在我的期望中它应该像这样打印出来

0 0 0 0 0 0 0 0 0 0

但是当它运行时,只是空白,没有打印出来 请帮我解决我的问题

2 个答案:

答案 0 :(得分:3)

您声明了一个包含10个元素的数组。

function _spYield(b, a) {
if (a > 0)
    window.setTimeout(function() {
        _spYield(b, a - 1)
    }
    , 0);
else
    b()

在这种情况下,索引的有效范围是int a[10]; ,如果您有一个[0, 9]元素数组,那么数组的有效索引范围是N

因此,您需要以下列方式更改porgram中的循环

[0, N-1]

最好定义清单常量并使用它而不是幻数10,例如

for (i=0; i< 10; ++i)

或至少在循环表达式中使用

#define N 10

//...

int a[N];

for (i=0; i < N; ++i)

如果将数组声明为

,则可以获得相同的效果
for (i=0; i < sizeof( a ) / sizeof( *a ); ++i)

在最后一个循环语句后插入

int a[10] = { 0 };

puts( "" );

答案 1 :(得分:1)

输出缓冲区尚未刷新到控制台/终端。在printf循环

之后添加此行
printf("\n");

此外,您的数组应该是

int a[11];

以便索引保持在范围内。