厦大C语言上机 1500 归并排序

1500.归并排序


时间限制: 1000 MS          内存限制: 65536 K
        
提交数: 103 (0 users)          通过数: 102 (98 users)


问题描述
    给定两个文件。每个文件内都记录着一组按从小到大顺序排列的整数。要求合并这两组文件的内容,将所有数按从小到大的顺序输出到第三个文件中。
(注意:本次练习采用文件操作,评测机无法评测,请同学们不要提交,自行检查运行结果。)


输入格式
  第一行,字符串filename1,表示第一个文件的路径名。
  第二行,字符串filename2,表示第二个文件的路径名。
  第三行,字符串filename3,表示第三个文件的路径名。
  所有文件的结构为:文件内每行一个整数。


输出格式
  无控制台输出。


样例输入
  File1.txt
  File2.txt
  File3.txt


样例输出
  无控制台输出。


来源

xmu

#include <stdio.h>

int main()
{
    char filename1[50] = { 0 };
    char filename2[50] = { 0 };
    char filename3[50] = { 0 };
    int number1, number2;
    FILE *fp1, *fp2, *fp3;

    scanf("%s", filename1);
    scanf("%s", filename2);
    scanf("%s", filename3);

    fp1 = fopen(filename1, "r");
    fp2 = fopen(filename2, "r");
    fp3 = fopen(filename3, "w");

    fscanf(fp1, "%d", &number1);
    fscanf(fp2, "%d", &number2);
    while (!feof(fp1) && !feof(fp2))
    {
        if (number1 <= number2)
        {
            fprintf(fp3, "%d\n", number1);
            fscanf(fp1, "%d", &number1);
        }
        else
        {
            fprintf(fp3, "%d\n", number2);
            fscanf(fp2, "%d", &number2);
        }
    }
    while (!feof(fp1))
    {
        fprintf(fp3, "%d\n", number1);
        fscanf(fp1, "%d", &number1);
    }
    while (!feof(fp2))
    {
        fprintf(fp3, "%d\n", number2);
        fscanf(fp2, "%d", &number2);
    }

    fclose(fp1);
    fclose(fp2);
    fclose(fp3);

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值