2014-03-31 33 views
-2

所以我有这个计划采取一个整数(我),然后做一个二维数组IXI 和部分我可以很好地工作,但现在我试图找到最小的数在数组中,这总是返回0.在二维数组查找C语言中最小

int smallest_number(int b[MAXrow][MAXcol], int n) 
{ 
    int min = b[0][0]; 
    int x,y; 

    for (x = 0; x < n; x++) 
    { 

     for (y = 0; y < n; y++) 
     { 
      if (min > b[x][y]) 
      { 
       min = b[x][y]; 

      } 

     } 
    } 
return min; 
} 
+0

复制 - 粘贴而不是键入它从你的代码;也许“真实”的代码有更多的错误,但没有通过这篇文章。另外,显示你正在调用这个函数的代码。我怀疑如果'MAXrow'和'MAXcol'不同,那么在这两个维度上使用'n'是不对的。 –

回答

1

您正在返回“min”变量太快。目前,它在外部循环中。你想要的是让它在另一个循环之外。

像这样:

int smallest_number(int b[MAXrow][MAXcol], int n) 
{ 
    int min = b[0][0]; 
    int x,y; 

    for (x = 0; x < n; x++) 
    { 
     for (y = 0; y < n; y++) 
     { 
      if (min > b[x][y]) 
      { 
       min = b[x][y]; 
      } 
     } 
    } 

    return min; 
} 
+0

糟糕。实际上,它是如何在我的代码中写入的,我在复制时弄乱了它。无论哪种方式,它仍然返回0. – user3427697

+0

无后顾之忧。一些问题:** 1。)**可能0是最小数量吗? ** 2。)**您确定二维数组在x和y方向的大小为'n'吗? – tambykojak

+0

其实我想通了,我的主要功能我只是调用的函数,但我并没有设定最低等于该函数返回什么。感谢您的帮助! – user3427697

0
You can try code below to find maximum & minimum from a matrix of any order. 

Code : 

#include<stdio.h> 

void acc(int [5][5],int,int); 
void maxmin(int [5][5],int,int); 

void main() 
{ 
    int a[5][5],r,c; 

    printf("\n\t\t**Smallest & largest no. from matrix**\n"); 

    printf("\n\tEnter the size of row:\n\t"); 
    scanf("%d",&r); 
    printf("\tEnter the size of column:\n\t"); 
    scanf("%d",&c); 

    acc(a,r,c); 
    maxmin(a,r,c); 
} 

void acc(int m[5][5],int r,int c) 
{ 
    int i,j; 
    printf("\n\tenter the elements of matrix\n"); 
    for(i=0;i<r;i++) 
    { 
     for(j=0;j<c;j++) 
     { 
      printf("\telement[%d][%d]= ",i,j); 
      scanf("%d",&m[i][j]); 
     } 
    } 
} 

void maxmin(int m[5][5],int r, int c) 
{ 
    int max=m[0][0], min=m[0][0],i,j; 

    for (i=0; i<r; i++) 
    { 
     for (j=0; j<c; j++) 
     { 
      if(m[i][j]>max) 
       max= m[i][j]; 

      if(m[i][j]<min) 
       min= m[i][j]; 
     } 
    } 
    printf("\n\tGreatest no. is : %d\n",max); 
    printf("\n\tSmallest no. is : %d\n",min); 
}