2574 - 指针练习-5

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

编写一个函数find,其功能是在一个m行n列的二维整型数组中查找整数num。

函数原型可参考如下:

int  find (int *p,  int  m, int  n,  int  num, int *row,  int *col);

其中,p为指向二维数组首元素的指针,n为数组的行数,m为数组的列数,num为待查找的整数,row为指向首次找到的num所在行的指针,col为指向num所在列的指针

如果能找到欲查找的数,则函数返回1,并将row及col指针所指内容分别赋值为首次找到的num所在的行与列下标;如果找不到对应的数,则函数返回0,并将row及col指针所指内容分别赋值为-1

编写程序,从键盘输入两个正整数m和n(1<=m,n<=100),分别代表数组的行数和列数,接着输入m*n个整数,代表数组元素的初始值,最后输入要查找的数num,调用find函数进行查找,如果能找到该数,则输出首次找到该数的行下标与列下标(用空格分隔);如果找不到,则输出"NOT FOUND"。

题目输入

3 4 24 15 16 19 69 63 52 42 15 95 7 6 52

题目输出

1 2

输入/输出样例

输入格式

4 4 12 89 96 75 57 2 69 100 36 31 75 88 7 6 18 53 20

输出格式

NOT FOUND

C语言解答

#include<stdio.h>
int find (int a[][100],  int  m, int  n,  int  num, int *row,  int *col)
{
	int i,j,x=0;
	*row = 0;
	*col = 0;
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			if(a[i][j]==num)
			{
				*row = i;
				*col = j;
				return 1;
			}
		}
	}
	return 0;
}
int main()
{
	int a[100][100];
	int m,n;
	int i,j,x;
	int (*p)[100];
	int num;
	int row;
	int col;
	scanf("%d",&m);
	scanf("%d",&n);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}

	p = a;

	scanf("%d",&num);
    x = find (a, m, n, num,&row,&col);
	if(x == 1)
	{
		printf("%d %d",row,col);
	}

	if(x == 0)
	{
		printf("NOT FOUND");
	}
	return 0;
}

C++解答

#include<stdio.h>
int main()
{
	int  find (int *p,  int  n, int  m,  int  num, int *row,  int *col);
	int *p, m, n, num, *row, *col, i, j, a[100][100], d, c, b;
	p=a[0];
	row = &d;
	col = &c;
	scanf("%d%d", &n, &m);
	for(i=0; i<n*m; i++)
	{
		scanf("%d", p+i);/*修改正确的关键地方*/		
	}
	scanf("%d", &num);
	b = find (p, n, m, num, row, col);
	if(b==1)
		printf("%d %d", d, c);
	else if(b==0)
		printf("NOT FOUND");

}


int find(int * p,  int  n, int  m,  int  num, int *row,  int *col)
{
	    int i, j, s;
	    *row = -1;
	    *col = -1;
	    for(i = 0 ; i < n ; i++)
		{
		        for (j = 0 ; j < m ; j++)
				{					
			            if(*(p + i*m + j) == num)
						{
				                *row = i;
				                *col = j;				               
				                return 1;
			            }
		        }
	    }

	    return 0;
}