在C中的“__”行和“___”列之后停止数组?

时间:2015-12-03 02:58:12

标签: c arrays loops multidimensional-array row

我完全冻结了这个可能非常容易理解的阵列主题,但是我的大脑并不理解它。我找到的每一个视频,我发现的每个网站,关于数组的一切都没有提到过如何用随机数而不是一组固定数字来实现它的方法。

所以现在我把它作为项目的一部分,这只是第一部分,迫不及待地想要进一步发展-_-

我正在编写的代码是在10列的网格中用5行填充一个1-999的随机数的数组。我把这个代码放进去,它只是继续999个数字,直到它停止。对于我的生活,我不能想出在所述行和列之后阻止它的方法。

int main(){
	int arr[999];
	int i;
	
	for( i = 0; i < 999; i++){
		arr[i] = rand() % 999;
	}
	
	for( i = 0; i < 999; i++){
		printf("%d", arr[i]);
	}
	
	return 0;
}

我知道我现在对代码中的行和列一无所知,因为我不想让自己难以理解我尝试过的东西。我希望有人能告诉我该怎么做。我理解数组的基础知识,如何在数组中找到某个点,但这都是固定数字。从我追捕了几个小时,我找不到一个令人生畏的东西。

编辑@Kaylum:

我现在的代码很可能不是你告诉我尝试的但是:

int main(){
	int arr[5][10];
	int i;
	
	for( i = 0; i < 5/10; i++){
		arr[i] = rand() % 999;
	}
	
	for( i = 0; i < 5/10; i++){
		printf("%d\t", arr[i]);
	}
	
	return 0;
}

1 个答案:

答案 0 :(得分:1)

我想你可能误解了一两件关于数组的事情。让我试着解释一下:

如果您尝试使用随机数(在0 - 999范围内)填充长度为n的一维数组,则必须循环遍历数组中的每个条目并为其分配一个随机数。这意味着你已经循环了n个这样的条目:

int your_array[n];

for(int i = 0; i < n; i++){
    your_array[i] = rand() % 1000;
}

注意:数组索引从0开始!因此,如果您有一个长度为n的数组,则最后一个条目将位于your_array[n - 1],而不是your_array[n]

现在,您正在尝试填充二维数组。这基本上与一维中的数组没有太大的不同。如果您尝试以可视方式对其进行描绘,则会有一个包含5行和10列的网格。换句话说,除了5个尺寸为10的一维阵列之外别无其他。这意味着您必须执行与上面相同的操作,仅适用于5行中的每一行。在代码中,这看起来像这样:

int rows = 5;
int cols = 10;
int your_array[rows][cols];

// Loop over all rows.
for(int current_row = 0; current_row < rows; current_row++){
    // On each row, loop over all columns.
    for(int current_col = 0; current_col < cols; current_col++){
        your_array[current_row][current_col] = rand() % 1000;
    }
}

这有点清楚吗? 如果您有任何疑问,请与我们联系。

附录:如果要生成0到 999的随机数,则必须使用n = rand() % 1000代替n = rand() % 999,因为任何数字x除以数字y的模数只能在[0, y - 1]范围内。