数组元素查找程序问题:未找到提示重复输出如何解决?
解决数组元素查找时重复打印“未找到”的问题
你的问题出在循环内的else分支会在每一次元素不匹配时都执行打印操作,所以当目标元素不在数组中时,会循环打印n次提示。要实现仅打印一次的效果,可以通过以下两种常见方式解决:
方法1:使用标志位标记是否找到元素
引入一个变量记录是否找到目标元素,循环结束后根据这个标志决定是否打印“未找到”提示:
#include <stdio.h> int main() { int a[100]; int n,i,num; int *p=a; // 0表示未找到,1表示找到 int found = 0; printf("Enter size of array:"); scanf("%d",&n); printf("Enter array elements:\n"); for(i=0;i<n;i++){ printf("Enter the element [%d]:",i); scanf("%d",p+i); } printf("Enter an element: "); scanf("%d",&num); for (i=0;i<n;i++){ if (*(p+i)==num){ printf("Array element Location is %d\n",i); found = 1; break; } // 移除原循环内的else打印逻辑 } // 循环结束后统一判断 if (!found) { printf("Array element not found\n"); } return 0; }
方法2:利用循环结束后的索引值判断
如果循环正常结束(没有触发break),说明遍历完所有元素都没找到目标,此时循环变量i的值会等于数组长度n,可以据此判断:
#include <stdio.h> int main() { int a[100]; int n,i,num; int *p=a; printf("Enter size of array:"); scanf("%d",&n); printf("Enter array elements:\n"); for(i=0;i<n;i++){ printf("Enter the element [%d]:",i); scanf("%d",p+i); } printf("Enter an element: "); scanf("%d",&num); for (i=0;i<n;i++){ if (*(p+i)==num){ printf("Array element Location is %d\n",i); break; } } // 循环结束后检查索引是否到达数组末尾 if (i == n) { printf("Array element not found\n"); } return 0; }
这两种方法都能确保仅在完全遍历数组且未找到目标元素时,才打印一次提示信息。
内容的提问来源于stack exchange,提问作者Pankit Shah
相关产品推荐
相关产品推荐

