编写一个函数find,其功能是在一个m行n列的二维整型数组中查找整数num。
本帖最后由 缈淼 于 2014-6-19 00:56 编辑最终答案
#include<stdio.h>
intfind (int *p,intm, intn,intnum, int *row,int *col);
int main()
{
int a, n, m, i, j, num, l, k;
scanf("%d%d", &m, &n);
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {
scanf("%d", &a);
}
}
scanf("%d", &num);
if(find(a, m, n, num, &l, &k) == 1)
{
printf("%d %d", l, k);
} else
{
printf("NOT FOUND");
}
return 0;
}
int find (int *p,int m, int n,int num, int *row,int *col) {
int i, j, flag = 0;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++) {
if(p == num) {
*row = i;
*col = j;
flag = 1;
break;
}
}
}
else
{
*row = -1;
*col = -1;
flag == 0
}
return flag;
}
粗率看一下,52行 return3个返回值:titter: oggplay 发表于 2014-6-17 17:21 static/image/common/back.gif
粗率看一下,52行 return3个返回值
一个也不对,你不会是为了拿这2鱼币吧。。。。 额..怎么说呢,首先建议变量命名做到见名知意;其次代码最好有注释,即使自我感觉没必要,但是我想注释是编程的灵魂,不要小看注释,它是体现编程思想所在...
15,16,20行三次调用find函数,这个太重复了....15行可以删去,20行可以改成else
find函数第一个参数可能传错了吧,或者说定义就不好,改为find(int **a,...)
find函数中i和j都等于p,且自曾都为1,这有问题吧
52行返回3个参数,这在c语言中没有这一做的,... #include <stdio.h>
#include <stdlib.h>
typedef struct{
int row;
int col;
}Pos; //定义一个存储位置的数据结构
int FindNum(int (*arr),int rows,int cols,int num,Pos *pos){
int row,col;
int bIsCnt=1; //是否继续寻找
for(row=0;bIsCnt&&row<rows;row++)
for(col=0;bIsCnt&&col<cols;col++){
if(arr==num){
pos->row=row; //找到的行和列写入该数据结构
pos->col=col;
bIsCnt=0; //跳出循环
}
}
if(bIsCnt) return 0; //没有找到返回0
return 1; //找到返回1
}
int main()
{
int arr,rows,cols;
int i,j,num;
Pos *pos=(Pos *)malloc(sizeof(Pos)); //开辟一个空间存储位置数据
printf("输入行和列(空格间开)");
scanf("%d%d",&rows,&cols);
printf("输入数据:\n");
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
scanf("%d",&arr); //输入数据
printf("输入要查询的数据:");
scanf("%d",&num);
if(FindNum(&(arr),rows,cols,num,pos)){ //返回1则找到
printf("num %d - row:%d col:%d\n",num,pos->row,pos->col);
}
else{ //没有找到
printf("Not Found!\n");
}
return 0;
}
页:
[1]