C语言的邻居查找程序代码

标签 c for-loop multidimensional-array neighbours

指令是编写一个程序,使用二维数组查找比所有相邻元素都大的元素。

For example if my input is:

1   2   11
13  5   6
7   6   9

The output would be: 11, 13, 9

出于某种原因,尽管它根本不显示任何数字。有人可以帮助更正代码。

代码如下:

#include <stdio.h>                                          
#include "genlib.h"
#include "simpio.h"

#define N 3                                                 

bool neighbourCheck(int array[N+2][N+2], int i, int j);     
void getArray(int array[N+2][N+2]);

main()                                                  
{
      int array[N+2][N+2], i, j;

      printf("This program will ask you to enter nine integers of an aray.\n");
      getArray(array);
      for (i=1; i<N+1; i++)
      {
                for(j=1; j<N+1; j++)
                {
                         if(neighbourCheck(array, i, j)==TRUE)
                         {
                                        printf("%d\t", array[i][j]);            
                         }        
                }
      }
      getchar();
}

void getArray(int array[N+2][N+2])
{
      int i, j;

      for(j=0;j<=N+1;j++)
      {
                i=0;
                array[i][j]=-1;
                i=4;
                array[i][j]=-1;                   
      }
      for(i=1;i<N+1;i++)
      {
                j=0;
                array[i][j]=-1;
                j=4;
                array[i][j]=-1;                 
      }
      for(i=1;i<N+1;i++)
      {
                for(j=1;j<4;j++)
                {
                                printf("\nEnter a positive integer: ");
                                array[i][j]=GetInteger();                
                }
      }   
}

bool neighbourCheck(int array[N+2][N+2], int i, int j)                      
{
     int l, m;

     for(l=i-1; l<i+1; l++)
     {
                for(m=j-1; m<j-1; m++)
                {
                         if(array[l][m]>=array[i][j])
                         {
                                        return(FALSE);                            
                         }
                         return(TRUE);
                }
     }
}  

谢谢你:D

最佳答案

你必须改变部分

for(l=i-1; l<i+1; l++)
{
        for(m=j-1; m<j-1; m++)

进入:

for(l=i-1;l<=i+1;l++)
{
        for(m=j-1;m<=j-1;m++)

干杯!

关于C语言的邻居查找程序代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17714450/

相关文章:

c - 在 C、GCC 中将类型名称作为字符串获取

c - 指向函数指针数组的指针

c - fcntl F_GETLK 总是返回真

c++ - 查找序列中的 2 个最大和最小整数

java - 嵌套循环模式不起作用

javascript - JS中如何判断是否设置了多维数组项?

c - 如何根据相等元素对结构进行排序?

javascript - 循环一组名称,每隔一段时间采取行动

c++ - 在 C++ 中返回多维数组

c# - 将一维编码的二维数组划分为多个扇区