#CSPJ26D14. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作
2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作
Day 14 文件操作
建议用时:15~25 分钟。请先完成自主学习,再独立提交本页答案。
今日学习资料
学习目标:完成当天知识点阅读与易错清单自查,然后作答下方选择题。
今日练习
- CSP-J 复赛(第二轮)要求程序使用文件输入输出,最主要的原因是( )。
{{ select(1) }}
- 文件读写比键盘输入速度更快,可以节省程序运行时间
- 评测机在后台自动运行程序,没有人敲键盘也没有人看屏幕,只按题目规定的文件名读写文件
- C++ 标准规定 main 函数中必须先打开文件才能使用 cin
- 只有使用文件,程序中才可以使用 cin 和 cout
- 下列语句中,能把标准输入重定向到当前目录下 data.in 文件的是( )。
{{ select(2) }}
freopen(stdin, "data.in", "r");freopen("data.in", "w", stdin);freopen("data.in", "r", stdin);freopen("r", "data.in", stdin);
- 若运行程序前 data.out 中已经存有内容,程序执行
freopen("data.out", "w", stdout);之后( )。
{{ select(3) }}
- data.out 中原有的内容被全部清空,程序的输出从文件开头重新写起
- 程序的输出被追加到原有内容的后面,原有内容保留
- 程序会报错退出,因为该文件已经存在
- 原有内容全部保留,程序输出只覆盖开头等长的一段字节
- 在 main 函数开头执行
freopen("data.in", "r", stdin);之后,下列说法正确的是( )。
{{ select(4) }}
- 之后只能用 scanf 读数据,cin 会失效
- 之后只能用 cin 读数据,scanf 会失效
- cin 和 scanf 都不能再用,必须改成 ifstream
- cin 和 scanf 都照常使用,只是数据来源由键盘变成了 data.in
- 使用 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;
- 设 data.in 中只有一行内容
1 2 3,运行下面的程序,屏幕上的输出是( )。
{{ select(6) }}
- 要从输入中不断读入整数,一直读到文件结束为止,下列循环写法 不正确 的是( )。
{{ select(7) }}
while (scanf("%d", &x) != EOF) { ... }while (cin >> x) { ... }while (scanf("%d", &x) == 1) { ... }while (!cin.eof()) { cin >> x; ... }
- 在 Windows 下编写 C++ 程序,要表示文件
D:\data\a.in,下列写法 错误 的是( )。
{{ select(8) }}
"D:\data\a.in""D:\\data\\a.in""D:/data/a.in"- 把 a.in 和程序放在同一个文件夹,直接写
"a.in"
- 复赛某题的题目名称为 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
- 设 data.in 的内容为两行,第一行是
5,第二行是1 2 3 4 5。运行本讲第二节给出的 freopen 版程序后,正确的结果是( )。
{{ select(10) }}
- 屏幕上显示 15,data.out 是空文件
- 屏幕上什么也不显示,data.out 中的内容是 15
- 屏幕上显示 15,data.out 中的内容也是 15
- 程序运行出错,因为 cout 已经被 freopen 关闭了