新人求助呀
// 6.cpp : Defines the entry point for the console application.//
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
void main()
{
int a,i,j,t,m,d,x,b,k;
printf("input 9 counts:\n");
for(i=0;i<9;i++)
{
scanf("%d",&a);
}
for(i=0;i<8;i++)
{
m=i;
for(j=i+1;j<9;j++)
{
if(a<a) m=j;
if(i!=m) {t=a;a=a;a=t;}
}
}
for(i=0;i<9;i++)
printf("%4d",a);
printf("\n");
printf("find number is:\n");
scanf("%d",&x);
b=0;d=8;
while(b<=d)
{
m=(b+d)/2;
if(x=a) break;
if(x>a) b=m+1;
else d=m-1;
}
if(b<=d)
printf("要查找的数据是第%d个\n",(m+1));
else printf("errro!");
}
结果为什么要查找的数据都是第5个?? if(x=a) break;
判断语句应该是==双等号,你弄成赋值了,直接跳出循环,m=4,结果就是第五个了 枫还 发表于 2019-2-7 19:43
if(x=a) break;
判断语句应该是==双等号,你弄成赋值了,直接跳出循环,m=4,结果就是第五个了
我改成==双等号了,太是没显示啦,直接结束。 本帖最后由 枫还 于 2019-2-8 08:44 编辑
wuta 发表于 2019-2-7 22:01
我改成==双等号了,太是没显示啦,直接结束。
你这排序有问题,你想排成从大到小吗?
冒泡排序是排成从小到大,否则你应该从a开始向a判断,不然会出问题,比如第一次a<a,交换之后,第二次循环就略过了a,而a并不一定是最大的
而且你下面的while又是默认数组已经从小到大排好了,你理下思路先
页:
[1]