求c语言大佬帮助!帮我写个小程序,谢谢

1、 数组排序:
编写以下三函数(参数a为数组,p为指向数组第一个元素的指针指针,n为数组的长度)
void Init(int a[],int n); 随机生成元素取值范围在0到99的数组
void Short(int *p,int n); 用选择法对数组中的元素从小到大排序
void Print(int *p,int n); 在屏幕上输出数组各元素的值(逗号分隔)
在主函数中调用Init函数随机生成两个数组a和b的元素, 调用Short函数对数组元素排序,调用Print函数输出数组排序前后各元素的值;将数组a和b合并到c后再调用Short函数对其排序,并输出排序前后数组c中各元素的值。
提示:
产生随机数需用到在stdlib.h中声明rand()函数、srand()函数 和在time.h中声明的time( )函数。详细用法说明参见实验5。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Init(int a[],int n); //随机生成元素取值范围在0到99的数组
void Short(int *p,int n); //用选择法对数组中的元素从小到大排序
void Print(int *p,int n); //在屏幕上输出数组各元素的值(逗号分隔)
#define N (10)

int main()
{
    int a[N],b[N],c[N*2],i;
    srand(time(NULL));
    
    Init(a,N);
    Print(a,N);
    Short(a,N);
    Print(a,N);
    
    Init(b,N);
    Print(b,N);
    Short(b,N);
    Print(b,N);
    
    for(i=0;i<N;++i)
    {
        c[i]=a[i];
    }
    for(i=0;i<N;++i)
    {
        c[i+N]=b[i];
    }
    Print(c,2*N);
    Short(c,2*N);
    Print(c,2*N);
    
    return 0;
}

void Init(int a[],int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        *a++=rand()%100;
    }
}

void Short(int *p,int n)
{
    int i,j,t;
    for(i=0;i<n-1;++i)
    {
        for(j=0;j<n-i-1;++j)
        {
            if(p[j]>p[j+1])
            {
                t=p[j];
                p[j]=p[j+1];
                p[j+1]=t;
            }
        }
    }
}

void Print(int *p,int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        printf("%d%c",*p++,i<n-1?',':'\n');
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-18
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
#define M 10
void Init(int a[], int n)
{
for (int i = 0; i < n; i++)
a[i] = rand() % 100;
}
void Print(int *p, int n)
{
for (int i = 0; i < n - 1; i++)
printf("%d,", p[i]);
printf("%d", p[n - 1]);
}
void Short(int *p, int n)
{
int index = 0;
int min = 0;
for (int i = 0; i < n; i++)
{
min = p[i];
index = i;
for (int j = i + 1; j < n; j++)
{
if (p[j] < min)
{
min = p[j];
index = j;
}
}
if (index != i) // 交换元素
{
min = p[i];
p[i] = p[index];
p[index] = min;
}
}
}
void main()
{
srand((unsigned)time(NULL));
int a[N], b[M], c[N+M];
Init(a, 10);
Init(b, 10);
printf("数组a:");
Print(a, 10);
printf("\n");
printf("数组b:");
Print(b, 10);

printf("\n\n排序后\n");
Short(a, 10);
Short(b, 10);
printf("数组a:");
Print(a, 10);
printf("\n");
printf("数组b:");
Print(b, 10);
printf("\n");

for (int i = 0; i < N; i++) c[i] = a[i];
for (int i = 0; i < M; i++) c[i + N] = b[i];

printf("数组C:");
Print(c, N + M);
printf("\n");

}

相似回答