#CSPJ26D14. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作
2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作
Day 14 文件操作:评测机不看屏幕,只看文件
建议用时:15~25 分钟。请先阅读知识点讲解,再完成下方客观题;直接勾选答案后提交,系统会自动判分。
知识点讲解
答案解析
客观题(共 10 题)
请在每题下方直接选择答案。判断题选择“正确”或“错误”,全部完成后统一提交。
第 1 题
CSP-J 复赛(第二轮)要求程序使用文件输入输出,最主要的原因是( )。
{{ select(1) }}
- 文件读写比键盘输入速度更快,可以节省程序运行时间
- 评测机在后台自动运行程序,没有人敲键盘也没有人看屏幕,只按题目规定的文件名读写文件
- C++ 标准规定 main 函数中必须先打开文件才能使用 cin
- 只有使用文件,程序中才可以使用 cin 和 cout
第 2 题
下列语句中,能把标准输入重定向到当前目录下 data.in 文件的是( )。
{{ select(2) }}
freopen(stdin, "data.in", "r");freopen("data.in", "w", stdin);freopen("data.in", "r", stdin);freopen("r", "data.in", stdin);
第 3 题
若运行程序前 data.out 中已经存有内容,程序执行 freopen("data.out", "w", stdout); 之后( )。
{{ select(3) }}
- data.out 中原有的内容被全部清空,程序的输出从文件开头重新写起
- 程序的输出被追加到原有内容的后面,原有内容保留
- 程序会报错退出,因为该文件已经存在
- 原有内容全部保留,程序输出只覆盖开头等长的一段字节
第 4 题
在 main 函数开头执行 freopen("data.in", "r", stdin); 之后,下列说法正确的是( )。
{{ select(4) }}
- 之后只能用 scanf 读数据,cin 会失效
- 之后只能用 cin 读数据,scanf 会失效
- cin 和 scanf 都不能再用,必须改成 ifstream
- cin 和 scanf 都照常使用,只是数据来源由键盘变成了 data.in
第 5 题
使用 C++ 文件流从 data.in 中读入一个整数 n,下列写法正确的是( )。
{{ select(5) }}
ifstream fin("data.in");之后写cin >> n;ifstream fin("data.in");之后写fin >> n;ofstream fin("data.in");之后写fin >> n;ifstream fin("data.in");之后写fin << n;
第 6 题
设 data.in 中只有一行内容 1 2 3,运行下面的程序,屏幕上的输出是( )。
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fin("data.in");
int x = 0;
int cnt = 0;
while (!fin.eof()) {
fin >> x;
cnt++;
}
cout << cnt << endl;
fin.close();
return 0;
}
{{ select(6) }}
- 2
- 3
- 4
- 程序陷入死循环,没有输出
第 7 题
要从输入中不断读入整数,一直读到文件结束为止,下列循环写法 不正确 的是( )。
{{ select(7) }}
while (scanf("%d", &x) != EOF) { ... }while (cin >> x) { ... }while (scanf("%d", &x) == 1) { ... }while (!cin.eof()) { cin >> x; ... }
第 8 题
在 Windows 下编写 C++ 程序,要表示文件 D:\data\a.in,下列写法 错误 的是( )。
{{ select(8) }}
"D:\data\a.in""D:\\data\\a.in""D:/data/a.in"- 把 a.in 和程序放在同一个文件夹,直接写
"a.in"
第 9 题
复赛某题的题目名称为 apple,下列做法符合赛场规范的是( )。
{{ select(9) }}
- 源程序保存为 apple.cpp,程序中读 apple.txt、写 answer.txt
- 程序先输出
请输入 n 的值:提示,再从 apple.in 读入数据 - 在考生目录下建文件夹 apple,其中保存 apple.cpp,程序读 apple.in、写 apple.out,不输出任何多余提示
- 把三道题的源程序都放在桌面上,分别命名为 1.cpp、2.cpp、3.cpp
第 10 题
设 data.in 的内容为两行,第一行是 5,第二行是 1 2 3 4 5。运行本讲第二节给出的 freopen 版程序后,正确的结果是( )。
{{ select(10) }}
- 屏幕上显示 15,data.out 是空文件
- 屏幕上什么也不显示,data.out 中的内容是 15
- 屏幕上显示 15,data.out 中的内容也是 15
- 程序运行出错,因为 cout 已经被 freopen 关闭了