c - 如何获取每列中的最小元素并将它们分配到 C 中的新数组中?

标签 c arrays

我有一个生成随机数并填充数组 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/

相关文章:

c - 在传递给函数和访问存储在 C 中的值时有效地使用结构的结构

javascript - 使用递归在二维数组中查找路径

python - 如何用零除返回0

javascript - 如何在 Javascript 中对二维数组进行子集化?

c - UDP sendto() 给出 "invalid user space address"错误

c - c - 套接字编程中的发送和接收结构

javascript - 为什么我的数组元素被报告为未定义?

c - 按位积分去抖动运算符混淆

c - 为什么在使用 "Quotes"创建 char* 时不需要释放内存

c - 一次又一次分配相同的内存空间