这段代码没有明显的语法错误,但是在查找时存在一个逻辑错误。具体来说,当输入的数不在数组中时,程序会输出“信息不存在”,但是此时变量 `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;
}
```