我有一个生成随机数并填充数组 5X5 的 C 程序。 如何从每列中获取最小元素并填充新数组? 我的程序只从整个数组矩阵中找到最小的数字。
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define M 5
void print(int (*array)[M]);
int smallest(int array[M][M]);
int main()
{
srand(time(NULL));
int array[M][M], minScore;
for(int i=0; i<M; i++)
{
for(int k = 0; k<M; k++)
{
array[i][k] =-10 + rand() % 21;
}
}
print(array);
minScore = smallest(array);
printf("Minimum is: %i\n", minScore);
system("pause");
return 0;
}
void print(int (*array)[M])
{
for(int i=0;i<M;i++)
{
for(int k=0; k<M; k++)
{
printf("%d ",array[i][k]);
}
printf("\n");
}
}
int smallest(int array[M][M])
{
int minValue;
minValue = array[0][0];
for(int i = 0; i < M; i++)
{
for(int k = 0; k < M; k++)
{
if ( array[i][k] < minValue)
minValue = array [i][k];
}
}
return minValue;
}
最佳答案
编写函数 int smallestInColumn(int array[M][M], int k)
其中 k
是您要检查的列。在其中,只需运行 i
循环。
(然后重构 int smallest
以在循环刚刚超过 k
时调用该函数)。
顺便说一下,使用%21
生成随机数会引入统计偏差,除非您的随机数生成器的周期是 21 的倍数,这不太可能。
关于c - 如何获取每列中的最小元素并将它们分配到 C 中的新数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33566992/