把这个从C++程序改成C语言写的,重重有赏。。。。。

2025年03月01日 07:39
有2个网友回答
网友(1):

#include 
int main()
{
    void Create_Array(int *arr);
    int Get_Largest(int *arr,int n);
    void Reverse(int *arr,int m);
    void Sort(int *arr,int n);
    int i,a[10];
    Create_Array(a);
    Sort(a,10);
    for(i=0;i<10;++i)
        printf("a[%d]=%d ",i,a[i]);
    printf("\n");
    return 0;
}
void Create_Array(int *arr)
{
    int i;
    printf("input ten numbers:\n");
    for(i=0;i<10;++i)
        scanf("%d",&arr[i]);
}
int Get_Largest(int *arr,int n)
{
    int largest=arr[0],idx=0,i;
    for(i=1;i        if(arr[i]>largest)
           idx=i;
    return idx;
}
void Reverse(int *arr,int m)
{
    int i;
    for(i=0;i<=m/2-1;++i)
    {
        int tmp=arr[i];
        arr[i]=arr[m-1-i];
        arr[m-1-i]=tmp;
    }
}
void Sort(int *arr,int n)
{
    int i,index;
    for(i=n;i>1;--i)
    {
         index=Get_Largest(arr,i);
         Reverse(arr,index+1);
         Reverse(arr,i);
    }
}
我在code blocks上运行没有问题

网友(2):

#include 

int a[10];

void Create_Array()
{
    printf("input ten numbers:");
    for(int i=0;i<10;++i)
        scanf("%d", &a[i]);
}

int Get_Largest(int *arr,int n)
{
    int largest=arr[0];
    int idx=0;
    
    for(int i=1;i        if(arr[i]>largest)
            idx=i;
    
    return idx;
}

void Reverse(int *arr,int m)
{
    for(int i=0;i<=m/2-1;++i)
    {
        int tmp=arr[i];
        arr[i]=arr[m-1-i];
        arr[m-1-i]=tmp;
    }
}

void Sort(int *arr,int n)
{
    for(int i=n;i>1;--i)
    {
        int index=Get_Largest(arr,i);
        Reverse(arr,index+1);
        Reverse(arr,i);
    }
}

int main()
{
    Create_Array();
    Sort(a,10);
    for(int i=0;i<10;++i)
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}