用二维数组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 <= NUM_EXAM; i++)
-> for (i = 0; i < NUM_EXAM; i++)
+ for (j = 0; j <= NUM_STUDENT; j++)
-> for (j = 0; j < 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找到最小数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章