利用matlab(或其他任何方式)生成100个随机数,并编制C语言程序进行从 小到大排序。 1、生成的随机数必须存放在文件中(.txt),在程序中读取文件数据(文件操作) 2、利用子函数实现排序算法(任意排序算法均可),在主函数中调用(函数调用) 3、必须利用指针存放数据,进行排序操作(指针操作)
时间: 2024-01-28 15:05:01 浏览: 112
以下是一个符合题目要求的C语言程序,其中使用了冒泡排序算法:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 100
void bubbleSort(int *arr, int n); // 声明冒泡排序函数
int main()
{
FILE *fp;
int num[N], i = 0;
if ((fp = fopen("random.txt", "r")) == NULL)
{
printf("Error: cannot open file.\n");
exit(1);
}
while (fscanf(fp, "%d", &num[i]) != EOF) // 从文件中读取数据
{
i++;
}
fclose(fp);
bubbleSort(num, N); // 调用冒泡排序函数
if ((fp = fopen("sorted.txt", "w")) == NULL)
{
printf("Error: cannot open file.\n");
exit(1);
}
for (i = 0; i < N; i++) // 将排序后的数据写入文件
{
fprintf(fp, "%d ", *(num + i));
}
fclose(fp);
printf("Sorting finished.\n");
return 0;
}
void bubbleSort(int *arr, int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (*(arr + j) > *(arr + j + 1))
{
temp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = temp;
}
}
}
}
```
该程序首先从文件中读取100个随机数,并将其存放在一个名为`num`的数组中。然后,程序调用了一个名为`bubbleSort`的函数,该函数使用冒泡排序算法对`num`数组进行从小到大排序。最后,程序将排序后的数据写入文件并输出"Sorting finished."。
需要注意的是,程序中使用了指针操作,即使用`*(arr + i)`来访问数组元素,其中`arr`指向`num`数组的首地址。
阅读全文