#include<stdio.h> int main(){ int a[]={12,13,45,43,59,53,61,65,78,72}; int b,k,i; printf("请输入需要查找的数"); scanf("%d",&b

动态 未结 0 77
小小草
小小草 LV1 2023年9月23日 23:40 发表
这段代码没有明显的语法错误,但是在查找时存在一个逻辑错误。具体来说,当输入的数不在数组中时,程序会输出“信息不存在”,但是此时变量 `k` 的值仍然为上一次循环中的值,即最后一次匹配成功的下标。因此,如果输入的数不在数组中,程序也会输出一个下标值,这是不正确的。 为了解决这个问题,可以在循环外部初始化变量 `k` 的值为 -1,表示未找到目标数。如果找到目标数,则将变量 `k` 的值更新为当前下标;否则,变量 `k` 的值保持不变。在输出结果时,只有当变量 `k` 的值不为 -1 时才输出下标值,否则输出“信息不存在”。 修改后的代码如下: ``` #include int main() { int a[] = {12, 13, 45, 43, 59, 53, 61, 65, 78, 72}; int b, k = -1, i; printf("请输入需要查找的数:"); scanf("%d", &b); for (i = 0; i < 10; i++) { if (b == a[i]) { k = i; break; } } if (k != -1) { printf("下标为%d", k); } else { printf("信息不存在"); } return 0; } ```
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复