【问题标题】:find minimum number with 2d array c [closed]用二维数组c找到最小数[关闭]
【发布时间】: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++)

标签: c arrays minimum


【解决方案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;
    }
    

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2011-04-13
    • 1970-01-01
    • 2016-03-11
    • 2012-04-21
    • 2018-07-05
    相关资源
    最近更新 更多