第29卷 C语言-C语言卷16——文件的读写与定位——江苏省计算机类——考纲百套卷

2026-07-01
| 2份
| 22页
| 5人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 文件
使用场景 中职复习-中职高考
学年 2027-2028
地区(省份) 江苏省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 93 KB
发布时间 2026-07-01
更新时间 2026-07-01
作者 xy06893
品牌系列 学易金卷·考纲百套卷
审核时间 2026-07-01
下载链接 https://m.zxxk.com/soft/58571363.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第29卷为专业核心模块训练卷,按《C语言》中"C语言卷16——文件的读写与定位"范围和要求编写。具体内容为:理解文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷16——文件的读写与定位) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. fputc函数用于向文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串 2. fgetc函数用于从文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串 3. fputs函数用于向文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串(不含\0) 4. fgets函数用于从文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串(含 ) D.写入一行字符串 5. fprintf函数的功能类似于( ) A.printf B.scanf C.sprintf D.sscanf 6. fscanf函数的功能类似于( ) A.printf B.scanf(从键盘输入) C.sprintf D.sscanf 7. fread函数用于从文件中( ) A.读取单个数据项 B.批量读取数据块 C.读取格式化数据 D.读取一行字符串 8. fwrite函数用于向文件中( ) A.写入单个数据项 B.批量写入数据块 C.写入格式化数据 D.写入一行字符串 9. rewind函数用于将文件指针( ) A.移动到文件末尾 B.移动到文件开头 C.移动到指定位置 D.向后移动n个字节 10. fseek函数用于将文件指针( ) A.移动到文件开头 B.移动到指定位置 C.获取当前位置 D.检测是否到达文件末尾 11. fseek函数的origin参数SEEK_SET表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 12. fseek函数的origin参数SEEK_CUR表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 13. fseek函数的origin参数SEEK_END表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 14. 想要获取文件指针的当前位置,应该使用( ) A.fseek B.rewind C.ftell D.feof 15. 想要将文件指针向前移动 100 字节,正确的调用是( ) A.fseek (fp,100,SEEK_SET) B.fseek (fp,-100,SEEK_CUR) C.fseek (fp,100,SEEK_END) D.fseek (fp,100,0) 16. 下列关于fgetc,正确的是( ) A.读取成功返回字符ASCII码值 B.读取到文件末尾返回EOF C.可以读取任何类型文件 D.一次读取多个字符 17. 下列关于fputs和fgets的区别,正确的是( ) A.fputs写入不含\0,fgets读取含 B.两者都是单字符操作 C.fputs读取,fgets写入 D.两者都需要指定长度 18. 想要将文件指针移动到距离文件末尾10字节处,正确的调用是( ) A.fseek(fp,10,SEEK_END) B.fseek(fp,-10,SEEK_END) C.fseek(fp,10,SEEK_SET) D.rewind(fp); fseek(fp,-10,SEEK_CUR) 19. 下列关于fprintf和fscanf,正确的是( ) A.fprintf向文件输出格式化数据 B.fscanf从文件读取格式化数据 C.两者用法类似printf/scanf但多了文件参数 D.以上都正确 20. 下列关于fread和fwrite,正确的是( ) A.适用于文本文件 B.适用于二进制文件 C.适用于文本和二进制文件 D.只适用于特定类型的数据 二、判断题(共10题,每题1分,共10分) 21. fputc函数用于向文件写入一个字符( ) 22. fgetc函数从文件读取一个字符,读到末尾返回EOF( ) 23. fputs写入的字符串包含\0( ) 24. fgets读取的字符串可能包含换行符 ( ) 25. fprintf功能类似printf,但输出到文件而非屏幕( ) 26. fseek(fp,0,SEEK_SET)等同于rewind(fp)( ) 27. ftell函数返回文件指针当前位置( ) 28. fread/fwrite只能用于二进制文件( ) 29. SEEK_END表示从文件末尾开始偏移( ) 30. fseek(fp,-10,SEEK_CUR)将文件指针从当前位置向前移动10字节( ) 三、填空题(共10空,每空2分,共20分) 31. fputc函数用于向文件写入一个____。 32. fgetc函数用于从文件读取一个____。 33. fputs函数用于向文件写入一个____(不含\0)。 34. fgets函数用于从文件读取一个____(可能含 )。 35. fprintf函数的第一个参数是____指针。 36. fseek函数的三个参数分别是:文件指针、偏移量和____。 37. ____常量表示从文件开头开始偏移。 38. ____常量表示从文件末尾开始偏移。 39. ____函数用于获取文件指针的当前位置。 40. ____函数用于将文件指针重置到文件开头。 四、程序综合题(共3题,每题10分,共30分) 41. 程序填空题:阅读下列程序,请将①~④表示的内容填写完整。 (1) #include <stdio.h> (2) int main() (3) { (4) FILE *fp; (5) char s[20]; (6) fp=fopen("test.txt","w"); (7) fputs("Hello ",fp); (8) fputs("World ",fp); (9) fclose(fp); (10) fp=fopen("test.txt","r"); (11) fgets(s,20,fp); (12) printf("%s",s); (13) fclose(fp); (14) return 0; (15) } 上述程序中,第7行fputs的功能是①____,第11行fgets读取最多②____个字符, 第12行输出③____,文件test.txt中共写入④____行。 42.文件social.dat存储员工号和社保缴费金额。按缴费金额降序排列后,统计并输出指定区间内所有员工的员工号。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 200 void sort_soc(int id[],float soc[],int n); int main() { FILE *fp; int i=0,n,cid[N]; float soc[N]; int L,R; fp=fopen("social.dat","r"); while(!feof(fp)) { fscanf(fp,"%d%f",&cid[i],&soc[i]); ①; } n=i; fclose(fp); sort_soc(cid,soc,n); scanf("%d%d",&L,&R); int left=0,right=n-1,first=-1; while(left<=right) { int mid=(left+right)/2; if(soc[mid]>=L) {first=mid;right=mid-1;} else left=mid+1; } left=0;right=n-1;int last=-1; while(left<=right) { int mid=(left+right)/2; if(soc[mid]<=R) {last=mid;left=mid+1;} else right=mid-1; } if(first!=-1&&last!=-1&&first<=last) for(i=first;i<=last;i++) printf("%d ",cid[i]); } 43.文件tax.dat存储纳税人ID和应纳税额。按应纳税额升序排列后,查询并输出区间[L,R]内人数及最高税额对应的纳税人ID。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 150 void bubble_sort(int id[],float tax[],int n); int main() { FILE *fp; int i=0,n,cid[N]; float tax[N]; int L,R,cnt; fp=fopen("tax.dat","r"); while(!feof(fp)) { fscanf(fp,"%d%f",&cid[i],&tax[i]); ①; } n=i; fclose(fp); bubble_sort(cid,tax,n); scanf("%d%d",&L,&R); int left=0,right=n-1,first=-1; while(left<=right) { int mid=(left+right)/2; if(②) {first=mid;right=mid-1;} else left=mid+1; } left=0;right=n-1;int last=-1; while(left<=right) { int mid=(left+right)/2; if(tax[mid]<=R) {last=mid;left=mid+1;} else right=mid-1; } cnt=0;int maxid=-1;float maxt=0; for(i=first;i<=last;i++) { cnt++; if(tax[i]>maxt){maxt=tax[i];maxid=cid[i];} } printf("%d %d ",cnt,maxid); } void bubble_sort(int id[],float tax[],int n) { int i,j,tid; float ttax; for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(tax[j]>tax[j+1]) { ttax=tax[j];tax[j]=tax[j+1];tax[j+1]=ttax; tid=id[j];id[j]=id[j+1];id[j+1]=tid; } } 学科网(北京)股份有限公司 $ 编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。 本试卷是第29卷为专业核心模块训练卷,按《C语言》中"C语言卷16——文件的读写与定位"范围和要求编写。具体内容为:理解文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。 江苏省对口招生职业技能考试 C语言 试卷 (C语言卷16——文件的读写与定位) 考试时间:90分钟 满分:100分 一、单项选择题(共20题,每题2分,共40分) 1. fputc函数用于向文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串 【答案】B 【解析】fputc(ch,fp)向文件写入一个字符。 2. fgetc函数用于从文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串 【答案】A 【解析】fgetc(fp)从文件读取一个字符。 3. fputs函数用于向文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串 D.写入一行字符串(不含\0) 【答案】D 【解析】fputs(s,fp)向文件写入一个字符串(不含\0)。 4. fgets函数用于从文件中( ) A.读取一个字符 B.写入一个字符 C.读取一行字符串(含 ) D.写入一行字符串 【答案】C 【解析】fgets(s,n,fp)从文件读取最多n-1个字符到s,包含换行符(如果有空间的话)。 5. fprintf函数的功能类似于( ) A.printf(输出到屏幕) B.scanf(从键盘输入) C.sprintf(格式化到字符串) D.sscanf(从字符串解析) 【答案】A 【解析】fprintf(fp,format,...)功能类似printf,但输出到文件而非屏幕。 6. fscanf函数的功能类似于( ) A.printf B.scanf(从键盘输入) C.sprintf D.sscanf 【答案】B 【解析】fscanf(fp,format,...)功能类似scanf,但从文件读取而非键盘。 7. fread函数用于从文件中( ) A.读取单个数据项 B.批量读取数据块(字节块) C.读取格式化数据 D.读取一行字符串 【答案】B 【解析】fread(ptr,size,count,fp)批量读取数据块。 8. fwrite函数用于向文件中( ) A.写入单个数据项 B.批量写入数据块(字节块) C.写入格式化数据 D.写入一行字符串 【答案】B 【解析】fwrite(ptr,size,count,fp)批量写入数据块到文件。 9. rewind函数用于将文件指针( ) A.移动到文件末尾 B.移动到文件开头 C.移动到指定位置(需要参数) D.向后移动n个字节 【答案】B 【解析】rewind(fp)将文件指针移到开头。 10. fseek函数用于将文件指针( ) A.移动到文件开头 B.移动到指定位置 C.获取当前位置 D.检测是否到达文件末尾 【答案】B 【解析】fseek(fp,offset,origin)将文件指针移动到指定位置。 11. fseek函数的origin参数SEEK_SET表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 【答案】A 【解析】SEEK_SET=0,表示从文件开头开始偏移。 12. fseek函数的origin参数SEEK_CUR表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 【答案】B 【解析】SEEK_CUR=1,表示从当前位置开始偏移。 13. fseek函数的origin参数SEEK_END表示( ) A.文件开头 B.当前位置 C.文件末尾 D.文件中间 【答案】C 【解析】SEEK_END=2,表示从文件末尾开始偏移。 14. 想要获取文件指针的当前位置,应该使用( ) A.fseek B.rewind C.ftell D.feof 【答案】C 【解析】ftell(fp)返回文件指针当前位置(距开头的字节数)。 15. 想要将文件指针向前移动 100 字节,正确的调用是( ) A.fseek (fp,100,SEEK_SET) B.fseek (fp,-100,SEEK_CUR) C.fseek (fp,100,SEEK_END) D.fseek (fp,100,0) 【答案】B 【解析】fseek 函数第二个参数 offset,正数代表向文件末尾移动,负数代表向文件开头(向前)移动;第三个参数:SEEK_SET(值 0)代表文件开头,SEEK_CUR 代表当前指针位置,SEEK_END 代表文件末尾。 A、D 等价,均是以文件开头为基准向后移动 100 字节;C 是以文件末尾为基准向后偏移 100 字节;B 以当前指针位置为基准,偏移 - 100,实现向前移动 100 字节,符合题意。 16. 下列关于fgetc,正确的是( ) A.读取成功返回字符ASCII码值 B.读取到文件末尾返回EOF C.可以读取任何类型文件 D.一次读取多个字符 【答案】B 【解析】fgetc读到文件末尾时返回EOF。 17. 下列关于fputs和fgets的区别,正确的是( ) A.fputs写入不含\0,fgets读取含 (如有空间) B.两者都是单字符操作 C.fputs读取,fgets写入 D.两者都需要指定长度 【答案】A 【解析】fputs写入不含\0;fgets可包含换行符 (如果缓冲区允许)。 18. 想要将文件指针移动到距离文件末尾10字节处,正确的调用是( ) A.fseek(fp,10,SEEK_END) B.fseek(fp,-10,SEEK_END) C.fseek(fp,10,SEEK_SET) D.rewind(fp); fseek(fp,-10,SEEK_CUR) 【答案】B 【解析】从文件末尾向前偏移10字节:fseek(fp,-10,SEEK_END)。 19. 下列关于fprintf和fscanf,正确的是( ) A.fprintf向文件输出格式化数据 B.fscanf从文件读取格式化数据 C.两者用法类似printf/scanf但多了文件参数 D.以上都正确 【答案】D 【解析】fprintf/fscanf与printf/scanf用法相似,第一个参数是文件指针。 20. 下列关于fread和fwrite,正确的是( ) A.适用于文本文件 B.适用于二进制文件 C.适用于文本和二进制文件 D.只适用于特定类型的数据 【答案】C 【解析】 fread/fwrite适用于二进制文件,也可用于文本文件。 二、判断题(共10题,每题1分,共10分) 21. fputc函数用于向文件写入一个字符( ) 【答案】√ 【解析】fputc(ch,fp)向文件写入一个字符。 22. fgetc函数从文件读取一个字符,读到末尾返回EOF( ) 【答案】√ 【解析】fgetc读到文件末尾时返回EOF。 23. fputs写入的字符串包含\0( ) 【答案】× 【解析】fputs写入不含\0。 24. fgets读取的字符串可能包含换行符 ( ) 【答案】√ 【解析】fgets可包含换行符(如果缓冲区允许)。 25. fprintf功能类似printf,但输出到文件而非屏幕( ) 【答案】√ 【解析】fprintf(fp,format,...)输出到文件。 26. fseek(fp,0,SEEK_SET)等同于rewind(fp)( ) 【答案】√ 【解析】两者都将文件指针移到开头。 27. ftell函数返回文件指针当前位置( ) 【答案】√ 【解析】ftell(fp)返回距开头的字节数。 28. fread/fwrite只能用于二进制文件( ) 【答案】× 【解析】可用于二进制文件,也可用于文本文件。 29. SEEK_END表示从文件末尾开始偏移( ) 【答案】√ 【解析】SEEK_END=2,从文件末尾开始计算偏移量。 30. fseek(fp,-10,SEEK_CUR)将文件指针从当前位置向前移动10字节( ) 【答案】√ 【解析】负数偏移表示向前(朝文件开头方向)移动。 三、填空题(共10空,每空2分,共20分) 31. fputc函数用于向文件写入一个____。 【答案】字符 【解析】fputc(ch,fp)写入一个字符。 32. fgetc函数用于从文件读取一个____。 【答案】字符 【解析】fgetc(fp)读取一个字符。 33. fputs函数用于向文件写入一个____(不含\0)。 【答案】字符串 【解析】fputs(s,fp)写入字符串。 34. fgets函数用于从文件读取一个____(可能含 )。 【答案】字符串 【解析】fgets(s,n,fp)读取字符串。 35. fprintf函数的第一个参数是____指针。 【答案】文件(FILE *) 【解析】fprintf(fp,format,...)。 36. fseek函数的三个参数分别是:文件指针、偏移量和____。 【答案】起始位置(Origin) 【解析】fseek(fp,offset,origin)。 37. ____常量表示从文件开头开始偏移。 【答案】SEEK_SET 【解析】SEEK_SET=0,从开头开始。 38. ____常量表示从文件末尾开始偏移。 【答案】SEEK_END 【解析】SEEK_END=2,从末尾开始。 39. ____函数用于获取文件指针的当前位置。 【答案】ftell 【解析】ftell(fp)返回当前位置。 40. ____函数用于将文件指针重置到文件开头。 【答案】rewind 【解析】rewind(fp)将文件指针移到开头。 四、程序综合题(共3题,每题10分,共30分) 41. 程序填空题:阅读下列程序,请将①~④表示的内容填写完整。 (1) #include <stdio.h> (2) int main() (3) { (4) FILE *fp; (5) char s[20]; (6) fp=fopen("test.txt","w"); (7) fputs("Hello ",fp); (8) fputs("World ",fp); (9) fclose(fp); (10) fp=fopen("test.txt","r"); (11) fgets(s,20,fp); (12) printf("%s",s); (13) fclose(fp); (14) return 0; (15) } 上述程序中,第7行fputs的功能是①____,第11行fgets读取最多②____个字符, 第12行输出③____,文件test.txt中共写入④____行。 【答案】① 向文件写入字符串 ② 19 ③ Hello ④ 2 【解析】 ① fputs 函数的功能是将字符串写入指定的文件中; ② fgets 读取长度为 20,最多读取 19 个有效字符并自动补结束符; ③ 读取第一行内容 Hello,所以第 12 行输出 Hello; ④ 程序写入两行文本(Hello、World),文件共 2 行。 42.文件social.dat存储员工号和社保缴费金额。按缴费金额降序排列后,统计并输出指定区间内所有员工的员工号。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 200 void sort_soc(int id[],float soc[],int n); int main() { FILE *fp; int i=0,n,cid[N]; float soc[N]; int L,R; fp=fopen("social.dat","r"); while(!feof(fp)) { fscanf(fp,"%d%f",&cid[i],&soc[i]); ①; } n=i; fclose(fp); sort_soc(cid,soc,n); scanf("%d%d",&L,&R); int left=0,right=n-1,first=-1; while(left<=right) { int mid=(left+right)/2; if(soc[mid]>=L) {first=mid;right=mid-1;} else left=mid+1; } left=0;right=n-1;int last=-1; while(left<=right) { int mid=(left+right)/2; if(soc[mid]<=R) {last=mid;left=mid+1;} else right=mid-1; } if(first!=-1&&last!=-1&&first<=last) for(i=first;i<=last;i++) printf("%d ",cid[i]); } 【答案】① i++ 【解析】 ① 每读取一条员工社保数据,数组下标 i 自增 1,统计总记录数。 43.文件tax.dat存储纳税人ID和应纳税额。按应纳税额升序排列后,查询并输出区间[L,R]内人数及最高税额对应的纳税人ID。请完善程序。 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 150 void bubble_sort(int id[],float tax[],int n); int main() { FILE *fp; int i=0,n,cid[N]; float tax[N]; int L,R,cnt; fp=fopen("tax.dat","r"); while(!feof(fp)) { fscanf(fp,"%d%f",&cid[i],&tax[i]); ①; } n=i; fclose(fp); bubble_sort(cid,tax,n); scanf("%d%d",&L,&R); int left=0,right=n-1,first=-1; while(left<=right) { int mid=(left+right)/2; if(②) {first=mid;right=mid-1;} else left=mid+1; } left=0;right=n-1;int last=-1; while(left<=right) { int mid=(left+right)/2; if(tax[mid]<=R) {last=mid;left=mid+1;} else right=mid-1; } cnt=0;int maxid=-1;float maxt=0; for(i=first;i<=last;i++) { cnt++; if(tax[i]>maxt){maxt=tax[i];maxid=cid[i];} } printf("%d %d ",cnt,maxid); } void bubble_sort(int id[],float tax[],int n) { int i,j,tid; float ttax; for(i=0;i<n-1;i++) for(j=0;j<n-1-i;j++) if(tax[j]>tax[j+1]) { ttax=tax[j];tax[j]=tax[j+1];tax[j+1]=ttax; tid=id[j];id[j]=id[j+1];id[j+1]=tid; } } 【答案】① i++ ② tax [mid]>=L 【解析】 ① 每读取一条纳税人数据,下标 i 自增 1,统计总人数; ② 二分查找第一个大于等于 L 的位置,用于定位区间起始点。 学科网(北京)股份有限公司 $

资源预览图

第29卷 C语言-C语言卷16——文件的读写与定位——江苏省计算机类——考纲百套卷
1
第29卷 C语言-C语言卷16——文件的读写与定位——江苏省计算机类——考纲百套卷
2
第29卷 C语言-C语言卷16——文件的读写与定位——江苏省计算机类——考纲百套卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。