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");
} 展开
#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");
} 展开
4个回答
展开全部
漏洞百出啊,楼主。
①第一个for语句,循环控制里既有i又有j
②第一个输出语句,双撇号里都没有%d的格式控制符,后面却有 i+1
③变量名不能见名知意,虽然没问题,但这样可读性很差
④最后一个while循环里,c=b-1中的c是不是该换成N?
先改掉这些基本的错误再试试吧
①第一个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");
}
你应该注意到了,你之前在最后一个输出语句前漏了一个右花括号。
展开全部
最后的while循环少一个结束大括号
追问
加上括号后,出现cpp(33) : error C2106: '=' : left operand must be l-value。请问如何处理?
追答
你把改过的代码再贴出来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后补上花括号,程序能编译连接通过。
追问
加上括号后,出现cpp(33) : error C2106: '=' : left operand must be l-value。请问如何处理?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询