gpt4 book ai didi

c - 为什么我不能只获取矩阵中第一次出现的元素?

转载 作者:行者123 更新时间:2023-12-02 02:28:14 30 4
gpt4 key购买 nike

我是 C 语言新手,我正在尝试编写一个程序来使用矩阵执行某些任务,因此我正在执行一项任务来搜索矩阵的元素并给出位置(行,列)元素第一次出现的位置。功能如下:

   void Do_Search(Matrix M, int row, int col, int elem_search)
{
int i, j, aux = 0;

for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
if(M[i][j] == elem_search)
{
printf("\nElement first found in [%d][%d]", i, j);
break;
}
}
}
}

void Search_Element(Matrix M, int row, int col){
int i, j, num_elem, elem_search, elements = row * col;

while(num_elem > elements || num_elem < 1)
{
printf("\nEnter the number of elements to search >> ", element );
scanf("%d", &num_elem);
}

for(i = 0; i < num_elem; i++)
{
printf("\n\nEnter the element to search >> ");
scanf("%d", &elem_search);
Do_Search(M, row, col, elem_search);
}
}

           if(M[i][j] == elem_search)
{
printf("\nElement first found in [%d][%d]", i, j);
break;
}

我只想获取第一个出现的位置,但是当仅出现一次时,程序会给出一个位置,并且尽管元素数量大于 2,但程序会给出两个位置。

最佳答案

break; 语句仅跳出内部 for 循环。因此,外部(行)for 循环继续运行,因此如果该元素存在于多行中,您的函数将找到所有行。

一旦找到第一个元素,您可能想要return;,以便在找到单个元素后退出该函数。

 if(M[i][j] == elem_search)
{
printf("\nElement first found in [%d][%d]", i, j);
return;
}

关于c - 为什么我不能只获取矩阵中第一次出现的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65376357/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com