我想用零填充第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);
}
答案 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