C语言,帮我看下哪错了

来源:百度知道 编辑:UC知道 时间:2024/05/29 08:57:40
#include <stdio.h>

void main()
{
int i,j,temp,a[5];
int count=5;
int x,y=n-1,k,find;
printf("***********\n");
for(i=0;i<count;i++)
scanf("%d",&a[i]);
for(j=0;j<=count-2;j++)
{
for(i=count-1;i>j;i--)
{
if(a[i]<a[i-1])
{
temp=a[i];
temp=a[i-1];
a[i-1]=a[i];
}

}
}for(j=0;j<count;j++)
printf("%d\t",a[j]);
{
int x=0,y=n-1;
while(x<=y)
{
k=(x+y)/2;
if(a[k]==find)
{
printf("paixuhou",k+1);
break;
}
else if(a[k]>find)
y=k-1;
else
x=k+1;
}
if(x>y)
printf("no\n");
}

1.n没有定义,并且后面涉及到y=n-1,x且y还要做比较,所以n不但要定义,还要赋值
2.temp=a[i];
temp=a[i-1];
a[i-1]=a[i];
这段有问题,您的语句意思是将a[i]赋值给temp,再将a[i-1]再赋值给tenm,最后a[i]赋值给a[i-1].如果你想做的是将a[i]和a[i-1]的值互换的话应该为
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
3.这套语句意思不明白.
for(j=0;j<=count-2;j++)
{
for(i=count-1;i>j;i--)
{
if(a[i]<a[i-1])
{
temp=a[i];
temp=a[i-1];
a[i-1]=a[i];
}

如果是想让a[]里的5个元素从小到大排列的话,这个循环语句是达不到的.

4.接下来的
if(a[k]==find)中,find未赋值,无法进行判断.
5.再接着向下看
printf("paixuhou",k+1); 中的k+1是代表什么输出呢?
是否应该改为
printf("paixuhou");
printf("paixuhou %d",a[k+1]

我没有看出您要编的程序要实行什么样的命令, 可以告诉我吗?
是要将a[5]里的所有元素重新排序吗?还是别 ?

建议你画个流程图,再编写

第四行I回后少个,