第9章 第5节:文件应用实例(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂

2025-12-29
| 2份
| 23页
| 73人阅读
| 1人下载

内容正文:

9.5节:文件应用实例 一、单项选择题 1.以下关于feof函数的描述,正确的是( ) A. 在读取到EOF时立即返回真 B. 在文件位置标记到达末尾时返回真 C. 需要先尝试读取才能正确判断 D. 只能用于文本文件 2.使用fgets函数读取一行文本时,以下说法错误的是() A. 读取的字符串包含换行符 B. 可以指定最大读取字符数 C. 遇到文件结束返回NULL D. 不能读取二进制文件 3.以下代码片段的功能是() FILE *fp = fopen("output.txt", "w"); fprintf(fp, "Count: %d ", 10); A. 从文件读取数据 B. 向文件写入格式化数据 C. 修改文件权限 D. 关闭文件 4.使用fscanf函数从文件读取数据时,以下说法正确的是() A. 只能读取文本文件 B. 可以读取二进制数据 C. 不需要指定格式字符串 D. 返回值是读取的字节数 5.以下关于rewind函数的描述,错误的是() A. 将文件位置标记移动到开头 B. 清除文件结束标志 C. 相当于fseek(fp, 0L, SEEK_SET) D. 可以修改文件内容 6.以下代码片段的功能是() FILE *fp = fopen("data.bin", "rb"); int arr[10]; fread(arr, sizeof(int), 10, fp); A. 向文件写入数组 B. 从文件读取数组 C. 修改数组内容 D. 比较数组内容 7.以下关于文件位置标记的描述,正确的是() A. 打开文件时位置标记在文件末尾 B. 每次读写操作后位置标记自动移动 C. 位置标记可以用指针直接修改 D. 位置标记的单位是位(bit) 8.以下代码片段的功能是() FILE *fp = fopen("log.txt", "a"); fprintf(fp, "Event: %s ", "start"); A. 读取日志文件 B. 向日志文件追加内容 C. 清空日志文件 D. 删除日志文件 9.使用fputs函数向文件写入字符串时,以下说法正确的是() A. 会自动添加换行符 B. 可以写入二进制数据 C. 不能写入空字符串 D. 必须指定字符串长度 10.以下代码片段的功能是() FILE *fp = fopen("data.txt", "r+"); fseek(fp, 10L, SEEK_SET); fputc('X', fp); A. 在第10个字符位置写入'X' B. 在第11个字符位置写入'X' C. 在文件末尾写入'X' D. 读取第10个字符 二、程序运行结果题 11.以下程序执行后,文件"output.txt"的内容是() #include <stdio.h> main() { FILE *fp = fopen("output.txt", "w"); fprintf(fp, "%d %c %.1f", 10, 'A', 3.5); fclose(fp); } 12.以下程序执行后,屏幕输出结果是(假设文件"data.txt"内容为"123 45.6")() #include <stdio.h> main() { FILE *fp = fopen("data.txt", "r"); int a; float b; fscanf(fp, "%d%f", &a, &b); printf("%d %.1f", a, b); fclose(fp); } 13.以下程序执行后,文件"test.txt"的内容是() #include <stdio.h> main() { FILE *fp = fopen("test.txt", "w"); fputs("Hello", fp); fputc(' ', fp); fputs("World", fp); fclose(fp); } 14.以下程序执行后,屏幕输出结果是(假设文件"nums.txt"内容为"1 2 3 4 5")() #include <stdio.h> main() { FILE *fp = fopen("nums.txt", "r"); int num, sum = 0; while(fscanf(fp, "%d", &num) == 1) { sum += num; } printf("%d", sum); fclose(fp); } 15.以下程序执行后,屏幕输出结果是(假设文件"text.txt"内容为"ABC DEF ")() #include <stdio.h> main() { FILE *fp = fopen("text.txt", "r"); char line[100]; fgets(line, 100, fp); printf("%s", line); fgets(line, 100, fp); printf("%s", line); fclose(fp); } 16.以下程序执行后,文件"log.txt"的内容是() #include <stdio.h> main() { FILE *fp = fopen("log.txt", "a"); fprintf(fp, "Start "); fclose(fp); fp = fopen("log.txt", "a"); fprintf(fp, "End "); fclose(fp); } 17.以下程序执行后,屏幕输出结果是(假设文件"binary.dat"内容为10个整数:1-10)() #include <stdio.h> main() { FILE *fp = fopen("binary.dat", "rb+"); int num; long pos; fseek(fp, 4 * sizeof(int), SEEK_SET); fread(&num, sizeof(int), 1, fp); printf("第5个: %d ", num); pos = ftell(fp); fwrite(&num, sizeof(int), 1, fp); num = 99; fseek(fp, -sizeof(int), SEEK_CUR); fwrite(&num, sizeof(int), 1, fp); fseek(fp, pos, SEEK_SET); fread(&num, sizeof(int), 1, fp); printf("修改后: %d ", num); fclose(fp); } 18.以下程序执行后,屏幕输出结果是(假设文件"students.dat"有5个学生:{1,70},{2,85},{3,90},{4,65},{5,80})() #include <stdio.h> struct Student { int id; int score; }; main() { FILE *fp = fopen("students.dat", "rb"); struct Student stu; int passed = 0, failed = 0,i; rewind(fp); while(!feof(fp)) { fread(&stu, sizeof(struct Student), 1, fp); if(!feof(fp)) { if(stu.score >= 60) passed++; else failed++; } } printf("及格学生(%d人): ", passed); rewind(fp); for(i = 0; i < 5; i++) { fseek(fp, i * sizeof(struct Student), SEEK_SET); fread(&stu, sizeof(struct Student), 1, fp); if(stu.score >= 60) { printf("ID: %d, Score: %d ", stu.id, stu.score); } } fclose(fp); } 19.以下程序执行后,屏幕输出结果是(假设文件"data.txt"内容为"100 200 300")() #include <stdio.h> main() { FILE *fp = fopen("data.txt", "r"); int a, b, c; fscanf(fp, "%d%d%d", &a, &b, &c); printf("%d", a + b + c); fclose(fp); } 20.以下程序执行后,屏幕输出结果是(假设文件"text.txt"内容为"ABC")() #include <stdio.h> main() { FILE *fp = fopen("text.txt", "r"); char ch; ch = fgetc(fp); printf("%c", ch); ch = fgetc(fp); printf("%c", ch); fclose(fp); } 三、编程题 1. 编写一个程序,读取文本文件"article.txt"中的内容,统计并输出文件中字母、数字、空格和其他字符的数量。假设文件内容为"C Programming 101",程序运行后输出结果。 2.编写程序从文件"data.txt"中读取整数,将偶数写入"even.txt",奇数写入"odd.txt"。 3.编写程序将两个文件"part1.txt"和"part2.txt"的内容合并到"merged.txt"中。 4.编写程序读取文件"students.txt"中的学生信息(每行格式:姓名 年龄 成绩),计算并输出每个学生的平均分和总分。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 9.5节:文件应用实例 一、单项选择题 1.以下关于feof函数的描述,正确的是( ) A. 在读取到EOF时立即返回真 B. 在文件位置标记到达末尾时返回真 C. 需要先尝试读取才能正确判断 D. 只能用于文本文件 【答案】C 2.使用fgets函数读取一行文本时,以下说法错误的是( ) A. 读取的字符串包含换行符 B. 可以指定最大读取字符数 C. 遇到文件结束返回NULL D. 不能读取二进制文件 【答案】D 3.以下代码片段的功能是( ) FILE *fp = fopen("output.txt", "w"); fprintf(fp, "Count: %d ", 10); A. 从文件读取数据 B. 向文件写入格式化数据 C. 修改文件权限 D. 关闭文件 【答案】B 4.使用fscanf函数从文件读取数据时,以下说法正确的是( ) A. 只能读取文本文件 B. 可以读取二进制数据 C. 不需要指定格式字符串 D. 返回值是读取的字节数 【答案】A 5.以下关于rewind函数的描述,错误的是( ) A. 将文件位置标记移动到开头 B. 清除文件结束标志 C. 相当于fseek(fp, 0L, SEEK_SET) D. 可以修改文件内容 【答案】D 6.以下代码片段的功能是( ) FILE *fp = fopen("data.bin", "rb"); int arr[10]; fread(arr, sizeof(int), 10, fp); A. 向文件写入数组 B. 从文件读取数组 C. 修改数组内容 D. 比较数组内容 【答案】B 7.以下关于文件位置标记的描述,正确的是( ) A. 打开文件时位置标记在文件末尾 B. 每次读写操作后位置标记自动移动 C. 位置标记可以用指针直接修改 D. 位置标记的单位是位(bit) 【答案】B 8.以下代码片段的功能是( ) FILE *fp = fopen("log.txt", "a"); fprintf(fp, "Event: %s ", "start"); A. 读取日志文件 B. 向日志文件追加内容 C. 清空日志文件 D. 删除日志文件 【答案】B 9.使用fputs函数向文件写入字符串时,以下说法正确的是( ) A. 会自动添加换行符 B. 可以写入二进制数据 C. 不能写入空字符串 D. 必须指定字符串长度 【答案】B 10.以下代码片段的功能是( ) FILE *fp = fopen("data.txt", "r+"); fseek(fp, 10L, SEEK_SET); fputc('X', fp); A. 在第10个字符位置写入'X' B. 在第11个字符位置写入'X' C. 在文件末尾写入'X' D. 读取第10个字符 【答案】A 二、程序运行结果题 11.以下程序执行后,文件"output.txt"的内容是( ) #include <stdio.h> main() { FILE *fp = fopen("output.txt", "w"); fprintf(fp, "%d %c %.1f", 10, 'A', 3.5); fclose(fp); } 【答案】10 A 3.5 12.以下程序执行后,屏幕输出结果是(假设文件"data.txt"内容为"123 45.6")( ) #include <stdio.h> main() { FILE *fp = fopen("data.txt", "r"); int a; float b; fscanf(fp, "%d%f", &a, &b); printf("%d %.1f", a, b); fclose(fp); } 【答案】123 45.6 13.以下程序执行后,文件"test.txt"的内容是( ) #include <stdio.h> main() { FILE *fp = fopen("test.txt", "w"); fputs("Hello", fp); fputc(' ', fp); fputs("World", fp); fclose(fp); } 【答案】 Hello World 14.以下程序执行后,屏幕输出结果是(假设文件"nums.txt"内容为"1 2 3 4 5")( ) #include <stdio.h> main() { FILE *fp = fopen("nums.txt", "r"); int num, sum = 0; while(fscanf(fp, "%d", &num) == 1) { sum += num; } printf("%d", sum); fclose(fp); } 【答案】15 15.以下程序执行后,屏幕输出结果是(假设文件"text.txt"内容为"ABC DEF ")( ) #include <stdio.h> main() { FILE *fp = fopen("text.txt", "r"); char line[100]; fgets(line, 100, fp); printf("%s", line); fgets(line, 100, fp); printf("%s", line); fclose(fp); } 【答案】 ABC DEF 16.以下程序执行后,文件"log.txt"的内容是( ) #include <stdio.h> main() { FILE *fp = fopen("log.txt", "a"); fprintf(fp, "Start "); fclose(fp); fp = fopen("log.txt", "a"); fprintf(fp, "End "); fclose(fp); } 【答案】 Start End 17.以下程序执行后,屏幕输出结果是(假设文件"binary.dat"内容为10个整数:1-10)( ) #include <stdio.h> main() { FILE *fp = fopen("binary.dat", "rb+"); int num; long pos; fseek(fp, 4 * sizeof(int), SEEK_SET); fread(&num, sizeof(int), 1, fp); printf("第5个: %d ", num); pos = ftell(fp); fwrite(&num, sizeof(int), 1, fp); num = 99; fseek(fp, -sizeof(int), SEEK_CUR); fwrite(&num, sizeof(int), 1, fp); fseek(fp, pos, SEEK_SET); fread(&num, sizeof(int), 1, fp); printf("修改后: %d ", num); fclose(fp); } 【答案】 第5个: 5 修改后: 99 18.以下程序执行后,屏幕输出结果是(假设文件"students.dat"有5个学生:{1,70},{2,85},{3,90},{4,65},{5,80})( ) #include <stdio.h> struct Student { int id; int score; }; main() { FILE *fp = fopen("students.dat", "rb"); struct Student stu; int passed = 0, failed = 0,i; rewind(fp); while(!feof(fp)) { fread(&stu, sizeof(struct Student), 1, fp); if(!feof(fp)) { if(stu.score >= 60) passed++; else failed++; } } printf("及格学生(%d人): ", passed); rewind(fp); for(i = 0; i < 5; i++) { fseek(fp, i * sizeof(struct Student), SEEK_SET); fread(&stu, sizeof(struct Student), 1, fp); if(stu.score >= 60) { printf("ID: %d, Score: %d ", stu.id, stu.score); } } fclose(fp); } 【答案】 及格学生(4人): ID: 1, Score: 70 ID: 2, Score: 85 ID: 3, Score: 90 ID: 5, Score: 80 19.以下程序执行后,屏幕输出结果是(假设文件"data.txt"内容为"100 200 300")( ) #include <stdio.h> main() { FILE *fp = fopen("data.txt", "r"); int a, b, c; fscanf(fp, "%d%d%d", &a, &b, &c); printf("%d", a + b + c); fclose(fp); } 【答案】600 20.以下程序执行后,屏幕输出结果是(假设文件"text.txt"内容为"ABC")( ) #include <stdio.h> main() { FILE *fp = fopen("text.txt", "r"); char ch; ch = fgetc(fp); printf("%c", ch); ch = fgetc(fp); printf("%c", ch); fclose(fp); } 【答案】AB 三、编程题 1. 编写一个程序,读取文本文件"article.txt"中的内容,统计并输出文件中字母、数字、空格和其他字符的数量。假设文件内容为"C Programming 101",程序运行后输出结果。 【答案】 #include <stdio.h> #include <ctype.h> main() { FILE *fp = fopen("article.txt", "r"); char ch; int letters = 0, digits = 0, spaces = 0, others = 0; if(fp == NULL) { printf("文件打开失败 "); return 1; } while((ch = fgetc(fp)) != EOF) { if(isalpha(ch)) { letters++; } else if(isdigit(ch)) { digits++; } else if(isspace(ch)) { spaces++; } else { others++; } } printf("字母: %d ", letters); printf("数字: %d ", digits); printf("空格: %d ", spaces); printf("其他: %d ", others); fclose(fp); } 2.编写程序从文件"data.txt"中读取整数,将偶数写入"even.txt",奇数写入"odd.txt"。 【答案】 #include <stdio.h> main() { FILE *in = fopen("data.txt", "r"); FILE *even = fopen("even.txt", "w"); FILE *odd = fopen("odd.txt", "w"); int num; if(in == NULL || even == NULL || odd == NULL) { printf("文件打开失败 "); return 1; } while(fscanf(in, "%d", &num) == 1) { if(num % 2 == 0) { fprintf(even, "%d ", num); } else { fprintf(odd, "%d ", num); } } fclose(in); fclose(even); fclose(odd); } 3.编写程序将两个文件"part1.txt"和"part2.txt"的内容合并到"merged.txt"中。 【答案】 #include <stdio.h> main() { FILE *part1 = fopen("part1.txt", "r"); FILE *part2 = fopen("part2.txt", "r"); FILE *merged = fopen("merged.txt", "w"); char ch; if(part1 == NULL || part2 == NULL || merged == NULL) { printf("文件打开失败 "); return 1; } // 复制part1内容 while((ch = fgetc(part1)) != EOF) { fputc(ch, merged); } // 复制part2内容 while((ch = fgetc(part2)) != EOF) { fputc(ch, merged); } fclose(part1); fclose(part2); fclose(merged); } 4.编写程序读取文件"students.txt"中的学生信息(每行格式:姓名 年龄 成绩),计算并输出每个学生的平均分和总分。 【答案】 #include <stdio.h> main() { FILE *fp = fopen("students.txt", "r"); char name[20]; int age, score, count = 0, sum = 0; if(fp == NULL) { printf("文件打开失败 "); return 1; } printf("学生成绩报告: "); printf("------------ "); while(fscanf(fp, "%s%d%d", name, &age, &score) == 3) { printf("%s: 年龄%d, 成绩%d ", name, age, score); sum += score; count++; } printf("------------ "); printf("总分: %d ", sum); printf("平均分: %.1f ", (float)sum / count); fclose(fp); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第9章 第5节:文件应用实例(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
1
第9章 第5节:文件应用实例(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
2
第9章 第5节:文件应用实例(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。