我正在尝试创建一个打印 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/