h-b-z-d-j-s-m 发表于 2022-9-12 16:03:48

编译运行问题

#include<stdio.h>
int main()
{
        char b={"abcdefg"};
        char a;
        scanf("%c",&a);
        int mid,lower=0,higher=7;
        while(lower<=higher)
        {
                mid=(lower+higher)/2;
                if(b==a)
                {
                        printf("%d",mid+1);
                        break;
                }
                else if(a>b)
                {
                        lower=mid+1;
                }
                else
                {
                        higher=mid-1;
                }
        }
        if(lower>higher)
                printf("**");
        return 0;
}
请问我这个哪里错了,为什么运行不起来
%5Burl=https://imgse.com/i/vXw34K%5Dhttps://s1.ax1x.com/2022/09/12/vXw34K.jpg

gandixiwang 发表于 2022-9-12 16:38:10

可以运行啊,为什么不能运行?
你这个功能就是输入a到g之间的数就会返回这个数在数组的哪个位置嘛
如果数组里没有这个数就会返回‘**’。

gandixiwang 发表于 2022-9-12 16:40:58

你这个报错也好奇怪,这些变量不是已经声明了吗

zhangjinxuan 发表于 2022-9-12 16:46:20

用的什么编译器?我用的DEV-C++

临时号 发表于 2022-9-12 16:49:57

本帖最后由 临时号 于 2022-9-12 16:52 编辑

把mid,lower,higher分开定义试试

jackz007 发表于 2022-9-12 16:58:13

          你这个代码总共 28 行,可是编译器给出的问题语句行号却是 76 ~ 91 你能确定编译的不是另外一个代码文件?

hrpzcf 发表于 2022-9-12 17:30:55

跟源代码文件的编码有关,用 VS 编译 utf-8 编码的源代码文件可能会出现这样的问题,要么把源代码文件重新以 gbk 编码保存,要么编译的时候加参数:/source-charset:utf-8 /excution-charset:gbk,要么换个编译器。

桃花飞舞 发表于 2022-9-12 22:17:33

要不你把
int mid,lower=0,higher=7;
这一句放在开头
页: [1]
查看完整版本: 编译运行问题