编写函数实现对 n 个整数的由小到大的排序,n 为主函数中由键盘输入,n 个整数也由键盘输入。在主函数中输出排序后的结果。输入和输出应有相关的提示信息。
#define _CRT_SECURE_NO_WARNINGS /*防止scanf使用报错*/
#include<stdio.h>
#include<stdlib.h>
#define N 100
void applyDynaMemory(int* data, int n);
void freeMemory(int* data, int n);
void assignValue(int data[], int n);
void outPut(int data[], int n);
void sort(int data[], int n);
int main()
{
int n, data[N];
printf("请输入整数个数n = ");
scanf("%d", &n);
applyDynaMemory(data, n);
printf("\n请输入%d个整数:\n", n);
assignValue(data, n);
printf("\n原数据输出如下:\n");
outPut(data, n);
printf("\n排序结果输出如下:\n");
sort(data, n);
outPut(data, n);
freeMemory(data, n);
printf("\n");
return 0;
}
//为数组动态分配空间
void applyDynaMemory(int* data, int n)
{
int i;
for (i = 0; i < n; i++)
{
data = (int*)malloc(sizeof(int) * n);
}
}
//释放内存
void freeMemory(int* data, int n)
{
int i;
for (i = 0; i < n; i++)
{
free(data);
}
}
//为数组元素赋值
void assignValue(int data[], int n)
{
int i;
for (i = 0; i < n; i++)
{
scanf("%d", &data[i]);
}
}
//输出
void outPut(int data[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%5d", data[i]);
}
}
//数组升序排序
void sort(int data[], int n)
{
int i, j, temp;
for (i = 0; i < n; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (data[j] > data[j + 1])
{
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}