编写一个完整的程序,实现如下功能。1.输入10个无序的整数。2.用选择排序法将以上接收的10个无序整数按从

大到小的顺序排序。3.要求任意输出一个整数,用折半法从排好序的10个数中找出该数,若存在,在主函数中输出其所在的位置,否则,提示未找到。
提示,可定义input函数完成10个整数的输入,sort函数完成输入数的排序,search函数完成输入数的查找功能

#include<stdio.h>
void input(int a[])
{
int i=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
}
void sort(int num[]){
int j,i;
int index;
int temp;
for (i=0; i<9; i++)              
{  
index=i;   
for (j=i+1; j<10; j++)            //在无序区中选取最小记录
if (num[j]>num[index])
index=j;
if (index!=i) 
{
temp=num[i];
num[i]=num[index];
num[index]=temp;
}
}
for(i=0;i<10;i++)
printf("%d ",num[i]);
}
int  search(int num[],int ins){
int k=9;
int j=0;
int i;
i=(j+k)/2;
while(j<=k) 

if(num[i]==ins)
return i;
if(num[i]<ins) 
k=i-1;
else if(num[i]>ins) 
j=i+1;
i=(j+k)/2;
}
return -1;
}
int main(){
int ss[10];
input(ss);
sort(ss);
int  n;
int l;
while(1){
scanf("%d",&n);
l=search(ss,n);
if(l!=-1)
printf("%d\n",l+1);
else
printf("提示未找到\n");
}
return 0;
}

刚刚帮别人写了这个程序,发现这里一样的需求。。呵呵。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-19
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10]={0};
int temp,i,j;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j]){ //符号可改变
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
for(i=0;i<10;i++)
printf("->%d",a[i]);
}
希望能解决您的问题。本回答被网友采纳
相似回答