You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数组查找:如何在for循环结束后输出“未找到该数字”提示?

问题原因

你之前把else分支写在for循环内部的if判断后,每遍历到一个不匹配的元素就会触发一次else逻辑,所以会多次重复打印不存在提示。

解决方案

新增一个状态标记变量记录是否找到匹配项,等整个数组遍历完成后,再根据标记判断是否需要打印不存在提示即可,修改后的完整代码如下:

#include <stdio.h>
int main()
{
    int n,i,found = 0;
    int arr[5]={5,4,3,2,1};
    int *ptr;
    printf("input the number you want to find:\n");
    scanf("%d",&n);
    for(i=0;i<5;i++) {
        if(arr[i]==n)
        {
            ptr=&arr[i];
            printf("number '%d' is present in the array and it is the %d st/nd/rd/th term in the array.\n its address is: %p\n",n,i+1,(void*)ptr);
            found = 1;
            break; // 找到后直接跳出循环,避免不必要的遍历
        }
    }
    // 循环完全结束后再判断是否未找到
    if(found == 0) {
        printf("number not found\n");
    }
    return 0;
}
补充优化说明
  • 原代码的void main不符合C标准规范,改为int main并添加return 0是兼容性更好的写法
  • 打印指针地址建议用格式符%p,同时做void*强制类型转换,符合标准输出要求
  • 找到目标后加break跳出循环,数组规模越大,效率提升越明显

内容的提问来源于stack exchange,提问作者Zeroth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:27:01