C语言设计从键盘输入10个数存入数组A,将A数按升序排列存入数组B,用二分法在B中查找元素X,输出X在B中的位置,如果未找到,给出相应提示信息
设计思路:
1.采用升序法和折半查找法。首先定义大小为10的整型数组a和b,再定义整型变量i,j,k,temp,min,x,n,m并且给n,m赋初值0,9。 2. 通过for循环将键盘输入的数依次赋给a的10个元素。 3.采用for循环,i+1赋值给k,数组下标i赋值给min。再用for循环嵌套,把k赋值给j,如果下标为j的值小于下标为min的值,则下标j赋值给min,下标为i的值赋值给temp,下标为min的值赋值给下标为i的值,然后再将temp赋值给a[min],即下标为j的值赋给a[min],以此方法找到新的最小值;如果下标为j的值大于下标为min的值,则新的最小值还是a[min]。每循环一次,就排好一个元素的顺序,以此循环直到循环结束,则10个元素会从小到大排序。 4.把数组中的元素赋值给b数组中。通过键盘输入想要查找的数x,当nm时,循环体语句不执行。重复以上循环步骤直到循环结束。 5.如果下标为i的值不等于x,则输出No found;否则,输出要查找的数x的位置。
代码如下:
#include
void main()
{
int i,j,k,a[10],b[10],temp,min,x,n=0,m=9;
printf("输入10个整数:\n");
for(i=0;i
i=(n+m)/2;
if(b[i]==x)
break;
if(b[i]x)
m=i-1;
}
if(b[i]!=x)
printf("No found");
else
printf("这是第%d个数\n",i+1);
}
代码测试图
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/996f7e8442da4c12a4c3d5ec07be7aed.png)
|