代码实现过程中出现随机数,不知是哪里问题,下边是代码和编译截图
我的想法是通过随机输入10个数,然后放入数组通过调用函数进行排序,然后将已经排序好的数作为基底,再写一个二分法查找某数字是否在此数组中,结果在第一部数组排序就出现了问题,出现大量随机数,而且后边注释起来的代码不能正常编译,也就是二分法,主函数里进行多个功能着实不会,还请指教#include<stdio.h>
void printarray(int a[10])
{
int i;
for(i=0;i<10;i++)
printf("%d",&a[i]); //这个发现不能用取地址&,才可以正常调用,因为是printf语句,不能和scanf语句混淆
printf("\n");
}
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
int main()
{
int i,x,m,l,h,a[10];
l=0,h=9,m=(l+h)/2;
printf("please enter 10 num.\n");
for(i=0;i<10;i++)
scanf("%d",&a[10]); //感觉出现随机数就是这里的问题,而且在输入10个数后运行结果会多出一个数,然后才出现输出结果///真是这里,感谢指出来,a[i],a[10]已经是有地址,而且是固定的一个元素,不知道理解对不对
/*scanf("%d",&x);*/ //这行加上后需要输入11个数才会有结果显示。。。。这个放在while代码之前可以实现二分法排序了;;;;;
/*printf("%d",a[10]);*/
printf("\n");
printf("\nThe array beforing sorted is:\n");
printarray(a);
sort(a,10);
printf("\nThe array sorted is:\n");
printarray(a);
/*while(a[m]!=x && l<=h) //加上这段代码也是出现随机数,这个随机数还是不会改
{
if(a[m]>x)
h=m-1;
else
l=m+1;
m=(l+h)/2;
}
if(a[m]==x)
printf("位置:%d",m+1);
else
printf("找不到");
*/
}
[ 本帖最后由 Erfeel 于 2015-9-15 18:55 编辑 ]