【c语言】随机产生两组数从小到大排序后,分别存入两个文件,并读出两组数据,将两组数据合并并存入磁盘文件。

首先随机产生两组各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;
}

运行截图验证:

img

#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;
}