首先随机产生两组各100个随机数,并分别存入到data1.dat和data2.dat中。要求:
编程将随机数从小到大排序后保存
将两组文件中的数据读出并输出到屏幕验证
编程将上题中的两组文件中的数据合并。要求:
将两组文件中的数据按照从小到大的顺序合并
输出(保存)到磁盘文件“result.dat”中
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100
//选择排序
void selectSort(int array[] , int size)
{
int i,j,k,min,temp,count=1;
//需要的主循环趟数比实际的数据个数少1
for(i = 0; i < size - 1;i++)
{
min = i;
for(j = i + 1; j < size; j++ )
{
if(array[j] < array[min])
{
min = j;
}
}
if(min != i)
{
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
//保存数据的函数
void ctrl_s(char name[],int date[N]){
int i;
FILE * fp;
fp=fopen(name,"w");
if(fp==NULL){
printf("打开文件失败!\n");
}
else{
fwrite(date, sizeof(int), N, fp);
}
fclose(fp);
}
//从文件获取数据并输出
void print(char name[],int date[N]){
int i;
FILE * fp;
fp=fopen(name,"rb");
if(fp==NULL){
printf("打开文件失败!\n");
}
else{
fread(date, sizeof(int), N, fp);
}
for(i=0;i<N;i++){
if(i%10==0){printf("\n");}
printf("%d ",date[i]);
}
fclose(fp);
}
//读取数据合并后并保存到result.dat文件中
void combine(char name[],int date3[N],int date4[N]){
int i;
int date[2*N];
FILE * fp;
for(i=0;i<N;i++){
date[i]=date3[i];
}
for(i=100;i<2*N;i++){
date[i]=date4[i];
}
selectSort(date,2*N);
fp=fopen(name,"w");
if(fp==NULL){
printf("文件打开失败!\n");
}
else{
fwrite(date, sizeof(int), N*2, fp);
}
fclose(fp);
printf("结果写入文件成功!\n");
}
int main()
{
//生成随机种子
srand((unsigned int)time(NULL));
int dat1[N],dat2[N],dat3[N],dat4[N];
int i;
//获取随机数
for(i=0;i<N;i++){
dat1[i]=rand();
dat2[i]=rand();
}
//排序
selectSort(dat1,N);
selectSort(dat2,N);
//写进文件
ctrl_s("date1.dat",dat1);
ctrl_s("date2.dat",dat2);
//读取文件内容并输出
print("date1.dat",dat3);
printf("\n");
print("date2.dat",dat4);
//读取数据合并后并保存到result.dat文件中
combine("result.dat",dat3,dat4);
return 0;
}
运行截图验证:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main()
{
int i, data1[N], data2[N];
FILE *fp1, *fp2;
// 初始化随机数种子
srand(time(NULL));
// 随机生成两组数据
for (i = 0; i < N; i++)
data1[i] = rand();
for (i = 0; i < N; i++)
data2[i] = rand();
// 打开文件并写入数据
fp1 = fopen("data1.dat", "wb");
fwrite(data1, sizeof(int), N, fp1);
fclose(fp1);
fp2 = fopen("data2.dat", "wb");
fwrite(data2, sizeof(int), N, fp2);
fclose(fp2);
return 0;
}