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;
}
推荐阅读
- python - 通过 Python 将 Google Drive 文件夹中的文件下载到本地 C-Drive
- nexus - 崩溃后 Nexus blob 大小变大
- objective-c - 检查是否在 Objective-C 中启用了“首选外部 GPU”
- android - Firebase 未创建新节点
- amazon-web-services - 使用 boto 对 cloudformation API 进行异步调用?
- ibeacon - 信标航向计算
- mysql - Mysql 复制的 GTID 为 ON 时的联合表错误
- elasticsearch - Logstash 给出 Elasticsearch Unreachable 错误
- java - 如何在 WebServiceTemplate 中检索有关证书的信息?
- c# - 记住 Xamarin Forms 条目中的文本