将 scanf("%d",&x) 改为:scanf("%f",&x) 或者:
将 float x改为 int x
如图中1处则槐返,没有输出的猪腰子问题在这里,p的初始值应为a.而不是0,因为之前已经定义了p=a这里可以明码改成for(p<a+5p++)。
另外第二处经过for循环,p已经指向数孙饥组的下一个地址,此时输出值不确定。这里没有语法错误。需要注意就是。
你的二分法查找的C语言程序有两租念处问题,我帮你改弊颂困好了(改樱型动的地方见注释)
#include <stdio.h>
#include <math.h>
void main(){//这里把mian改成main
int a[10]={0,1,6,16,23,56,80,100,110,115}
int low,high,mid,found,n
low=0
high=9
found=0
printf("write a number:\n")
do{
scanf("%d",&n)
getchar()
}while(n<a[0]||a[9]<n)//这里把n小于a[9]改成a[9]小于n
while(low <= high){
mid=(low+high)/2
if(n==a[mid]){
found=1
break
}else if(a[mid]>n)
high=mid-1
else
low=mid+1
}
if(found==1){
printf("this number bit is %d\n",mid)
}else{
printf("NO no %d\n",n)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)