C语言的一道实验报告,不要复制的答案

编写一个完整的程序,实现如下功能
(1)输入10个无序的整数
(2)用选择排序法将以上10个无序整数按从大到下的顺序排序
(3)要求任意输入一个整数,用折半查找法从排好序的10个数中找到该数,若存在,在主函数中输入其所处的位置,否则,提示未找到。
提示:可定义input函数完成10个整数的输入,sort函数完成输入数的排序,search函数完成输入数的查找功能

#include <stdio.h>
#include  <stdlib.h>

#define N 10

void input(int a[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    return;
}

void swap(int *a ,int *b)
{
    int t=*a;
    *a=*b;
    *b=t;
    return;
}

void sort(int a[], int n)
{
    register int i,j,max,m;
    for(i=0;i<n-1;i++)
    {
        max=i;
        for(j=i+1;j<n;j++)
        {
            if(a[max]<a[j])
            {
                max=j;
            }
        }
        if(max!=i)
        {
            swap(&a[max],&a[i]);
        }
    }
     
}

void print(int a[],int n)
{
     printf("%d",a[0]);
     int i;
     for(i=1;i<n;i++)
     {
        printf(" %d",a[i]);
     }
     printf("\n");
     return;
}

int search(int a[], int n, int x)
{
   int high = n - 1,low = 0;
   int mid;
   while(high >= low) {
        mid = (high + low)/2;
        if(a[mid] == x) return mid;
        if(a[mid] < x) high = mid - 1;
        else low = mid + 1;
   }
   return -1;
}

int main(int argc, char* argv[])
{
    int a[N];
    input(a,N);
    sort(a,N);
    print(a,N);
    int x;
    scanf("%d",&x);
    int index=search(a,N,x);
    if(index!=-1)
    {
        printf("%d\n",index);
    }
    else
    {
        printf("No %d was found\n",x);
    }
    system("pause");
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-10
#include <stdio.h>

const int MAXSIZE = 10;

void input(int a[],int n) {
int i;
for(i = 0; i < n; ++i)
scanf("%d",&a[i]);
}

void sort(int a[], int n) {
int i,j,k,t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(a[k] < a[j]) k = j;
}
if(k != i) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

int *search(int a[], int n,int x) {
int high = n - 1,low = 0;
int mid;
while(high >= low) {
mid = (high + low)/2;
if(a[mid] == x) return &a[mid];
if(a[mid] < x) high = mid - 1;
else low = mid + 1;
}
return 0;
}

int main() {
int i,a[MAXSIZE],x;
printf("输入%d整数(空格隔开):\n",MAXSIZE);
input(a,MAXSIZE);
sort(a,MAXSIZE);
printf("排序后:\n");
for(i = 0; i < MAXSIZE; ++i)
printf("%d ",a[i]);
printf("\n");
printf("请输入要查找的数:");
scanf("%d",&x);
if(search(a,MAXSIZE,x)) printf("找到了。\n");
else printf("没有找到数:%d\n",x);
return 0;
}

本回答被提问者采纳
相似回答