内容正文:
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第28卷为专业核心模块训练卷,按《C语言》中"C语言卷15——文件类型指针、文件的打开与关闭"范围和要求编写。具体内容为:掌握文件类型指针的定义;掌握文件的打开与关闭(fopen,fclose)。
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷15——文件类型指针、文件的打开与关闭)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. C语言中专门用于定义文件类型指针的标识是( )
A. int B. FILE C. char D. float
【答案】B
【解析】C语言中通过结构体类型FILE定义文件指针,用于操作外部文件。
2. 下列语句中,正确定义文件类型指针的是( )
A. int *fp; B. FILE *fp; C. FILE fp; D. file *fp;
【答案】B
【解析】文件指针标准定义格式为:FILE *指针变量名,FILE为大写关键字。
3. C语言中文件操作必须包含的头文件是( )
A. stdlib.h B. stdio.h C. string.h D. math.h
【答案】B
【解析】FILE类型、fopen、fclose函数均定义在stdio.h头文件中。
4. C语言中用于打开文件的函数是( )
A. fopen B. fclose C. open D. close
【答案】A
【解析】fopen()是C语言标准文件打开函数,用于创建或打开外部文件。
5. C语言中用于关闭已打开文件的函数是( )
A. fopen B. fclose C. endfile D. exit
【答案】B
【解析】fclose()函数用于关闭已打开的文件,释放系统文件资源。
6. fopen函数的返回值类型是( )
A. int B. char* C. FILE* D. void
【答案】C
【解析】fopen函数执行成功返回FILE*文件指针,失败返回空指针。
7. 以只读模式打开文本文件的正确模式参数是( )
A. "w" B. "r" C. "a" D. "rw"
【答案】B
【解析】文件打开模式中,"r"代表只读方式打开文本文件。
8. 以只写模式打开文本文件,清空原有内容的模式参数是( )
A. "r" B. "w" C. "a" D. "wr"
【答案】B
【解析】"w"为只写模式,文件存在则清空内容,不存在则新建文件。
9. fopen函数打开文件失败时,返回的值是( )
A. 1 B. 0 C. NULL D. 随机值
【答案】C
【解析】文件打开失败,fopen函数固定返回NULL空指针。
10. 下列关于文件指针的说法正确的是( )
A. 文件指针可以随意定义为int类型 B. FILE是C语言内置的文件结构体类型
C. 定义文件指针不需要头文件 D. 文件指针只能操作文本文件
【答案】B
【解析】FILE是stdio.h中定义的结构体类型,专门用于文件操作指针定义。
11. 以追加模式打开文本文件,保留原有内容的模式是( )
A. "r" B. "w" C. "a" D. "add"
【答案】C
【解析】"a"为文件追加模式,保留文件原有内容,新内容写入文件末尾。
12. 正确的文件打开语句是( )
A. fopen("test.txt"); B. FILE *fp = fopen("test.txt","r");
C. fopen(fp,"test.txt"); D. FILE fp = fopen("test.txt","w");
【答案】B
【解析】fopen需传入文件名和打开模式,返回值赋值给FILE类型指针变量。
13. 关于fclose函数说法正确的是( )
A. 无需传入参数 B. 参数为已定义的文件指针
C. 可以关闭未打开的文件 D. 执行后文件指针立即删除
【答案】B
【解析】fclose(文件指针),参数必须是已成功打开的文件指针。
14. "r"模式打开文件时,若文件不存在会发生的情况是( )
A. 自动新建文件 B. 打开失败,返回NULL C. 程序报错退出 D. 创建空文件
【答案】B
【解析】只读模式"r"仅能打开已存在的文件,文件不存在则打开失败。
15. "w"模式打开文件时,若文件不存在会( )
A. 打开失败 B. 自动创建新的空文件 C. 读取空内容 D. 报错编译失败
【答案】B
【解析】只写模式"w"具备新建文件功能,无对应文件则自动创建。
16. 下列不能作为fopen函数打开模式的是( )
A. "r" B. "w" C. "a" D. "open"
【答案】D
【解析】文件打开模式仅支持r、w、a等固定字符,open不是合法模式参数。
17. 执行文件操作后必须执行的操作是( )
A. 刷新缓冲区 B. 关闭文件 C. 删除文件指针 D. 清空文件内容
【答案】B
【解析】文件操作完成后,必须用fclose关闭文件,避免资源泄露。
18. 判断文件打开成功的正确语句是( )
A. if(fp==NULL) B. if(fp!=NULL) C. if(fp==0) D. if(open(fp))
【答案】B
【解析】fopen成功返回有效文件指针(非NULL),可通过该条件判断打开状态。
19. 下列关于FILE结构体说法正确的是( )
A. 需要手动定义FILE结构体 B. FILE是系统预定义结构体类型
C. FILE类型变量可直接读写文件 D. FILE仅用于文本文件操作
【答案】B
【解析】FILE是stdio.h中系统预定义的结构体,无需用户手动定义。
20. fclose函数的返回值类型是( )
A. FILE* B. int C. char D. void
【答案】B
【解析】fclose函数返回int类型值,关闭成功返回0,失败返回非0值。
二、判断题(共10题,每题1分,共10分)
21. C语言中使用FILE *可以正确定义文件类型指针。( )
【答案】√
【解析】文件指针标准定义格式:FILE *指针名,是合法规范写法。
22. fopen函数用于关闭已打开的文件。( )
【答案】×
【解析】fopen是打开文件函数,fclose为关闭文件函数。
23. 文件操作完成后,必须使用fclose函数关闭文件。( )
【答案】√
【解析】及时关闭文件可释放系统资源,是文件操作的必要规范。
24. "r"模式打开文件,文件不存在时会自动创建新文件。( )
【答案】×
【解析】只读r模式无新建文件功能,文件不存在则打开失败。
25. "w"模式打开文件,会清空原有文件中的所有内容。( )
【答案】√
【解析】只写w模式特性:覆盖清空原有内容,重新写入数据。
26. FILE类型可以不用包含stdio.h头文件直接使用。( )
【答案】×
【解析】FILE类型、文件操作函数均依赖stdio.h头文件,必须引入。
27. fopen函数打开文件成功时返回非NULL的文件指针。( )
【答案】√
【解析】文件打开成功返回有效FILE指针,失败返回NULL空指针。
28. "a"模式可以保留文件原有内容,在文件末尾追加新数据。( )
【答案】√
【解析】追加a模式核心特性:不覆盖原内容,数据续写至文件末尾。
29. 可以使用int *类型代替文件指针完成文件操作。( )
【答案】×
【解析】文件操作必须使用FILE*文件指针,普通整型指针无法操作文件。
30. fclose函数需要传入已成功打开的文件指针作为参数。( )
【答案】√
【解析】fclose仅能操作已打开的文件指针,参数非法会导致操作异常。
三、填空题(共10空,每空2分,共20分)
31. C语言中,定义文件类型指针的核心关键字是____。
【答案】FILE
【解析】通过FILE *变量名的格式,定义文件操作指针。
32. C语言中打开文件的标准函数是____。
【答案】fopen
【解析】fopen()函数专门用于实现文件打开操作。
33. C语言中关闭文件的标准函数是____。
【答案】fclose
【解析】fclose()函数用于关闭已打开的文件,释放资源。
34. 以只读方式打开文本文件的模式参数是____。
【答案">"r"
【解析】r(read)为文件只读打开模式。
35. 以只写覆盖方式打开文本文件的模式参数是____。
【答案">"w"
【解析】w(write)为文件只写覆盖打开模式。
36. 以追加续写方式打开文本文件的模式参数是____。
【答案">"a"
【解析】a(append)为文件追加打开模式。
37. fopen函数打开文件失败时的返回值是____。
【答案】NULL
【解析】文件打开失败,系统默认返回空指针NULL。
38. 文件操作必须引入的头文件是____。
【答案】stdio.h
【解析】FILE类型、fopen、fclose函数均定义在stdio.h中。
39. 文件指针的标准定义格式为____ *指针变量名。
【答案】FILE
【解析】固定格式:FILE *fp; 定义合法文件指针。
40. 文件操作结束后,必须调用____函数释放文件资源。
【答案】fclose
【解析】fclose是释放文件资源、关闭文件的唯一标准函数。
四、程序综合题(共3题,每题10分,共30分)
41. 程序填空题:阅读下列程序,请将①~④表示的内容填写完整。
(1) #include <stdio.h>
(2) int main()
(3) {
(4) FILE *fp;
(5) fp=fopen("data.txt","r");
(6) if(fp==NULL)
(7) {
(8) printf("打开失败
");
(9) return 0;
(10) }
(11) fclose(fp);
(12) return 0;
(13) }
上述程序中,第4行fp的数据类型是①____,第5行以②____方式打开文件,
第6行判断③____,第11行fclose的作用是④____。
【答案】① 文件指针 ② 只读 ③ 文件是否打开失败 ④ 关闭文件
【解析】
1.第 4 行 FILE *fp 定义 fp 为文件指针类型;
2.第 5 行 "r" 表示以只读方式打开文件;
3.第 6 行判断文件指针是否为空,即文件打开是否失败;
4.第 11 行 fclose 函数用于关闭打开的文件,释放资源。
42. 程序填空题:以下程序从文件num.txt中读取整数,求其和与平均值。请将①~④表示的内容填写完整。
#include <stdio.h>
int main()
{
FILE *fp;
int x,count=0;
float sum=0,avg;
fp=fopen("num.txt",①____);
if(fp==NULL)
{
printf("无法打开
");
return 0;
}
while(②____)
{
sum=sum+x;
count++;
}
avg=③____;
printf("和=%.1f,平均值=%.1f,个数=%d
",sum,avg,count);
④____;
return 0;
}
【答案】① "r" ② fscanf (fp,"% d",&x)!=EOF ③ sum/count ④ fclose (fp)
【解析】
① 以只读方式打开文本文件,固定填写 "r";
② 循环读取文件中的整数,直到文件末尾;
③ 平均值等于总和除以数据个数,即 sum/count;
④ 读取完成后关闭文件,释放文件资源。
43.文件subsidy.dat存储职工号和补贴金额。按补贴金额降序排列后,对每笔查询,统计并输出区间内人数,若无人则输出"0"。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 180
void sort_sub(int id[],float sub[],int n);
int main()
{
FILE *fp;
int i=0,n,cid[N];
float sub[N];
int q,L,R;
fp=fopen("subsidy.dat","r");
while(!feof(fp))
{
fscanf(fp,"%d%f",&cid[i],&sub[i]);
①;
}
n=i;
fclose(fp);
sort_sub(cid,sub,n);
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&L,&R);
int left=0,right=n-1,pos=-1;
while(left<=right)
{
int mid=(left+right)/2;
if(②)
{pos=mid;right=mid-1;}
else left=mid+1;
}
int cnt=0;
for(i=pos;i<n;i++)
{
if(sub[i]<L)break;
if(sub[i]<=R)cnt++;
else break;
}
printf("%d
",cnt);
}
return 0;
}
void sort_sub(int id[],float sub[],int n)
{
int i,j,p,tid;
float tsub;
for(i=0;i<n-1;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(sub[p]<sub[j])p=j;
if(p!=i)
{
tsub=sub[p];sub[p]=sub[i];sub[i]=tsub;
tid=id[p];id[p]=id[i];id[i]=tid;
}
}
}
【答案】① i++ ② sub [mid]>=L
【解析】
① 每读取一条职工数据,数组下标 i 自增 1 统计总人数;
② 二分查找查找第一个大于等于 L 的补贴位置,满足条件则记录位置。
学科网(北京)股份有限公司
$
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第28卷为专业核心模块训练卷,按《C语言》中"C语言卷15——文件类型指针、文件的打开与关闭"范围和要求编写。具体内容为:掌握文件类型指针的定义;掌握文件的打开与关闭(fopen,fclose)。
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷15——文件类型指针、文件的打开与关闭)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. C语言中专门用于定义文件类型指针的标识是( )
A. int B. FILE C. char D. float
2. 下列语句中,正确定义文件类型指针的是( )
A. int *fp; B. FILE *fp; C. FILE fp; D. file *fp;
3. C语言中文件操作必须包含的头文件是( )
A. stdlib.h B. stdio.h C. string.h D. math.h
4. C语言中用于打开文件的函数是( )
A. fopen B. fclose C. open D. close
5. C语言中用于关闭已打开文件的函数是( )
A. fopen B. fclose C. endfile D. exit
6. fopen函数的返回值类型是( )
A. int B. char* C. FILE* D. void
7. 以只读模式打开文本文件的正确模式参数是( )
A. "w" B. "r" C. "a" D. "rw"
8. 以只写模式打开文本文件,清空原有内容的模式参数是( )
A. "r" B. "w" C. "a" D. "wr"
9. fopen函数打开文件失败时,返回的值是( )
A. 1 B. 0 C. NULL D. 随机值
10. 下列关于文件指针的说法正确的是( )
A. 文件指针可以随意定义为int类型 B. FILE是C语言内置的文件结构体类型
C. 定义文件指针不需要头文件 D. 文件指针只能操作文本文件
11. 以追加模式打开文本文件,保留原有内容的模式是( )
A. "r" B. "w" C. "a" D. "add"
12. 正确的文件打开语句是( )
A. fopen("test.txt"); B. FILE *fp = fopen("test.txt","r");
C. fopen(fp,"test.txt"); D. FILE fp = fopen("test.txt","w");
13. 关于fclose函数说法正确的是( )
A. 无需传入参数 B. 参数为已定义的文件指针
C. 可以关闭未打开的文件 D. 执行后文件指针立即删除
14. "r"模式打开文件时,若文件不存在会发生的情况是( )
A. 自动新建文件 B. 打开失败,返回NULL C. 程序报错退出 D. 创建空文件
15. "w"模式打开文件时,若文件不存在会( )
A. 打开失败 B. 自动创建新的空文件 C. 读取空内容 D. 报错编译失败
16. 下列不能作为fopen函数打开模式的是( )
A. "r" B. "w" C. "a" D. "open"
17. 执行文件操作后必须执行的操作是( )
A. 刷新缓冲区 B. 关闭文件 C. 删除文件指针 D. 清空文件内容
18. 判断文件打开成功的正确语句是( )
A. if(fp==NULL) B. if(fp!=NULL) C. if(fp==0) D. if(open(fp))
19. 下列关于FILE结构体说法正确的是( )
A. 需要手动定义FILE结构体 B. FILE是系统预定义结构体类型
C. FILE类型变量可直接读写文件 D. FILE仅用于文本文件操作
20. fclose函数的返回值类型是( )
A. FILE* B. int C. char D. void
二、判断题(共10题,每题1分,共10分)
21. C语言中使用FILE *可以正确定义文件类型指针。( )
22. fopen函数用于关闭已打开的文件。( )
23. 文件操作完成后,必须使用fclose函数关闭文件。( )
24. "r"模式打开文件,文件不存在时会自动创建新文件。( )
25. "w"模式打开文件,会清空原有文件中的所有内容。( )
26. FILE类型可以不用包含stdio.h头文件直接使用。( )
27. fopen函数打开文件成功时返回非NULL的文件指针。( )
28. "a"模式可以保留文件原有内容,在文件末尾追加新数据。( )
29. 可以使用int *类型代替文件指针完成文件操作。( )
30. fclose函数需要传入已成功打开的文件指针作为参数。( )
三、填空题(共10空,每空2分,共20分)
31. C语言中,定义文件类型指针的核心关键字是____。
32. C语言中打开文件的标准函数是____。
33. C语言中关闭文件的标准函数是____。
34. 以只读方式打开文本文件的模式参数是____。
35. 以只写覆盖方式打开文本文件的模式参数是____。
36. 以追加续写方式打开文本文件的模式参数是____。
37. fopen函数打开文件失败时的返回值是____。
38. 文件操作必须引入的头文件是____。
39. 文件指针的标准定义格式为____ *指针变量名。
40. 文件操作结束后,必须调用____函数释放文件资源。
四、程序综合题(共3题,每题10分,共30分)
41. 程序填空题:阅读下列程序,请将①~④表示的内容填写完整。
(1) #include <stdio.h>
(2) int main()
(3) {
(4) FILE *fp;
(5) fp=fopen("data.txt","r");
(6) if(fp==NULL)
(7) {
(8) printf("打开失败
");
(9) return 0;
(10) }
(11) fclose(fp);
(12) return 0;
(13) }
上述程序中,第4行fp的数据类型是①____,第5行以②____方式打开文件,
第6行判断③____,第11行fclose的作用是④____。
42. 程序填空题:以下程序从文件num.txt中读取整数,求其和与平均值。请将①~④表示的内容填写完整。
#include <stdio.h>
int main()
{
FILE *fp;
int x,count=0;
float sum=0,avg;
fp=fopen("num.txt",①____);
if(fp==NULL)
{
printf("无法打开
");
return 0;
}
while(②____)
{
sum=sum+x;
count++;
}
avg=③____;
printf("和=%.1f,平均值=%.1f,个数=%d
",sum,avg,count);
④____;
return 0;
}
43.文件subsidy.dat存储职工号和补贴金额。按补贴金额降序排列后,对每笔查询,统计并输出区间内人数,若无人则输出"0"。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 180
void sort_sub(int id[],float sub[],int n);
int main()
{
FILE *fp;
int i=0,n,cid[N];
float sub[N];
int q,L,R;
fp=fopen("subsidy.dat","r");
while(!feof(fp))
{
fscanf(fp,"%d%f",&cid[i],&sub[i]);
①;
}
n=i;
fclose(fp);
sort_sub(cid,sub,n);
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&L,&R);
int left=0,right=n-1,pos=-1;
while(left<=right)
{
int mid=(left+right)/2;
if(②)
{pos=mid;right=mid-1;}
else left=mid+1;
}
int cnt=0;
for(i=pos;i<n;i++)
{
if(sub[i]<L)break;
if(sub[i]<=R)cnt++;
else break;
}
printf("%d
",cnt);
}
return 0;
}
void sort_sub(int id[],float sub[],int n)
{
int i,j,p,tid;
float tsub;
for(i=0;i<n-1;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(sub[p]<sub[j])p=j;
if(p!=i)
{
tsub=sub[p];sub[p]=sub[i];sub[i]=tsub;
tid=id[p];id[p]=id[i];id[i]=tid;
}
}
}
学科网(北京)股份有限公司
$