备考计算机二级 C 语言 程序设计考试,选择题是不容忽视的重要部分。
今天为大家带来 10 道选择题,聚焦文件的打开、读写等操作,助力掌握数据持久化技能。
1、以下关于文件指针的叙述中,正确的是( )
A. 文件指针是指向文件缓冲区的指针
B. 文件指针就是文件的路径
C. 一个文件只能有一个文件指针
D. 文件指针的值是文件名
答案:A
分析:文件指针指向文件缓冲区(A 正确);与路径、文件名无关(B、D 错误);一个文件可被多个指针指向(C 错误)。
2、有以下程序
#include <stdio.h>
main()
{
FILE *fp;
int i, a[6] = {1,2,3,4,5,6};
fp = fopen("data.dat", "w");
fprintf(fp, "%d%d%d", a[0], a[1], a[2]);
fprintf(fp, "%d%d%d", a[3], a[4], a[5]);
fclose(fp);
fp = fopen("data.dat", "r");
fscanf(fp, "%d", &i);
fclose(fp);
printf("%d\n", i);
}
程序运行后的输出结果是( )
A. 123456
B. 1
C. 123
D. 6
答案:A
分析:文件中写入 “123456”,fscanf 读取整数时会全部读入,i=123456,输出 A。
3、以下不能实现向文件写入一个字符的函数是( )
A. fputc
B. fprintf
C. fwrite
D. fgets
答案:D
分析:fgets 用于从文件读取字符串(D 错误);fputc 写单个字符,fprintf 可格式化写字符,fwrite 可写字符数据(A、B、C 正确)。
4、有如下程序
#include <stdio.h>
main()
{
FILE *fp;
char s[10] = "abcdef";
fp = fopen("test.txt", "w");
fwrite(s, sizeof(char), 6, fp);
fclose(fp);
}
程序执行后,文件 test.txt 的内容是( )
A. abcdef
B. a
C. 6
D. 不确定
答案:A
分析:fwrite 向文件写入 6 个字符 “abcdef”,故文件内容为 A。
5、以下关于 fclose 函数的叙述中,正确的是( )
A. fclose 函数关闭文件后,文件指针变得无效
B. fclose 函数关闭文件后,仍可通过文件指针读写文件
C. 一个文件只能调用一次 fclose 函数
D. fclose 函数不需要传入文件指针参数
答案:A
分析:fclose 关闭文件后,指针无效(A 正确,B 错误);多次关闭可能出错(C 错误);需要传入文件指针(D 错误)。
6、有以下程序
#include <stdio.h>
main()
{
FILE *fp;
int i, n=0;
fp = fopen("num.txt", "r");
while(fscanf(fp, "%d", &i)!=EOF)
n++;
fclose(fp);
printf("%d\n", n);
}
若 num.txt 文件中内容为 “1 2 3 4 5”,程序运行后的输出结果是( )
A. 0
B. 5
C. 1
D. 不确定
答案:B
分析:循环读取文件中的整数,共 5 个,n 累加为 5,输出 B。
7、以下打开文件的方式中,能实现创建一个新文件并只允许写入的是( )
A. “r”
B. “w”
C. “r+”
D. “a”
答案:B
分析:“w” 方式打开文件,若文件不存在则创建,只允许写入(B 正确);“r” 只读,“r+” 读写,“a” 追加写入(A、C、D 错误)。
8、有如下程序
#include <stdio.h>
main()
{
FILE *fp;
fp = fopen("file.txt", "w");
fprintf(fp, "%s", "computer");
fclose(fp);
}
程序执行后,文件 file.txt 的长度是( )
A. 8 字节
B. 9 字节
C. 0 字节
D. 不确定
答案:A
分析:写入字符串 “computer”(8 个字符),文件长度为 8 字节(不含 ‘\0’),输出 A。
9、以下关于 fseek 函数的叙述中,正确的是( )
A. fseek 函数用于改变文件的读写位置
B. fseek 函数只能用于文本文件
C. fseek 函数的偏移量必须是正数
D. fseek 函数不需要文件指针参数
答案:A
分析:fseek 用于移动文件指针(A 正确);可用于二进制文件(B 错误);偏移量可正可负(C 错误);需要文件指针(D 错误)。
10、有以下程序
#include <stdio.h>
main()
{
FILE *fp;
int a=1, b=2, c=3;
fp = fopen("data.dat", "wb");
fwrite(&a, sizeof(int), 1, fp);
fwrite(&b, sizeof(int), 1, fp);
fwrite(&c, sizeof(int), 1, fp);
fclose(fp);
fp = fopen("data.dat", "rb");
fseek(fp, sizeof(int), SEEK_SET);
fread(&a, sizeof(int), 1, fp);
fclose(fp);
printf("%d\n", a);
}
程序运行后的输出结果是( )
A. 1
B. 2
C. 3
D. 0
答案:B
分析:文件中依次写入 1、2、3,fseek 移动到第二个整数位置,读取到 b 的值 2,输出 B。
希望这 10 道题能帮助大家对计算机二级 C 语言的知识点有更深入的理解和掌握。如果想要获取完整版 PDF(含二级更多题目题库)