首页 > 解决方案 > 在 C 中初始化一个数组

问题描述

我正在尝试使用此代码初始化一个数组,但它不显示输出,即

[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
#include<stdio.h>

#define SIZE 10

int main() {
   int array[SIZE] = {0}, i = 1;
  
   while( i <= SIZE ) {
      array[i] = 2 * i - 1;
 
      i++;
   }

   return 0;
}

我究竟做错了什么?

标签: arraysc

解决方案


直接错误是在条件

 i <= SIZE

请注意,由于数组是从零开始的,因此长度数组的SIZE项目具有

 0, 1, 2, ..., SIZE - 1

索引。所以你可以把

 while (i < SIZE) 

并得到(你从 开始分配array[1],而不是从array[0]

 trash, 1, 3, 5, ..., 17

但是,我建议重新设计,为什么我们不应该使用典型的for循环初始化?

 for (int i = 0; i < SIZE; ++i)
   array[i] = 2 * i + 1;

注意,2 * i + 1-我们放+是因为数组是从零开始的,我们想要第一个array项目array[0]--be 1。此代码提供

 1, 3, 5, ..., 19

价值观

编辑:正如莫斯科的弗拉德在评论中指出的那样,您可以更改index而不是condition

while (i <= SIZE) {
   array[i - 1] = 2 * i - 1;
   i++;
}

在这里我们循环1, 2, ..., SIZE但将值分配给array[0], array[1], ..., array[SIZE - 1]项目


推荐阅读