这是个程序题,实在是没有思路

动态内存分配-文件读写一要求
1、输入N
2、申请存放N个整数的内存
3、用100以内的随机数填充内存
4、将N个数写入文件
5、将文件中的N个数读入内存
6、对N个数排序
7、将排序后的N个数写入另一个文件

运行结果:

img

代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//冒泡排序
void bubble_sort(int a[],int n)
{
    int i,j,t;
    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-1-i;j++)
        {
            if(a[j] > a[j+1])  //从小到大,升序
            {
                t = a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
}

int main()
{
    int *a,i,n,m;
    FILE* fp;
    printf("请输入N:");
    scanf("%d",&n);
    a = (int*)malloc(n*sizeof(int));
    srand((unsigned int)time(NULL));
    //打开文件
    fp = fopen("a.txt","w"); //打开文件
    for(i=0;i<n;i++)
    {
        a[i] = rand()%100;  //生成0-100以内的数
        //写文件
        if(i<n-1)
            fprintf(fp,"%d ",a[i]);
        else
            fprintf(fp,"%d",a[i]);
    }
    fclose(fp);
    
    if((fp = fopen("a.txt","r"))==0)
    {
        printf("文件打开失败\n");
        free(a);
        a = 0;
        return 0;
    }
    m = 0;
    while(!feof(fp))
    {
        fscanf(fp,"%d",&a[m]); //这里使用m保存读取的数据个数,可以跟n对比一下,看看读取的是否正确
        m++;
    }
    fclose(fp);
    //排序
    bubble_sort(a,m);
    fp = fopen("b.txt","w");
    for(i=0;i<m;i++)
    {
        if(i<m-1)
            fprintf(fp,"%d ",a[i]);
        else
            fprintf(fp,"%d",a[i]);
    }
    fclose(fp);
    free(a);
    a = 0;
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
using namespace std;
int cmp(const void* _a, const void* _b) {
    int* a = (int*) _a; int *b = (int*) _b;
    return *a - *b;
} 
int main() {
    freopen("txt.in", "r", stdin);
    freopen("txt.out", "w", stdout);
    int n; scanf("%d", &n);
    int *a = new int[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
    }
    qsort(a, n, sizeof(a[0]), cmp); 
    for (int i = 0; i < n; ++i) {
        printf("%d ", a[i]);
    }
    return 0;
}