内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第33练,内容是9.1 文件概述 + 9.2 文件的打开和关闭。
《编程语言基础——C语言》(第5版)一课一练 第33练
9.1 文件概述 + 9.2 文件的打开和关闭
一、单选题
1. 在C语言中,对文件进行操作时,文件指针的类型是( )
A. FILE *
B. file *
C. File *
D. int *
2. 要以只读方式打开一个已存在的文本文件,fopen函数的正确调用是( )
A. fopen("data.txt", "w");
B. fopen("data.txt", "r");
C. fopen("data.txt", "a");
D. fopen("data.txt", "rw");
3. 调用fopen函数打开文件失败时,返回值是( )
A. 0
B. EOF
C. NULL
D. -1
4. 关于fclose函数,以下说法正确的是( )
A. fclose函数会自动在文件末尾添加结束标志
B. 程序正常结束时会自动关闭所有文件,因此可以不调用fclose
C. fclose只能关闭以"w"模式打开的文件
D. fclose将缓冲区数据写入文件并释放文件指针,是良好的编程习惯
5. 用 fopen("test.txt", "w") 打开文件时,若test.txt已存在,则( )
A. 原文件内容被清空,从文件开头开始写入新内容
B. 在原文件末尾追加新内容
C. 打开失败,返回NULL
D. 保留原文件内容,新内容从开头覆盖对应位置
6. 以下代码片段中,能安全地打开文件并处理打开失败情况的是( )
A. FILE *fp = fopen("a.txt", "r"); fscanf(fp, "%d", &x);
B. FILE *fp = fopen("a.txt", "r"); if (fp != NULL) { fscanf(fp, "%d", &x); fclose(fp); }
C. FILE *fp; if (fp = fopen("a.txt", "r")) { } fscanf(fp, "%d", &x);
D. FILE fp = fopen("a.txt", "r"); fscanf(&fp, "%d", &x);
7. 要以二进制只读方式打开文件,fopen的模式参数应为( )
A. "r"
B. "b"
C. "rb"
D. "br"
二、程序运行结果题
8. 以下程序的运行结果是【··】。(假设当前目录不存在名为"noexist.txt"的文件)
#include <stdio.h>
main()
{
FILE *fp;
fp = fopen("noexist.txt", "r");
if (fp == NULL)
printf("Open failed");
else
{
printf("Open success");
fclose(fp);
}
}
三、程序填空题
9. 以下程序的功能是:打开文件"data.txt"准备写入数据,操作完成后关闭文件。请填空。
#include <stdio.h>
main()
{
【1】;
fp = fopen("data.txt", "w");
if (fp != NULL)
{
fprintf(fp, "Hello File!
");
fclose(fp);
printf("写入成功!
");
}
else
printf("文件打开失败!
");
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是向文件写入数据。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 FILE *fp;
L5 fp = fopen("out.txt", "w");
L6 fprintf(fp, "C Programming
");
L7 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第33练,内容是9.1 文件概述 + 9.2 文件的打开和关闭。
《编程语言基础——C语言》(第5版)一课一练 第33练
9.1 文件概述 + 9.2 文件的打开和关闭
一、单选题
1. 在C语言中,对文件进行操作时,文件指针的类型是( )
A. FILE *
B. file *
C. File *
D. int *
【答案】A
【解析】C语言通过FILE类型的指针来操作文件。FILE是stdio.h中定义的结构体类型(注意大写),包含文件缓冲区、当前位置、文件状态等信息。定义文件指针的格式为:FILE *fp;
2. 要以只读方式打开一个已存在的文本文件,fopen函数的正确调用是( )
A. fopen("data.txt", "w");
B. fopen("data.txt", "r");
C. fopen("data.txt", "a");
D. fopen("data.txt", "rw");
【答案】B
【解析】fopen的打开模式参数:"r"=读取(文件必须存在),"w"=写入(创建新文件,已存在则覆盖原有内容),"a"=追加(文件末尾添加),"r+"=读写。以r模式打开用于读取。注意"rw"不是标准模式。
3. 调用fopen函数打开文件失败时,返回值是( )
A. 0
B. EOF
C. NULL
D. -1
【答案】C
【解析】fopen打开文件成功时返回指向该文件的FILE指针,打开失败时返回NULL(空指针)。通常在使用fopen后应立即检查返回值是否为NULL,以确保文件成功打开后再进行操作。
4. 关于fclose函数,以下说法正确的是( )
A. fclose函数会自动在文件末尾添加结束标志
B. 程序正常结束时会自动关闭所有文件,因此可以不调用fclose
C. fclose只能关闭以"w"模式打开的文件
D. fclose将缓冲区数据写入文件并释放文件指针,是良好的编程习惯
【答案】D
【解析】fclose关闭文件时会将缓冲区中未写入的数据刷新到磁盘,释放文件指针和相关资源。虽然程序结束时系统会关闭文件,但主动调用fclose是好习惯,可避免数据丢失。
5. 用 fopen("test.txt", "w") 打开文件时,若test.txt已存在,则( )
A. 原文件内容被清空,从文件开头开始写入新内容
B. 在原文件末尾追加新内容
C. 打开失败,返回NULL
D. 保留原文件内容,新内容从开头覆盖对应位置
【答案】A
【解析】"w"(write)模式打开文件时:如果文件不存在则创建新文件;如果文件已存在则清空原内容,从头开始写。想要保留原内容并追加,应使用"a"(append)模式。
6. 以下代码片段中,能安全地打开文件并处理打开失败情况的是( )
A. FILE *fp = fopen("a.txt", "r"); fscanf(fp, "%d", &x);
B. FILE *fp = fopen("a.txt", "r"); if (fp != NULL) { fscanf(fp, "%d", &x); fclose(fp); }
C. FILE *fp; if (fp = fopen("a.txt", "r")) { } fscanf(fp, "%d", &x);
D. FILE fp = fopen("a.txt", "r"); fscanf(&fp, "%d", &x);
【答案】B
【解析】B中先检查fp是否为NULL,确认文件成功打开后才执行读取操作,读取完毕后关闭文件,是最安全的写法。A未检查直接使用(可能对NULL指针操作);C中fp声明后赋值的写法正确但else分支未处理;D未声明为指针类型。
7. 要以二进制只读方式打开文件,fopen的模式参数应为( )
A. "r"
B. "b"
C. "rb"
D. "br"
【答案】C
【解析】在模式字符串后加b表示二进制模式。"rb"=二进制读,"wb"=二进制写,"ab"=二进制追加。二进制模式与文本模式的区别在于:文本模式会处理换行符转换(如Windows下\r
↔
),二进制模式不做任何转换。
二、程序运行结果题
8. 以下程序的运行结果是【··】。(假设当前目录不存在名为"noexist.txt"的文件)
#include <stdio.h>
main()
{
FILE *fp;
fp = fopen("noexist.txt", "r");
if (fp == NULL)
printf("Open failed");
else
{
printf("Open success");
fclose(fp);
}
}
【答案】Open failed
【解析】以"r"模式打开一个不存在的文件,fopen返回NULL。程序检查fp==NULL为真,执行if分支输出"Open failed"。这体现了文件操作中错误处理的必要性——打开文件后应首先检查是否成功。
三、程序填空题
9. 以下程序的功能是:打开文件"data.txt"准备写入数据,操作完成后关闭文件。请填空。
#include <stdio.h>
main()
{
【1】;
fp = fopen("data.txt", "w");
if (fp != NULL)
{
fprintf(fp, "Hello File!
");
fclose(fp);
printf("写入成功!
");
}
else
printf("文件打开失败!
");
}
【答案】【1】FILE *fp
【解析】使用文件前需要定义FILE类型的指针变量fp。FILE在stdio.h中定义,*fp表示这是一个文件指针。后续通过fp调用fopen、fprintf、fclose等文件操作函数。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是向文件写入数据。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 FILE *fp;
L5 fp = fopen("out.txt", "w");
L6 fprintf(fp, "C Programming
");
L7 }
【答案】【1】L7: } → 应在L6和L7之间添加 fclose(fp);(写入完毕后必须关闭文件,否则缓冲区数据可能未写入磁盘,导致数据丢失)
【解析】使用fopen打开文件后,操作完成必须调用fclose关闭文件。fclose会将缓冲区中的数据刷新到磁盘并释放文件资源。不关闭文件可能导致数据未完全写入磁盘(数据丢失),在长时间运行的程序中还会造成资源泄漏。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$