C语言编程问题1.cpp(39) : fatal error C1004: unexpected end of file found

二分查找程序#include<stdio.h>#defineN5voidmain(){inta[N],x,y,i,j,m,n=1,b,c=5;for(i=0;j<N;i+... 二分查找程序
#include<stdio.h>
#define N 5
void main()
{
int a[N],x,y,i,j,m,n=1,b,c=5;
for(i=0;j<N;i++)
{
printf("请输入序列:\n",i+1);
scanf("%d",&a[i]);
}
for(i=N-1;i>=0;i--);
{
x=a[i];y=i;
for(j=0;j<i;j++)
{
if(x<a[j])
{x=a[j];y=j;
}
}
if(y!=i)
{
x=a[i];a[i]=a[y];a[y]=x;
}
}
printf("请输入需要查找的值:\n");
scanf("%d",&m);
while(n<=N)
{
b=(n+N)/2;
if(a[b]==m)
printf("找到查询值!\n");
if(a[b]>m)
c=b-1;
else
n=b+1;

printf("没找到查询值!\n");
}
展开
 我来答
24龙行大运一飞冲天
2013-05-08
知道答主
回答量:27
采纳率:0%
帮助的人:23.8万
展开全部
漏洞百出啊,楼主。
①第一个for语句,循环控制里既有i又有j
②第一个输出语句,双撇号里都没有%d的格式控制符,后面却有 i+1
③变量名不能见名知意,虽然没问题,但这样可读性很差
④最后一个while循环里,c=b-1中的c是不是该换成N?
先改掉这些基本的错误再试试吧
追问
谢谢提醒~修改后,出现cpp(33) : error C2106: '=' : left operand must be l-value。请问如何处理?
追答

最后的while循环有很大问题,我之前只看局部,没有细想,N不能出现在这个循环里(前面已定义N为符号常量,其值在编译之后不能再改变,再给它赋值是非法的),而应该用c代替,我现在把while循环及之后的部分贴出来,之所以不贴全部是因为你的排序那部分可能有问题,我没来得及检查。我调试过,整个程序还不完全正确,但我贴出来的这部分我确定是没问题的。其他你可以自己先思考,有时间我再完善。楼主加油,其实我也是初学者。


    while(n<=c)
    {
        b=(n+c)/2;
        if(a[b]==m)
        {
            printf("找到查询值!\n");
            return;
        }
        if(a[b]>m) c=b-1;
        else n=b+1;
    }
    printf("没找到查询值!\n");
}

你应该注意到了,你之前在最后一个输出语句前漏了一个右花括号。

百度网友83cdc1c
2013-05-08 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:864万
展开全部
最后的while循环少一个结束大括号
追问
加上括号后,出现cpp(33) : error C2106: '=' : left operand must be l-value。请问如何处理?
追答
你把改过的代码再贴出来看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tmfengxin1
2013-05-08 · TA获得超过623个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:112万
展开全部
最后补上花括号,程序能编译连接通过。
追问
加上括号后,出现cpp(33) : error C2106: '=' : left operand must be l-value。请问如何处理?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8864a36
2013-05-08
知道答主
回答量:32
采纳率:0%
帮助的人:14.4万
展开全部
缺少头文件吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式