1、国家二级 C 语言机试(结构体、共用体、位运算及文件操作)模拟试卷 14 及答案解析(总分:56.00,做题时间:90 分钟)一、选择题(总题数:28,分数:56.00)1.有以下程序 #include main() int a=5,b=1,t; t=(aA.11B.6C.21D.12.若变量已正确定义,则以下语句的输出结果是 s=32; s=32; printf(“d“,s);(分数:2.00)A.-1B.1C.32D.03.若有以下程序 main()int c; c=105; printf(“dn“,c); 则程序的输出结果是(分数:2.00)A.15B.10000C.5D.1054.若有
2、以下程序 main()int c; C=1315; printf(“dn“,c); 则程序的输出结果是(分数:2.00)A.15B.18C.13D.55.有以下程序 main()int i=0; i=i; printf(“dn“,i); 程序运行后的输出结果是(分数:2.00)A.0B.1C.8D.-16.有以下程序 main()int i=1; i=ii; printf(“dn“,i); 程序运行后的输出结果是(分数:2.00)A.-1B.0C.1D.77.下面关于位运算符的叙述,正确的是(分数:2.00)A.#表示“按位异或”的运算B.表示“按位或”的运算C.表示“按位异或”的运算D.&表
3、示“按位与”的运算8.以下叙述中正确的是(分数:2.00)A.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖B.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据C.C 语言中的文件是流式文件,因此只能顺序存取数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失9.下列关于 C 语言文件的叙述中正确的是(分数:2.00)A.文件由结构序列组成,可以构成二进制文件或文本文件B.文件由一系列数据依次排列组成,只能构成二进制文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文
4、件10.下面选项中关于“文件指针”概念的叙述正确的是(分数:2.00)A.文件指针就是文件位置指针,表示当前读写数据的位置B.文件指针指向文件在计算机中的存储位置C.文件指针是程序中用 FILE 定义的指针变量D.把文件指针传给 fscanf 函数,就可以向文本文件中写入任意的字符11.设 fp 已定义,执行语句 fp=fopen(“file”,“W”);后,以下针对文本文件 file 操作叙述的选项中正确的是(分数:2.00)A.写操作结束后可以从头开始读B.只能写不能读C.可以在原有内容后追加写D.可以随意读和写12.以下函数不能用于向文件中写入数据的是(分数:2.00)A.fwriteB
5、.foutcC.ftellD.fprintf13.设文件指针 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,以下针对文本文件 file 操作叙述的选项中正确的是(分数:2.00)A.写操作结束后可以从头开始读B.可以在原有内容后追加写C.可以随意读和写D.只能写不能读14.有以下程序 #include main()FILE*f; f=fopen(“fileatxt“,“w“); fprintf(f,“abc“); fclose(f); 若文本文件 fileatxt 中原有内容为:hello,则运行以上程序后,文件 fileatxt 中的内容为(分数:2.00)A.abc
6、loB.abcC.helloabeD.abchello15.有以下程序 #include main() FILE*fp;int i,a6=1,2,3,4,5,6; fp=fopen(“d2dat“,“w+“); for(i=0;i6;i+)fscanf(fp,“d“,&a5-i); fclose(fp); for(i=0;iA.1,2,3,4,5,6B.6,5,4,3,2,1,C.4,5,6,l,2,3,D.1,2,3,3,2,1,16.执行以下程序后,testtxt 文件的内容是(若文件能正常打开) #includestdioh main() FILE*fb; char*s1=“Fortra
7、n“,“s2=“Basic“; if(fb=fopen(“testtxt“,“wb“)=NULL) printf(“Cant open testtxt filen“);exit(1); fwrite(s1,7,1,fb); *把从地址 s1 开始的 7 个字符写到 fb 所指文件中* fseek(fb,0L,SEEK SET); *文件位置指针移到文件开头* fwrite(s2,5,1,fb); fclose(fb); (分数:2.00)A.BasicanB.BasicFortranC.Basic 、D.FortranBasic17.读取二进制文件的函数调用形式为: fread(buffer,
8、size,count,fp);其中 buffer 代表的是(分数:2.00)A.一个整型变量,代表待读取的数据的字节数B.一个内存块的首地址,代表读入数据存放的地址C.一个文件指针,指向待读取的文件D.一个内存块的字节数18.有下列程序: #include main() FILE*fp;int a10=1,2,3),i,n; fp=fopen(“d1dat“,“w“); for(i=0;iA.12300B.123C.1D.32119.以下叙述中错误的是(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件
9、D.fwrite 函数用于以二进制形式输出数据到文件20.有以下程序 #includestdioh main() FILE*pf; char*s1=“China“,*s2=“Beijing“; pf=fopen(“abcdat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf); *文件位置指针回到文件开头* fwrite(s1,5,1,pf); fclose(pf); 以上程序执行后 abcdat 文件的内容是(分数:2.00)A.ChinangB.ChinaC.ChinaBeijingD.BeijingChina21.有下列程序: #include main()
10、FILE*fp;int k,n,a61=1,2,3,4,5,6; fp=fopen(“d2dat“,“w“); fprintf(fp,“dddn“,a0,a1,a2); fprintf(fp,“dddn“,a3,a4,a5); fclose(fp); 。 fp=fopen(“d2dat“,“r“); fscanf(fp,“dd“,&k,&n);printf(“ddn“,k,n); fclose(fp); 程序运行后的输出结果是(分数:2.00)A.1 4B.123 456C.123 4D.1 222.有下列程序: #include main() FILE*fp;int a10=1,2,3,0,
11、0),i; fp=fopen(“d2dat“,“wb“); fwtite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(“d2dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(fp); for(i=0;iA.1,2,3,1,2,3,0,0,0,0,B.1,2,3,0,0,1,2,3,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,23.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 fe
12、of(fp)的返回值为(分数:2.00)A.0B.0C.NULLD.非 0 值24.有以下程序 #include main() FILE*fp;char str10; fp=fopen(“myfiledat“,“w“); fputs(“abc“,fp);fclose(fp); fp=fopen(“myfiledat“,“a+“); fprintf(fp,“d“,28); rewind(fp); fscanf(fp,“s“,str);puts(str); fclose(fp); 程序运行后的输出结果是(分数:2.00)A.28cB.abc28C.abeD.因类型不一致而出错25.以下程序依次把从
13、终端输入的字符存放到 f 文件中,用#作为结束输入的标志,则在横线处应填入的选项是 #include main()FILE*fp; char ch; fp=fopen(“fname“,“w“); while(ch=getchar()!=#) fputc(_); felose(fp); (分数:2.00)A.fp,chB.chC.ch,“fname“D.ch,fp26.以下程序用来统计文件中字符的个数(函数 feof 用以检查文件是否结束,结束时返回非零) #include main()FILE*fp; long num=0; fp=fopen(“fnamedat“,“r“); while(_)
14、; fgetc(fp);num+; printf(“num=dn“,num); fclose(fp); 下面选项中,填入横线处不能得到正确结果的是 A)feof(fp) B)feof(fp)=NULL(分数:2.00)A.feof(fp)B.feof(fp)=NULLC.!feof(fp)D.feof(fp)=027.下面关于“EOF”的叙述,正确的是(分数:2.00)A.EOF 的值等于 0B.文本文件和二进制文件都可以用 EOF 作为文件结束标志C.EOF 是在库函数文件中定义的符号常量D.对于文本文件,fgetc 函数读入最后一个字符时,返回值是 EOF28.若 fp 已定义为指向某文件
15、的指针,且没有读到该文件的末尾,则 C 语言函数 feof(fp)的函数返回值是(分数:2.00)A.0B.非 0C.-1D.EOF国家二级 C 语言机试(结构体、共用体、位运算及文件操作)模拟试卷 14 答案解析(总分:56.00,做题时间:90 分钟)一、选择题(总题数:28,分数:56.00)1.有以下程序 #include main() int a=5,b=1,t; t=(aA.11B.6C.21 D.1解析:解析:本题考查位操作运算符。 “”是左移运算符,左移一位相当于乘 2,“”是按位或运算符。5 序移两位相当于乘 4,得到 20,20 的二进制数是 00010100,和 0000
16、0001 进行按位或操作得到00010101,即十进制的 21。2.若变量已正确定义,则以下语句的输出结果是 s=32; s=32; printf(“d“,s);(分数:2.00)A.-1B.1C.32D.0 解析:解析:“按位异或”运算的规则是:参与运算的两个运算数中相对应的二制位上,若数相同,则该位的结果为 0;若数不同,则该位的结果为 1。因为语句“s=32;s=32;”相当于 s 与自身做按位异或运算,所以其结果等于 0。3.若有以下程序 main()int c; c=105; printf(“dn“,c); 则程序的输出结果是(分数:2.00)A.15 B.10000C.5D.105
17、解析:解析:按位异或()的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0;若数不同,该位的结果为 1。整数 10 和 5 的二进制编码分别为 1010 和 0101,异或结果为 1111,其十进制数据位 15。4.若有以下程序 main()int c; C=1315; printf(“dn“,c); 则程序的输出结果是(分数:2.00)A.15B.18C.13 D.5解析:解析:按位或()的运算规则是:参加运算的两个运算数中,只要两个相应的二进制位中一个为1,则该位的运算结果即为 1:只有当两个相应位的数都为 0 时,该位的运算结果才为 0。13 的二进制位
18、1101,5 的二进制位 0101,或运算的结果为 1101,因此值为 13。5.有以下程序 main()int i=0; i=i; printf(“dn“,i); 程序运行后的输出结果是(分数:2.00)A.0B.1C.8D.-1 解析:解析:运算符()是位运算符中唯一的一个单目运算符,运算对象应置于运算符的右边,其运算功能是把运算对象的内容按位取反(使每一位上的 0 变 1,1 变 0)。i 的初值为 0,二进制位 00000000,因此取反后结果为 11111111,最高位为符号位,为一 1 的补码形式,因此输出结果为一 1。6.有以下程序 main()int i=1; i=ii; pr
19、intf(“dn“,i); 程序运行后的输出结果是(分数:2.00)A.-1B.0 C.1D.7解析:解析:按位异或(n)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为 0:若数不同,该位的结果为 1。本题中表达式 ii 的值必为 0,因为 i 的各个位置的二进制值相同。7.下面关于位运算符的叙述,正确的是(分数:2.00)A.#表示“按位异或”的运算B.表示“按位或”的运算C.表示“按位异或”的运算D.&表示“按位与”的运算 解析:解析:C 语言提供了 6 种位运算符,各种位运算符的含义见下表:8.以下叙述中正确的是(分数:2.00)A.打开一个已存在的文件
20、并进行了写操作后,原有文件中的全部数据必定被覆盖B.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据C.C 语言中的文件是流式文件,因此只能顺序存取数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:解析:在 C 语言中,有两种对文件的存取方式;顺序存取和直接存取;如果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后
21、,必须将它关闭。9.下列关于 C 语言文件的叙述中正确的是(分数:2.00)A.文件由结构序列组成,可以构成二进制文件或文本文件B.文件由一系列数据依次排列组成,只能构成二进制文件C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件解析:解析:在 C 语言中,对输入、输出的数据都按“数据流”的形式进行处理。数据可以按文本形式或二进制形式存放在介质上,因此文件可以按数据的存放形式分为文本文件和二进制文件。10.下面选项中关于“文件指针”概念的叙述正确的是(分数:2.00)A.文件指针就是文件位置指针,表示当前读写数据的位置B.文件指针指向文件在计算机
22、中的存储位置C.文件指针是程序中用 FILE 定义的指针变量 D.把文件指针传给 fscanf 函数,就可以向文本文件中写入任意的字符解析:解析:文件指针实际上是指向一个结构体类型的指针,这个结构体中包含如缓冲区的地址、在缓冲区中当前存取的字符的位置、对文件是“读”或“写”、是否出错、是否已经遇到文件结束标志等信息。一般称文件指针结构体类型名为 FILE,可以用此类型名来定义文件指针。 格式FILE*指针变量名 说明FILE 是一个存储文件信息的结构体类型的变量。 注意不要和文件位置指针混淆,在文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgetc 函数,每读写一次,该指针均
23、向后移动,它不需在程序中定义说明,而是由系统自动设置的。而文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。fscanf 函数可以向文本文件和二进制文件输入数据。11.设 fp 已定义,执行语句 fp=fopen(“file”,“W”);后,以下针对文本文件 file 操作叙述的选项中正确的是(分数:2.00)A.写操作结束后可以从头开始读B.只能写不能读 C.可以在原有内容后追加写D.可以随意读和写解析:解析:本题考查文件操作。fopen 的 mode 参数有多种类型:r 以只读方式打开文件、r+以可读写方式打开文件、rb+以读写方式打开一个二进制文件、w
24、以只写方式打开文件、w+以读写方式打开文件、wb+以读写方式打开二进制文件。12.以下函数不能用于向文件中写入数据的是(分数:2.00)A.fwriteB.foutcC.ftell D.fprintf解析:解析:本题考查文件操作。ftell 函数返回文件指针的当前位置,其他的都写文件函数。13.设文件指针 fp 已定义,执行语句 fp=fopen(“file“,“w“);后,以下针对文本文件 file 操作叙述的选项中正确的是(分数:2.00)A.写操作结束后可以从头开始读B.可以在原有内容后追加写C.可以随意读和写D.只能写不能读 解析:解析:在题目中函数 fopen 以“只写”方式打开文件
25、 file。14.有以下程序 #include main()FILE*f; f=fopen(“fileatxt“,“w“); fprintf(f,“abc“); fclose(f); 若文本文件 fileatxt 中原有内容为:hello,则运行以上程序后,文件 fileatxt 中的内容为(分数:2.00)A.abcloB.abc C.helloabeD.abchello解析:解析:本题考查文件打开方式。 格式:文件指针名=fopen(文件名,使用文件方式)15.有以下程序 #include main() FILE*fp;int i,a6=1,2,3,4,5,6; fp=fopen(“d2d
26、at“,“w+“); for(i=0;i6;i+)fscanf(fp,“d“,&a5-i); fclose(fp); for(i=0;iA.1,2,3,4,5,6B.6,5,4,3,2,1, C.4,5,6,l,2,3,D.1,2,3,3,2,1,解析:解析:在程序中定义了一个整型数组 a6,并对它赋初值,并以写入的方式打开了文件 d2dat。然后利用一个 for 循环把数组 a 中的元素数据写入文件 d2dat 中,调用函数 rewind 把将文件内部的位置指针重新指向一个文件的开头,再利用 for 循环语句把文件中的数据依次写入到倒序排列的数组 a 中,最后输出数组 a 中的数组元素。16
27、.执行以下程序后,testtxt 文件的内容是(若文件能正常打开) #includestdioh main() FILE*fb; char*s1=“Fortran“,“s2=“Basic“; if(fb=fopen(“testtxt“,“wb“)=NULL) printf(“Cant open testtxt filen“);exit(1); fwrite(s1,7,1,fb); *把从地址 s1 开始的 7 个字符写到 fb 所指文件中* fseek(fb,0L,SEEK SET); *文件位置指针移到文件开头* fwrite(s2,5,1,fb); fclose(fb); (分数:2.00
28、)A.Basican B.BasicFortranC.Basic 、D.FortranBasic解析:解析:本题主要考查文件的基本操作。在 main 函数中,首先打开 texttxt 文件,然后通过fwrite 函数把 s1 字符串写到文件中,接下来通过 fseek 函数把文件指针移动到文件开始,再调用 fwrite函数把 s2 字符窜写到文件中,s2 的长度小于 sl 的长度,因此第二次写的时候会覆盖第一次写的部分内容,程序运行后 testtext 中内容为 Basican。17.读取二进制文件的函数调用形式为: fread(buffer,size,count,fp);其中 buffer 代
29、表的是(分数:2.00)A.一个整型变量,代表待读取的数据的字节数B.一个内存块的首地址,代表读入数据存放的地址 C.一个文件指针,指向待读取的文件D.一个内存块的字节数解析:解析:buffer 是数据块的指针,对 fread 来说,它是内存块的首地址,输入的数据存入此内存块中。18.有下列程序: #include main() FILE*fp;int a10=1,2,3),i,n; fp=fopen(“d1dat“,“w“); for(i=0;iA.12300B.123 C.1D.321解析:解析:本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(“d1dat“,“w“)
30、;以可写的方式为输出建立新文本文件,调用 printf,输出“123”,fp=fopen(“dl,dat“,“r“);以只读的方式打开文本文件,不能对文件内容进行操作。19.以下叙述中错误的是(分数:2.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:解析:本题考查的是输入输出函数的使用,gets 和 getchar 函数用于从标准输入设备终端读入字符串和字符,并非从磁盘文件读入,fputs 用于把字符串输出到文件,fwrite 用于以二进制形式输出数
31、据到文件。20.有以下程序 #includestdioh main() FILE*pf; char*s1=“China“,*s2=“Beijing“; pf=fopen(“abcdat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf); *文件位置指针回到文件开头* fwrite(s1,5,1,pf); fclose(pf); 以上程序执行后 abcdat 文件的内容是(分数:2.00)A.Chinang B.ChinaC.ChinaBeijingD.BeijingChina解析:解析:本题主考查函数 fwrite 的使用。函数 fwrite 的调用形式为:int
32、fwrite(char*pt,unsigned size,unsigned n,FILE*fp);其功能是把 pt 所指向的 n*size 个字节输出到 fp 所指文件中。在本题中“fwrite(s2,7,1,pf);”的功能是把字符串“Beijing”输入到文件abcdat 中,然后调用 rewind(pf),把文件位置指针回到文件开头,再调用“fwrite(s1,5,1,pf)”把字符串“Chma”写入到文件 abcdat 中,所以此时文件 abcdat 的内容为 Chinang。21.有下列程序: #include main() FILE*fp;int k,n,a61=1,2,3,4,5
33、,6; fp=fopen(“d2dat“,“w“); fprintf(fp,“dddn“,a0,a1,a2); fprintf(fp,“dddn“,a3,a4,a5); fclose(fp); 。 fp=fopen(“d2dat“,“r“); fscanf(fp,“dd“,&k,&n);printf(“ddn“,k,n); fclose(fp); 程序运行后的输出结果是(分数:2.00)A.1 4B.123 456 C.123 4D.1 2解析:解析:用文件函数 fopen 打开 d2dat 文件并把数组 a6中的元素分两行写入到 d2dat 文件中,关闭文件。然后再次打开文件 d2dat,用
34、 fscanf()函数读取文件 d2dat 中的数据,因为每行没有分隔符,所以每一行会被认为是一个完整的数。并存入到变量 k 和 n 中,输出变量 k 和 n 的值为 123 456。22.有下列程序: #include main() FILE*fp;int a10=1,2,3,0,0),i; fp=fopen(“d2dat“,“wb“); fwtite(a,sizeof(int),5,fp); fwrite(a,sizeof(int),5,fp); fclose(fp); fp=fopen(“d2dat“,“rb“); fread(a,sizeof(int),10,fp); fclose(f
35、p); for(i=0;iA.1,2,3,1,2,3,0,0,0,0,B.1,2,3,0,0,1,2,3,0,0, C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,0,0,0,0,0,解析:解析:首先用函数 fopen()以“wb”的方式开打文件“d2dat”,然后调用两次 fwrite 函数将数组 a 的 5 个元素,依次输出到文件 fp 中,共 10 个字节,关闭文件。再次打开文件,使用文件指针指向文件的开头,调用 fread 函数从文件 fp 中读取这 10 个字节的数据到数组 a 中,此时数组 a 的内容就变为1,2,3,0,0,1,2,3,0,0,最后的输
36、出结果为“1,2,3,0,0,1,2,3,0,0”。23.设 fp 为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为(分数:2.00)A.0B.0C.NULLD.非 0 值 解析:解析:ANSI C 提供的 feof 函数的功能是判断 fp 所指的文件的位置是否已达到文件尾,如果达到文件尾,则 feof 函数的值为 1,否则为 0,表示文件尚未结束。24.有以下程序 #include main() FILE*fp;char str10; fp=fopen(“myfiledat“,“w“); fputs(“abc“,fp);fclose(fp); fp=fopen
37、(“myfiledat“,“a+“); fprintf(fp,“d“,28); rewind(fp); fscanf(fp,“s“,str);puts(str); fclose(fp); 程序运行后的输出结果是(分数:2.00)A.28cB.abc28 C.abeD.因类型不一致而出错解析:解析:在程序中首先把字符串 abc 写入到文件 myfiledat 中,然后再把整数 28 追加到字符串abc 的后面,最后把文件 myfiledat 的内容读入到字符串 str 中,并把其内容输出。25.以下程序依次把从终端输入的字符存放到 f 文件中,用#作为结束输入的标志,则在横线处应填入的选项是 #
38、include main()FILE*fp; char ch; fp=fopen(“fname“,“w“); while(ch=getchar()!=#) fputc(_); felose(fp); (分数:2.00)A.fp,chB.chC.ch,“fname“D.ch,fp 解析:解析:fputc()是以字符(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。使用格式为“fpute(eh,fp);”。 其中 ch 是待输出的某个字符,它可以是一个字符常量,也可以是一个字符变量;fp 是文件指针。fputc(ch,fp)的功能是将字符 ch 写到文件指针 fp 所指的文件中。如果
39、输出成功,fputc 函数返回所输出的字符:如果输出失败,则返回一个 EOF 值。EOF 是在 stdioh 库函数文件中定义的符号常量,其值等于-1。26.以下程序用来统计文件中字符的个数(函数 feof 用以检查文件是否结束,结束时返回非零) #include main()FILE*fp; long num=0; fp=fopen(“fnamedat“,“r“); while(_); fgetc(fp);num+; printf(“num=dn“,num); fclose(fp); 下面选项中,填入横线处不能得到正确结果的是 A)feof(fp) B)feof(fp)=NULL(分数:2.
40、00)A.feof(fp)B.feof(fp)=NULLC.!feof(fp) D.feof(fp)=0解析:解析:feof 函数用来判断文件是否结束。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。题目横线用于判断文件不结束,读出字符。文件不结束 feof 值为 0,若执行循环则应用表达式!feof(fp)。27.下面关于“EOF”的叙述,正确的是(分数:2.00)A.EOF 的值等于 0B.文本文件和二进制文件都可以用 EOF 作为文件结束标志C.EOF 是在库函数文件中定义的符号常量 D.对于文本文件,fgetc 函数读入最后一个字符时,返回值是 EOF解析:解析:EOF 是在 stdioh 库函数文件中定义的符号常量,其值等于-1。EOF 用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用 fgetc 函数,每读写一次,该指针均向后移动,28.若 fp 已定义为指向某文件的指针,且没有读到该文件的末尾,则 C 语言函数 feof(fp)的函数返回值是(分数:2.00)A.0 B.非 0C.-1D.EOF解析:解析:feof 用来判断文件是否结束。如果遇到文件结束,函数 feof(fp)的值为 1,否则为 0。