无法在C中创建数组

标签 c

我正在尝试创建一个打印 1 到 40 之间数字的数组,如下所示:

1  5  9   13  17  21  25  29  33  37
2  6  10  14  18  22  26  30  34  38
3  7  11  15  19  23  27  31  35  39
4  8  12  16  20  24  28  32  36  40

我已经尝试过,但我做不到。这是我的代码:

for(i=0;i<4;i++)
{

    for(j=0;j<10;j++)
    {
    if(i=0)
    {
        array[i][j]= 
    }

    }
}

for(i=0;i<4;i++)
{
    for(j=0;j<10;j++)
    {
        printf("%d\t", array[i][j]);    
    }

}

感谢您的帮助

最佳答案

人们注意到了一大堆问题。我注意到,在评论中(当我写完这篇文章时),一旦添加了正确的分配,您就说过“它有效”。上帝知道怎么做,但想必您问题中的代码并不代表您的实际代码......

对于后代,下面列出了问题。

1。声明

您需要在函数/主程序/程序的开头声明数组[][]

int array[10][4];

您还需要定义 i 和 j 并将它们设置为 0。大概您是在发布的代码之外执行所有这些操作。

请注意,我已经交换了您一直使用的“i”和“j”值。这是因为 [4][10] 会给你 4 个 10 个元素的数组,而不是 10 个 4 个元素的数组,这显然是你想要的。

2。循环遍历数组的顺序

您希望数字在穿过之前先下降。为了获得该模式,您需要比“j”更快地循环“i”值:

for(j=0;i<10;i++)
{
    for(i=0;i<4;j++)
   {
   ...
   }
}

3.赋值

我不知道这个 if 语句的用途:

if(i=0)
{
 ... 
}

这个ALWAYS不仅会返回false,它每次都会将 i 设置回 0,这样你就可以继续覆盖第一个元素,并且你的 for 循环永远不会结尾。我会考虑将其删除,因为它什么也没做。

正如@JohnBode指出的,i=0返回0(赋值操作总是返回被赋值的值),所以这个if语句等价于if(0),它总是为假。

分配相对简单:

array[i][j] = (i + 1) + (4*j)

请注意+1,因为数组索引将比所需值减一。我认为计算是正确的,老实说,它可能有点错误,这是您对这段代码最不用担心的!

打印功能很好。据我所知,这就是一切!

关于无法在C中创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34160311/

相关文章:

c - 存储固定范围 float 的有效方法

c - __builtin_types_compatible_p(t1, t2) 和指向限定类型​​的指针

c - getline()/strsep() 组合导致段错误

无法弄清楚我是如何遇到段错误的

c - case 语句 c 中的 if 语句似乎忽略条件而只执行 else

c - -DNDEBUG 会干扰 -g 标志吗?

java - IEEE 754 double 从 MIPS C 到 Java 的转换

c - 为什么不用 malloc() 就可以创建一个大小由用户输入决定的数组?

c++ - 计算复杂数组的 abs() 值的最快方法

c - 位掩码 - C 中的按位运算