#CSPJ26D14. 2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作

2026 年 8 月 CSP-J 初赛 22 日打卡 Day14|文件操作

Day 14 文件操作

建议用时:15~25 分钟。请先完成自主学习,再独立提交本页答案。

今日学习资料

学习目标:完成当天知识点阅读与易错清单自查,然后作答下方选择题。

今日练习

  1. CSP-J 复赛(第二轮)要求程序使用文件输入输出,最主要的原因是( )。

{{ select(1) }}

  • 文件读写比键盘输入速度更快,可以节省程序运行时间
  • 评测机在后台自动运行程序,没有人敲键盘也没有人看屏幕,只按题目规定的文件名读写文件
  • C++ 标准规定 main 函数中必须先打开文件才能使用 cin
  • 只有使用文件,程序中才可以使用 cin 和 cout
  1. 下列语句中,能把标准输入重定向到当前目录下 data.in 文件的是( )。

{{ select(2) }}

  • freopen(stdin, "data.in", "r");
  • freopen("data.in", "w", stdin);
  • freopen("data.in", "r", stdin);
  • freopen("r", "data.in", stdin);
  1. 若运行程序前 data.out 中已经存有内容,程序执行 freopen("data.out", "w", stdout); 之后( )。

{{ select(3) }}

  • data.out 中原有的内容被全部清空,程序的输出从文件开头重新写起
  • 程序的输出被追加到原有内容的后面,原有内容保留
  • 程序会报错退出,因为该文件已经存在
  • 原有内容全部保留,程序输出只覆盖开头等长的一段字节
  1. 在 main 函数开头执行 freopen("data.in", "r", stdin); 之后,下列说法正确的是( )。

{{ select(4) }}

  • 之后只能用 scanf 读数据,cin 会失效
  • 之后只能用 cin 读数据,scanf 会失效
  • cin 和 scanf 都不能再用,必须改成 ifstream
  • cin 和 scanf 都照常使用,只是数据来源由键盘变成了 data.in
  1. 使用 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;
  1. 设 data.in 中只有一行内容 1 2 3,运行下面的程序,屏幕上的输出是( )。

{{ select(6) }}

  1. 要从输入中不断读入整数,一直读到文件结束为止,下列循环写法 不正确 的是( )。

{{ select(7) }}

  • while (scanf("%d", &x) != EOF) { ... }
  • while (cin >> x) { ... }
  • while (scanf("%d", &x) == 1) { ... }
  • while (!cin.eof()) { cin >> x; ... }
  1. 在 Windows 下编写 C++ 程序,要表示文件 D:\data\a.in,下列写法 错误 的是( )。

{{ select(8) }}

  • "D:\data\a.in"
  • "D:\\data\\a.in"
  • "D:/data/a.in"
  • 把 a.in 和程序放在同一个文件夹,直接写 "a.in"
  1. 复赛某题的题目名称为 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
  1. 设 data.in 的内容为两行,第一行是 5,第二行是 1 2 3 4 5。运行本讲第二节给出的 freopen 版程序后,正确的结果是( )。

{{ select(10) }}

  • 屏幕上显示 15,data.out 是空文件
  • 屏幕上什么也不显示,data.out 中的内容是 15
  • 屏幕上显示 15,data.out 中的内容也是 15
  • 程序运行出错,因为 cout 已经被 freopen 关闭了