如何在C中的多维数组中填充特定列?

时间:2017-09-13 14:39:22

标签: c arrays

我想用零填充第2和第4列。到目前为止我已经达到了这个目标,但我无法弄明白为什么。在主要我试图用零填充整个数组。在random1中,我试图用随机数填充特定细胞。我使用for (j=0;j<25;j=j+2)来填充每个第二列的随机数,但仍然没有实现。有人可以帮忙吗?提前谢谢!

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

//int random1 (int );

int random1 (int b[5][5])
{
   int i,j;
   int *onedim = (int *)b; 
   srand(time(NULL));  
   for (j = 0; j < 25; j = j + 2)
       onedim[j] = rand() % 19 - 9; 
   for (i = 0; i < 5; i++)
   {
       for(j = 0; j < 5; j++)
       {
           printf("%d\t", b[i][j]);
       }
       printf("\n");   
   }
   return 0;
}

int main (int argc, char **argv)
{
    int i, j;
    int a[5][5];
    for(i = 0; i < 5; i++)
        for(j = 0; j < 5; j++)
        {
            a[i][j] = 0;
        }
    random1(a);
    return(EXIT_SUCCESS);
}

1 个答案:

答案 0 :(得分:1)

你的循环每隔一个值填充随机数,因为你在&#34;展平&#34;中增加2。阵列。你不能像这样跟踪当前的行或列(或者你必须使用modulo,那么,在这种情况下更好地坚持2D数组......)

最简单的方法是从每行中选出一列,每行一次(删除这个在这里没用的1D指针想法)

 for (i=0;i<5;i++)
 {
    for (j=0;j<5;j+=2)
    {
       b[i][j] = 44444; // let's fix the value just to see clearly
    }
 }

我已经完成了测试(并修正了值,所以我看到了修改过的内容):

44444   0       44444   0       44444
44444   0       44444   0       44444
44444   0       44444   0       44444
44444   0       44444   0       44444
44444   0       44444   0       44444