我是一个初学者在c语言,并试图使一个代码,其中搜索一个元素在2d数组和它不工作。如果你看到的问题,请帮助。
#include <stdio.h>
void main()
{
int arr[2][3]={{1,2,3},{4,5,6}};
printf("enter your number\n");
int n,row,column,i,j,flag=0;
scanf("%d",&n);
row = sizeof(arr)/sizeof(arr[0]);
column = sizeof(arr[0])/row;
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
if(n==arr[i][j])
{
printf("the number is at index\n %d %d",i,j);
flag=1;
break;
}
if(flag==0)
printf("this is not in the program\n");
break;
}
}
}
1条答案
按热度按时间uyhoqukh1#
如果你不是在搜索第一个元素(
arr[0][0]
处的值),那么第一次迭代中的第一个if
将不会被计算为true
,flag
也不会被设置为1
。因此,第二个if
的主体将被执行,输出总是"this is not in the program\n"
。除此之外,我猜你希望你的break
在那之后在if
的范围内。因此,实际上,您需要将第二个
if
和属于它的代码移动到代码的末尾,以获得所需的结果。我不确定你是否只想打印第一个找到的元素的索引。但我猜你只想要一个,因为你的
break
在第一个if
的身体?如果是这样,你也需要退出外部的
for
循环。然后,您的代码可能看起来像这样:顺便问一下,如果这两个值都已经被硬编码了,那么计算
row
和column
的意义是什么?我建议你可以将它们改为const int
s并使用它们来创建你的数组。你可以有你的变量定义,然后像下面这样: