首页 理论教育 C++语言中学版:文件重定向

C++语言中学版:文件重定向

时间:2023-08-13 理论教育 版权反馈
【摘要】:图11-3 “排序.in”记事本窗口图11-4 “排序.out”记事本窗口图11-5标记注释窗口在确保程序编译运行正确后,一定要删除注释标志“//”,恢复重定向语句。然后再次编译运行程序,或者单击“文件”菜单的“保存”命令,保存重定向的设置。

C++语言中学版:文件重定向

在NOIP复赛、NOI竞赛和一些中小学信息学竞赛中都要求使用文件作为数据的输入和输出,例如:记事本(.txt)文档等。程序需要对数据文件进行操作,通常只需要同时打开一个输入文件和一个输出文件,因此文件的操作可以使用一种简便的方法:输入/输出文件重定向

标准输入和标准输出的概念如下:

(1)cin或scanf使用的输入设备是键盘,被称为标准输入:stdin。

(2)cout或printf使用的输出设备是显示器,被称为标准输出:stdout。

C++语言可以使用freopen函数将stdin和stdout重新定向到相关的文件,使原来的标准输入和标准输出转变成文本输入和文本输出。

应用freopen()函数以只读方式r(read)打开输入文件“∗.in”。 “∗”为文本文件名。

说明:程序后面使用标准输入和标准输出就相当于对文件进行读和写的操作。格式:

应用freopen()函数以写入方式w(write)打开输出文件“∗.out”。

格式:

应用fclose()关闭文件:

格式:

例11-5 输入n个数,将它们按从大到小的顺序输出(n<=10000)。

输入文件(排序.in):第一行输入数n,表示参与排序的有n个数;

第二行输入n个数。

输出文件(排序.out):输出排序后的n个数,两两之间用一个空格隔开。(最后有空格)

输入示例:

输出示例:

程序如下:

在C++程序中使用freopen函数将stdin和stdout重新定向到文本文件,使原来的标准输入和输出转变成文本输入和输出。当程序编译运行时,有时会出现编译成功的提示,如图11-1所示,也有时并不出现“已编译”的提示。随后出现的输出(∗.exe)窗口里不能输入信息,也没有输出内容,如图11-2所示。

图11-1 编辑成功提示

图11-2 输出(∗.exe)窗口

需要做的操作步骤是:

(1)在程序源代码所在的文件夹里新建“∗.in”文件,在里面输入“cin>>”语句需要输入的内容后单击“文件”菜单的“保存”命令。如图11-3所示。

(2)查看文件夹里自动生成的“∗.out”文件,那里会出现运行结果,如图11-4所示。

参加上机竞赛时,选手编写程序后,一定希望看到程序的编译情况,此时可以将两个freopen语句标记为注释语句,如图11-5所示。这样就取消了到文本文件的重定向,保持了原来的标准输入和输出,就能正常编译和运行了。

图11-3  “排序.in”记事本窗口

图11-4  “排序.out”记事本窗口

图11-5 标记注释窗口

在确保程序编译运行正确后,一定要删除注释标志“//”,恢复重定向语句。然后再次编译运行程序,或者单击“文件”菜单的“保存”命令,保存重定向的设置。

如果删除注释标志“//”后,没有保存重定向的设置,会造成没有测试数据,成绩为0分的情况。这是初学者上机竞赛存在的普遍问题,请读者千万注意。

1.输入三条边的长度,请判断它们能否组成一个三角形。

【输入文件】输入文件:三角形.in(www.xing528.com)

文件共一行,有三个用空格分开的正整数a、b、c(1≤a、b、c≤50),分别表示题中三条边的长度。

【输出文件】输出文件:三角形.out

文件共一行,是一个字符串。若能构成一个三角形,输出“Yes”,否则输出“No”。请注意字母大小写

【样例输入1】

【样例输出1】

【样例输入2】

【样例输出2】

2.输入N个不超过10000的正整数,将它们逆向输出。

【输入文件】输入文件名:逆向.in

第1行,一个整数N,范围是[1,10000];

第2行,N个整数,范围是[1,10000]。

【输出文件】输出文件名:逆向.out

N个整数。

【样例输入】

【样例输出】

3.手机通讯录里保存了很多人的姓名和电话号码。已知手机里4人的姓名和电话号码,请根据姓名找到对应的电话号码。

【输入文件】输入文件名:phone.in

第1行,一个数n,表示手机通讯录里有n个人;

下面n行,每行一个字符串和一个数字表示一个人的姓名和电话号码;

下一行一个数字m;

后面m行,每行一个字符串表示要查找人的姓名。

【输出文件】输出文件名:phone.out

输出m行,分别为查找到的姓名所对应的电话号码。

【样例输入】

【样例输出】

4.在任意的一个四位自然数范围内,输出符合以下要求的四位自然数ABCD,并统计它们的个数。

(1)这个四位自然数是素数

(2)它的前两位数AB和后两位数CD都是完全平方数。

【输入文件】输入文件名:四位数.in

文件中只有一行,包含用一个空格隔开的两个四位自然数M和N(其中1000≤M<N≤9999)。

【输出文件】输出文件名:四位数.out

前若干行:每行一个数,为所有满足上述条件的自然数;

最后一行:只有一个数,为满足上述条件的自然数的个数。

【样例输入】

【样例输出】

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈