将输入的整数排序并指定位置逆序存放

来源:互联网 发布:淘宝美工接单价格 编辑:程序博客网 时间:2024/05/29 02:53

输入n个整数,编写函数实现以下操作,要求用指针实现:①对n个数进行排序;
②将从指定位置的m个数逆序存放;例如:原序列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到的新数列为2,4,6,16,14,12,10,8,18,20)。

③输出这组数.

#include <stdio.h>#include <time.h>#include <stdlib.h>#include <string.h>#define max 100int sort(int *array, int n){    int i,j,k;    for(i=0;i<n;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if (array[j]<array[k])                k=j;        }        if(i!=k)        {            j=array[i];            array[i]=array[k];            array[k]=j;        }    }    return 0;}int reverse(int *array, int begin, int length){    int i, temp;    int *p,*q;    for(p=array+begin-1,q=array+begin+length-2;p<q;p++,q--)    {        temp=*p;        *p=*q;        *q=temp;    }    return 0;}int output(int *array, int n){    int i;    for(i=0;i<n;i++)        printf("%3d ", array[i]);    printf("\n");    return 0;}int main(){    int i,n;    int array[max];    int begin,length;    printf("请输入数据的个数:\n");    scanf("%d",&n);    printf("请输入数据:\n");    for(i=0;i<n;i++)        scanf("%d",&array[i]);    sort(array,n);    printf("排序结果为:\n");    output(array,n);    printf("请输入开始的位置和逆序数字的个数:\n");    scanf("%d%d",&begin,&length);    reverse(array,begin,length);    output(array,n);    return 0;}
0 0
原创粉丝点击