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

标签 c

我是 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/

相关文章:

c - 返回索引中的段错误

c - Linux execl函数的参数

C错误: expression must have a constant value (windows code example)

c - 为什么我的程序在 waitpid() 中停止而没有任何错误信息?

c - 访问postgres的共享内存

c - 处理 awk 命令时如何将 'system()' 调用转换为 'fork() + execl()' ?

c - c中 float 的基数排序

c - 预期的C错误';'在“返回”之前为什么要这样做

c - 如何在 C 中通过 tcp 套接字构建协议(protocol) header 和正文

c - C 中的重复字符串检测