c语言任意输入10个数,先将其按由大到小的顺序排列;再输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
时间: 2024-02-19 08:59:11 浏览: 65
好的,这是一个比较典型的 C 语言题目,我们可以按照以下步骤来解决:
1. 排序:输入10个数,可以使用冒泡排序或者快速排序等算法将其按照从大到小的顺序排列,这里我简单给出一个冒泡排序的示例代码:
```c
#include<stdio.h>
int main()
{
int a[10], i, j, temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d", &a[i]); //输入10个数
for(i=0;i<9;i++) //进行冒泡排序
for(j=0;j<9-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("排序后的结果为:\n");
for(i=0;i<10;i++)
printf("%d ", a[i]); //输出排序后的结果
printf("\n");
return 0;
}
```
2. 折半查找:输入一个数,可以使用折半查找法在已经排好序的数组中查找该数的位置,这里给出一个示例代码:
```c
#include<stdio.h>
int main()
{
int a[10], i, j, temp, num, low, high, mid; //定义变量
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d", &a[i]); //输入10个数
for(i=0;i<9;i++) //进行冒泡排序
for(j=0;j<9-i;j++)
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
printf("排序后的结果为:\n");
for(i=0;i<10;i++)
printf("%d ", a[i]); //输出排序后的结果
printf("\n");
printf("请输入要查找的数:\n");
scanf("%d", &num); //输入要查找的数
low=0; //初始化查找范围的上下限
high=9;
while(low<=high) //开始折半查找
{
mid=(low+high)/2;
if(num==a[mid])
{
printf("%d是数组中的第%d个元素。\n", num, mid+1);
break;
}
else if(num<a[mid])
high=mid-1;
else
low=mid+1;
}
if(low>high)
printf("无此数。\n"); //如果没找到,输出“无此数”
return 0;
}
```
以上就是完整的 C 语言代码,可以直接复制到编译器中运行,希望能够帮到您!
阅读全文