用二维数组c找到最小数[关闭]

Posted

技术标签:

【中文标题】用二维数组c找到最小数[关闭]【英文标题】:find minimum number with 2d array c [closed] 【发布时间】:2020-09-05 20:23:30 【问题描述】:

我想在每一行中找到最小的数字..但是这里有什么问题...

#define NUM_EXAM    3
#define NUM_STUDENT 5

求最小函数:

int find_min(int score[NUM_EXAM][NUM_STUDENT]) 
    int exam;
    int least;
    int k, i, j;

    for (i = 0; i <= NUM_EXAM; i++)
        for (j = 0; j <= NUM_STUDENT; j++)
            least = j;

功能:

for (k = j + 1; k < NUM_STUDENT; k++)
            
                if (score[j] < score[k])
                
                    k = j;
                
                exam = score[j];
                score[j] = least;
                score[least] = exam;
            
    printf("%d", exam);

主要功能:

int main(void) 
    int score[NUM_EXAM][NUM_STUDENT] =   60, 80 ,43, 78, 93  , 75,59,81,77,81  , 83,74,97,73,81  ;
    find_min(score[NUM_EXAM][NUM_STUDENT]);

    return 0;

【问题讨论】:

for (i = 0; i &lt;= NUM_EXAM; i++) -> for (i = 0; i &lt; NUM_EXAM; i++) + for (j = 0; j &lt;= NUM_STUDENT; j++) -> for (j = 0; j &lt; NUM_STUDENT; j++) 【参考方案1】:

我注意到了一些小事:

已经提到,需要将循环条件改为 调用函数时,只传递数组的名称,而不是大小。检查例如this

由于我认为您的实现中有一些开销,我试图减少它,如果我没有误解分配,以下代码将为您提供所需的解决方案:

#include <stdio.h>

#define NUM_EXAM    3
#define NUM_STUDENT 5

void find_min(int score[NUM_EXAM][NUM_STUDENT]) 
    int exam;
    int least;
    int i, j;

    for (i = 0; i < NUM_EXAM; i++)
    
        least = 0; 
        for (j = least; j < NUM_STUDENT; j++)
        
            if (score[i][j] < score[i][least])
            
                least = j;
             
         

         printf("%d\n", score[i][least]);
    


int main(void) 
    int score[NUM_EXAM][NUM_STUDENT] =   60, 80 ,43, 78, 93  , 75,59,81,77,81  , 83,74,97,73,81  ;
    find_min(score);

    return 0;

【讨论】:

以上是关于用二维数组c找到最小数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在二维数组c ++中找到绝对最大值[关闭]

怎样求一个二维数组元素之和以及二维数组元素的最小值及下标

C语言字符数组应用示例2:用二维数组输出一个菱形图案

PHP如何取二维数组中的某列的最大值和最小值?

在二维数组中找到最小值

指针问题求教