c语言,遇到问题,求解

img


二分查找:这个printf为什么报错 他不应该输出找到的那个数的下标吗

mid的作用域在循环里,你把mid的定义放在循环外就行了

【以下回答由 GPT 生成】

问题原因: 在输出找到的数的下标时,printf语句中的占位符使用了错误的格式,导致错误。

解决方法: 将printf语句中的占位符修正为正确的格式,即使用"%d"来表示要输出的整数。

下面是修正后的代码:

#include<stdio.h>

int main(){
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int left = 0;
    int right = sizeof(arr) / sizeof(arr[0]) - 1;
    int k;

    printf("请输入您想要查找的数字: ");
    scanf("%d", &k);

    while(left <= right){
        int mid = (left + right) / 2;

        if(arr[mid] == k){
            printf("找到了这个数,它的下标为: %d,这个数为: %d\n", mid, arr[mid]);
            break;
        }
        else if(arr[mid] < k){
            left = mid + 1;
        }
        else{
            right = mid - 1;
        }
    }

    if(left > right){
        printf("找不到这个数\n");
    }

    return 0;
}

这样修改后,printf语句就能正确地输出找到的数的下标和数值了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^