,遍历二维数组与所需要查找的数字进行比较不就完了! 不可否认的是你说的是可行的,可是问题在于,
所以#include<stdio.h>
#include<stdlib.h>
/* 注意二维数组的传参可以是 int (*arr)[4],但不能是int arr[][]; */
int Find(int arr[][4], int rows, int cols, int key)
{
if(arr != NULL && rows > 0 && cols > 0)
{
/* 注意这块为什么定义变量row和col,因为要用下标查找数,但是cols和rows
还要作为循环终止的判断条件,所以不能动,于是需要另外定义两个变量进行下
标访问!*/
int row = 0;
int col = cols - 1;
while(row < rows && col >= 0)
{
/* 接下来就是 = > < key 的三种情况的判断 */
if(arr[row][col] == key)
return 1;//找到就返回1;
else if(arr[row][col] > key)
col--;
else
row++;
}
}
return 0;//0 表示没有找到
}
int main()
{
int arr[3][4] = {1,2,3,4,2,3,4,5,3,4,5,6};
int key = 6;//要查找的整数;
int row = 3;//二维数组的行;
int col = 4;//二维数组的列;
printf("%d\n",Find(arr,row,col,key));
system("pause");
return 0;
}原文:http://blog.csdn.net/bitboss/article/details/51345939