网络教育的作业,谁知道怎么做的。C语言的 详细看补充吧! 两个题

第一题:利用matlab(或其他任何方式)生成100个随机数,并编制C语言程序进行从小到大排序。

1、生成的随机数必须存放在文件中(.txt),在程序中读取文件数据(文件操作)

2、利用子函数实现排序算法(任意排序算法均可),在主函数中调用(函数调用)

3、必须利用指针存放数据,进行排序操作(指针操作)

第二题: 将冒泡排序过程单独写成一个函数,再在主函数中通过调用该函数实现对任意输入的多个数据(数据个数不超过100个)进行排序,并输出排序结果。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXSIZE 100

void Sort(int a[],int n) {
int i,j,k,t;
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j)
if(a[k] > a[j]) k = j;
if(i != k) {
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
}

void show(int a[],int n ) {
int i;
for(i = 0; i < n; ++i) {
if(i &&i%10 == 0) printf("\n");
printf("%4d",a[i]);
}
if(i%10) printf("\n");
}
int main() {
int a[MAXSIZE],i,n;
int arr[MAXSIZE];
FILE *pfw,*pfr;
char unsorted[] = "undata.txt";//排序前的数据文件 
char sorted[] = "data.txt";//排序后的数据文件 
pfw = fopen(unsorted,"wt");
if(pfw == NULL) {
printf("无法打开文件:%s\n",unsorted);
exit(1);
}
srand((unsigned)time(NULL));
for(i = 0; i < MAXSIZE; ++i) {
a[i] = rand()%1000;//数的大小控制在0--999之间 
if(i && i%10 == 0) fprintf(pfw,"\n");
fprintf(pfw,"%d ",a[i]);
}
if(i%10) fprintf(pfw,"\n");
fclose(pfw);
printf("\n\n排序前:\n");
show(a,MAXSIZE);
pfr = fopen(unsorted,"rt");
if(pfr == NULL) {
printf("无法打开文件:%s\n",unsorted);
exit(1);
}
n = 0;
for(i = 0; i < MAXSIZE&&!feof(pfr);++i) {
fscanf(pfr,"%d",&arr[i]);
}
fclose(pfr);
Sort(arr,MAXSIZE);
printf("\n\n排序后:\n");
show(arr,MAXSIZE);
pfw = fopen(sorted,"wt");
for(i = 0; i < MAXSIZE; ++i) {
if(i && i%10 == 0) {
fprintf(pfw,"\n");
}
fprintf(pfw,"%d ",arr[i]);
}
fclose(pfw);
printf("\n\n");
return 0;
}

温馨提示:答案为网友推荐,仅供参考
相似回答