我正在尝试以用户指定的列数显示数组的元素。他们决定数组有多大以及将在多少列中显示。现在,我正在按列打印数组的元素,但是,我有额外的行和列,其中的数字不在数组中。因此,如果我选择数组大小和列数为 5 3,我希望看到:
1 3 5
2 4
相反,我得到类似的东西:
1 3 5
2 4 107863456
128976543 58764 896543221
5643217 90876543456 8976543
我得到 3 列 4 行。我不知道为什么会这样。这是我处理创建列的代码部分,如果需要更多代码请告诉我(x 是包含数组大小的变量,y 包含列数):
void colDisplay(int *aPtr, int x, int y) {
int i, j;
srand(time(NULL));
for(i = 0; i < x; i++) {
aPtr[i] = rand()%5+1;
}
/*Trying to format display for number of columns used*/
printf("Unsorted columns\n");
for(i = 0; i < x; i++) {
for(j = 0; j < y; j++) {
//printf("%d = %d ", (i*y)+j, aPtr[(i*y)+j]);
printf("%d ", aPtr[(i*y)+j]);
}
printf("\n");
}
}
最佳答案
内部循环正确地计算列数,但外部循环使用 x
作为行计数,而不是项目计数。要解决此问题,您可以使用一个循环来计算项目,并在正确的时间输出换行符。
j = 0;
for ( i = 0; i < x; i++ )
{
printf("%d ", aPtr[i] );
j++;
if ( j == y || i == x-1 )
{
printf( "\n" );
j = 0;
}
}
关于c - 用C语言在用户指定的列中打印一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961087/