1500.归并排序
时间限制: 1000 MS 内存限制: 65536 K
提交数: 103 (0 users) 通过数: 102 (98 users)
问题描述
给定两个文件。每个文件内都记录着一组按从小到大顺序排列的整数。要求合并这两组文件的内容,将所有数按从小到大的顺序输出到第三个文件中。
(注意:本次练习采用文件操作,评测机无法评测,请同学们不要提交,自行检查运行结果。)
输入格式
第一行,字符串filename1,表示第一个文件的路径名。
第二行,字符串filename2,表示第二个文件的路径名。
第三行,字符串filename3,表示第三个文件的路径名。
所有文件的结构为:文件内每行一个整数。
输出格式
无控制台输出。
样例输入
File1.txt
File2.txt
File3.txt
样例输出
无控制台输出。
来源
时间限制: 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;
}