无法在C中创建数组

时间:2015-12-08 15:56:12

标签: 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]);    
    }

}

感谢您的帮助

5 个答案:

答案 0 :(得分:2)

有很多问题,人们都注意到了。我已经注意到在评论中(当我写完这篇文章的时候),你已经说过&#34;它的作用是&#34;一旦你添加了正确的分配。上帝知道怎么做,但可能你问题中的代码并不代表你的实际代码...

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

1。声明

您需要在函数/ Main / Program

的开头声明array [] []
int array[10][4];

你还需要定义i和j并将它们设置为0.大概你在发布的代码之外做了所有这些。

请注意,我已经在&#34; i&#34;周围进行了交换。和&#34; j&#34;您一直在使用的价值观。这是因为[4] [10]将为您提供4个10个元素的数组,而不是10个4个元素的数组,这是您显然想要的。

2。通过阵列循环的顺序

你希望这些数字在它们发生之前就会消失。为了获得这种模式,你需要骑自行车穿越&#34; i&#34;价值快于&#34; j&#34;:

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

3.The Assign

我不知道这个if语句应该做什么:

if(i=0)
{
 ... 
}

始终不仅会返回 false ,而且每次都会将我设置为0,因此您只需要覆盖第一个元素和for循环永远不会结束我会考虑把它拿出来,因为它什么都不做。

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

分配相对简单:

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

注意+ 1&#39; s,因为数组索引将比所需值小1。我认为计算是正确的,说实话,这对您的代码最不用担心,可能会有点错误!

打印功能很好。据我所知,一切都好!

答案 1 :(得分:1)

您应该阅读更多内容,并练习更多基本的编码问题。

当您存储数字row-wize时,您需要以这种方式编码

int arr[4][10], i, j, count = 1;

for(i=0;i<10;i++)       //this is for columns
{
    for(j=0;j<4;j++)    //this is for the rows
    {
        array[j][i] = count++;
        //array is accessed with [j][i] because you want to move row-wize down
        //count is keeping track of the number to be stored
    }
}

答案 2 :(得分:0)

我不确定我的问题是否正确,但我建议你尝试这样的事情:

int i, j,array[4][10], number=0;

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

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

我希望这会有所帮助。

答案 3 :(得分:0)

非常简单的代码,以获得概念 - 它可能做得更好,但目标只是简单地向您展示这个概念:

//Initialize your counter variable.
int count = 1;

//Declare rows, columns.
int row, col;

//Declare your array. 4 Rows, 10 Columns.
int array[4][10];

//Iterate columns.
for(col = 0; col < 10; col = col + 1)
{
    //Iterate rows.
    for(row = 0; row < 4; row = row + 1)
    {
        array[row][col] = count;

        count = count + 1;
    }

}

然后您可以简单地迭代并打印您的数组:

for(row = 0; row < 4; row = row + 1)
{
    for(col = 0; col < 10; col = col + 1)
    {
        printf("%d ", array[row][col]);
    }
    //Print newline at the end of the row.
    printf("\n");

}

答案 4 :(得分:0)

查看第一行中的模式:

1  5  9   13  17  21  25  29  33  37

从1开始,添加4以获得5,添加4以获得9等等。因此,要获取每列的值,请将行数添加到起始值:

for ( column_number = 0; column_number < max_cols; column_number++ )
  column_value = start_value + max_rows * column_number

您的start_value与行号相同:1,2,3,4等。

for ( row_number = 1; row_number <= max_rows; row_number++ )
{
  for ( column_number = 0; column_number < max_columns; column_number++ )
  {
    column_value = row_number + max_rows * column_number;
  }
}

因此,每个a[i][j]的值为(i+1) + j * max_rows(假设您要以1开头;请记住C中的数组始终从0索引到N-1);

请注意,您不需要数组来执行此操作:

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv )
{
  /**
   * Specify default values
   */
  int rows = 4;
  int cols = 10;
  int initialValue = 1;

  /**
   * Override defaults with command-line parameters, if any
   */
  if ( argc > 3 )
    initialValue = (int) strtol( argv[3], NULL, 10 );

  if ( argc > 2 )
    cols = (int) strtol( argv[2], NULL, 10 );

  if ( argc > 1 )
    rows = (int) strtol( argv[1], NULL, 10 );

  /**
   * Print the table
   */
  for ( int i = 0; i < rows; i++ )
  {
    for ( int j = 0; j < cols; j++ )
    {
      printf("%2d    ", (initialValue + i) + j * rows );
    }
    putchar( '\n' );
  }

  return 0;
}

此代码在不使用数组的情况下打印出表格。它还允许您在命令行上指定行,列和起始值,默认值分别为4,10和1:

$ ./rows
 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

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

$ ./rows 5 5 0
 0     5    10    15    20
 1     6    11    16    21
 2     7    12    17    22
 3     8    13    18    23
 4     9    14    19    24