C语言各章节单元测试题及答案——文件

合集下载

C语言文件章节题库及答案注释

C语言文件章节题库及答案注释

第十二章文件1.系统的标准输入文件是指(D A)。

A)键盘B)显示器C)软盘D)硬盘2.以下可作为函数fopen中第一个参数的正确格式是(C)。

A)c:user\text.txt B) c:\user\text.txtC) “c:\user\text.txt”D)”c:\\user\\text.txt3.若执行fopen函数时发生错误,则函数的返回值是(B)。

A) “ab+”B) 0 NULL C) 1 D) EOF4.当顺利执行了文件关闭操作时,fclose函数的返回值是(C)。

A)-1否则B)TURE C)0 D)15.已知函数的调用形式:fread(buffer, size, count, fp); 其中buffer代表的是(C)。

A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入数据的存放地址D)一个存储区,存放要读的数据项6.若有以下定义和说明#include “stdio.h”struct std{char num[6];char name[8];float mark[4];}a[30];FILE *fp;设文件中以二进制形式存有10个班的学生数据,且已正确打开,文件指针定位于文件开头。

若要从文件中读出30个学生的数据放入a数组中,以下不能实现此功能的语句是(D)。

A)for(i=0;i<30;i++)fread(&a[i], sizeof(struct std),1L,fp);B) for(i=0; i<30; i++)fread(a+i, sizeof(struct std), 30L,fp);C) fread(a,sizeof( struct std), 30L,fp);D) for(i=0;i<30;i++)Fread(a[i], sizeof(struct std), 1L,fp); a[I] 前少了&7.fscanf函数的一般调用形式是(D)。

c语言一二章试题及答案

c语言一二章试题及答案

c语言一二章试题及答案C语言一二章试题及答案1. 以下哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. variable-2D. variable_2答案:D2. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:B3. 以下哪个选项是C语言中的整型数据类型?A. floatB. doubleC. charD. all of the above答案:D4. 在C语言中,如何声明一个字符变量并初始化为'A'?A. char myChar = 'A';B. int myChar = 'A';C. float myChar = 'A';D. double myChar = 'A';答案:A5. 以下哪个选项是C语言中正确的注释方式?A. // This is a single line commentB. /* This is a single line comment */C. // This is a multi-line commentD. /* This is a multi-line comment */答案:A6. 在C语言中,以下哪个选项是正确的字符串声明方式?A. char str[] = "Hello, World!";B. char str = "Hello, World!";C. char str[] = 'Hello, World!';D. char str = 'Hello, World!';答案:A7. 在C语言中,以下哪个选项是正确的数组声明方式?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2};D. int arr = {1, 2, 3, 4, 5};答案:A8. 在C语言中,以下哪个选项是正确的条件语句?A. if (condition)B. if (condition){// code}C. if conditionD. if (condition)// code答案:B9. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for (int i = 0; i <= 10; i++)C. for (int i = 10; i > 0; i--)D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的函数定义?A. void myFunction() {// code}B. int myFunction() {// code}C. void myFunction(int x) {// code}D. All of the above答案:D。

C语言全部章节习题集(参考答案)

C语言全部章节习题集(参考答案)

C语言全部章节习题集(参考答案).txt如果真诚是一种伤害,请选择谎言;如果谎言是一种伤害,请选择沉默;如果沉默是一种伤害,请选择离开。

第一章 C语言概述一、选择题:1、一个C程序的执行是从( A )。

A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、在 C 语言中,每个语句必须以( D )结束。

A. 回车符B. 冒号C. 逗号D. 分号3、C 语言规定:在一个源程序中,main函数的位置( C )。

A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后4、一个C 语言程序是由( B )。

A. 一个主程序和若干子程序组成B. 函数组成C. 若干过程组成D. 若干子程序组成5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体B. 主函数可以调用任何非主函数的其他函数C. 任何非主函数可以调用其他任何非主函数D. 程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。

A. 生成可执行目标文件B. 生成目标文件C. 输出运行结果D. 自动保存源文件二、填空题:1、C 语言只有 32 个关键字和 9 种控制语句。

2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。

3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。

4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函数 printf 完成的。

5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。

(完整版)C语言各章练习题

(完整版)C语言各章练习题

目录第一章程序设计和C语言 (2)第二章最简单的C程序设计 (2)第三章选择结构程序设计 (4)第四章循环结构程序设计 (7)第五章数组 (11)第六章函数 (14)第七章指针 (18)第一章程序设计和C语言一、选择题:1.一个C程序的执行是从( )A、本程序的main函数开始,到main函数结束B、本文件第一个函数开始,到本文件的最后一个函数结束C、本程序的main函数开始,到本文件的最后一个函数结束D、本文件的第一个函数开始,到本文件的main结束2.以下说法不正确的是()A、一个C源程序可由一个或多个函数组成B、一个C程序必须包含一个main函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面3.C语言规定:在一个源程序中,main函数的位置()A、必须在开始B、必须在系统调用的库函数的位置C、可以任意D、必须在最后4.源程序program.c经编译产生的目标文件和连接后产生的可执行文件是( )A、program.bak和program.objB、program.obj和program.exeC、program.exl和program.cD、program.bak和prgram.exe第二章最简单的C程序设计一、选择题1.是合法的用户自定义标识符的( )A、ah-spksB、doubleC、<ctrl>D、_myapple2.以下正确的C语言标识符是()A、%xB、a+bC、a123D、test!3.以下不能定义为用户标识符的是( )A、V oidB、b_2C、intD、name4.以下选项中可作为C语言合法整数的是( )A、11010(B)B、0583C、x2b2D、0xafb5.VC++6.0中的短整型数值在计算机中占用的字节个数是( )A、1B、2C、3D、46.设short int型的数据长度为2个字节,则unsigned short 类型数据的取值范围是()P34A、均为2个字节B、0至65535C、-3276至32767D、-256至255 7.以下选项中可作为C语言合法常量的是()(指数E或e前必须有数字,后面必须有整数)A、-80.0B、-080C、-8e1.2D、-80.0e8.在VC++6.0编译环境下,下列式中,值不为4的表达式是()P34,double为8字节A、sizeof(unsigned long)B、sizeof(long)C、sizeof(unsigned int)D、sizeof(double)9.设有说明语句:char a=’\123’;则变量a( )一个ascii字符A、包含1个字符B、包含2个字符C、3个字符D、说明不合法10.设x为一数字字符,则其所对应的十进制数值为()。

c语言文件练习题含答案_(1)

c语言文件练习题含答案_(1)

第十二章文件基础训练一、填空题1、文件是指___________________________________________________________。

2、根据数据的组织形式,C中将文件分为______ASCII码文件________和___二进制文件___________两种类型。

3、现要求以读写方式,打开一个文本文件 stu1 ,写出语句:__FILE *fp fp=fopen(“stu.txt”,”r+”);_______________。

__________________________________。

4、现要求将上题中打开的文件关闭掉,写出语句:___fclose(fp);__________________。

5、若要用fopen函数打开一个新的二进制文件,该文件要既能读也能写,则打开文件方式字符串应该是___fopen(“a.txt”,”wb+”);__________。

二、选择题1、若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( ) 。

A) fopen("A:\user\abc.txt","r") B) fopen("A:\\user\\abc.txt","r+")C) fopen("A:\user\abc.txt","rb") C) fopen("A:\\user\\abc.txt","w")2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。

A) 0 B) 1 C) -1 D) 一个非0值3、当已经存在一个file1.txt文件,执行函数fopen(“file1.txt”,”r+”)的功能是()。

A)打开file1.txt文件,清除原有的内容;B)打开file1.txt文件,只能写入新的内容;C)打开file1.txt文件,只能读取原有内容;D)打开file1.txt文件,可以读取和写入新的内容;4、 fread(buf , 64,2,fp)的功能是:( )A)从fp所指向的文件中,读出整数64,并存放在buf中;B)从fp所指向的文件中,读出整数64和2,并存放在buf中;C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;5、以下程序的功能是( ) 。

单元测试题及答案(C语言语法基础)

单元测试题及答案(C语言语法基础)

单元一:C语言语法基础1、以下说法正确的是()。

A、C语言程序总是从第一个的函数开始执行B、在C语言程序中,要调用函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分2、C语言中最简单的数据类型包括()。

A、整型、实型、逻辑型B、整型、实型、字符型C、整型、字符型、逻辑型D、字符型、实型、逻辑型3、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。

A、必须为字母B、必须为下划线C、必须为字母或下划线D、可以是字母,数字和下划线中任一字符4、C语言中运算对象必须是整型的运算符是()。

A、%B、/C、=D、-5、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。

A、2.500000B、2.750000C、3.500000D、0.0000006、设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为()。

A、intB、floatC、doubleD、不确定7、已知int a=6; 则执行a+=a-=a*a;语句后,a的值为()。

A、36B、0C、-24D、-608、运行如下程序,其结果为()。

main(){int i=3;printf(“%d\n”,++i);}A、4B、3C、2D、59、以下程序的输出结果为()。

# include <stdio.h>main(){ int a=2,b=5;printf("a=%d,b=%d\n",a,b); }A、a=%2,b=%5B、a=2,b=5C、a=d,b=dD、a=%d,b=%d10、执行下面两个语句后,输出的结果为()。

char c1=97,c2=98;printf(“%d %c”,c1,c2) ;A、97 98B、97 bC、a 98D、a b11、设x=2.3,a=8,y=4.8,则条件表达式a>x+y值为()。

C语言各章节练习题(含答案)

C语言各章节练习题(含答案)

C语言各章节练习题(含答案)一、c语言概述练习题选择1.一个c程序的执行是从。

a)本程序的main函数开始,到main函数结束b)本程序文件的第一个函数已经开始,至本程序文件的最后一个函数完结c)本程序文件的第一个函数已经开始,至本程序main函数完结d)本程序的main函数已经开始,至本程序文件的最后一个函数完结2.以下描述不恰当的就是。

a)一个c源程序必须包含一个main函数b)一个c源程序可由一个或多个函数组成c)c程序的基本组成单位是函数d)在c程序中,注释说明只能位于一条语句的后面3.以下描述恰当的就是。

a)在对一个c程序进行编译的过程中,可发现注释中的拼写错误b)在c程序中,main 函数必须位于程序的最前面c)c语言本身没输入输出语句d)c程序的每行中就可以写下一条语句4.一个c语言程序就是由。

a)一个主程序和若干个子程序组成b)函数组成c)若干过程组成d)若干子程序组成二、数据类型、运算符与表达式选择.1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。

x=(i=4,j=16,k=32)a)4b)16c)32d)522.下列四组选项中,均不是c语言关键字的选项是。

a)defineiftypeb)getccharprintfc)includecasescanfd)whilegopow3.以下四组选项中,均就是不合法的用户标识符的选项就是。

(c语言标识符由字母,数字,下划线共同组成,结尾无法就是数字)a)wp_0dob)b-agotointc)floatla0_ad)-123abctemp8.未知字母a的ascii码点为十进制数65,且c2为字符型,则继续执行语句c2=‘a’+‘6’-‘3’后,c2中的值。

a)db)68c)不确定的值d)c填空题1.若存有以下定义,则排序表达式y+=y-=m*=y后的y值就是【1】。

-16intm=5,y=2;7.若x和n均是int型变量,且x和n的初值均为5,则计算表达式后x的值为【8】,n的值为【9】。

C语言各章节单元测试题及答案(二)

C语言各章节单元测试题及答案(二)

单元4 顺序结构程序设计1有以下程序#include <stdio.h>main( ){int c, d;c = 10^3;d = 10+3;printf("%d,%d\n", c, d); }程序运行后的输出结果是( )A.103,13B.13,13C.10,13D.9,132.有以下程序#include <stdio.h>main(){int c,d;c = 10 | 5;d = 10 + 5;printf("%d,%d\n", c, d); }程序的运行结果是( )A.15,15B.10,15C.5,15D.105,153.有如下程序#include <stdio.h>main(){int a = 8, b;b = (a >> 2) % 2;printf("%d,%d\n", a, b); }程序运行后的输出结果是( )A.8,0B.4,0C.4,1D.8,14.有以下程序#include <stdio.h> main(){int a;a = (int)(-1.53*3);printf("%d\n", a); }程序的运行结果是( )A.-4B.-3C.-5D.结果不确定5有以下程序#include <stdio.h> main(){int a;a = (int)1.99*3;printf("%d\n", a);}程序的运行结果是( )A.3B.5C.6D.结果不确定6有如下程序#include <stdio.h>main( ){int a = 9, b;b = (a >> 3) % 4;printf("%d,%d\n", a, b); }程序运行后的输出结果是( )A.9,1B.4,0C.4,3D.9,37有以下程序#include <stdio.h>main( ){int c,d;c = (13>>1)|1;d = (13>1)||1;printf("%d,%d\n", c, d);}程序运行后的输出结果是( )A.6,1B.1,1C.7,1D.7,28表达式:(int)((double)9/2)-9%2 的值是()A.0B.3C.4D.59sizeof( double )是()A.一个整型表达式B.一个双精度型表达式C.一个不合法的表达式D.一种函数调用10有以下程序:#include <stdio.h>main(){int s,t,A=10;double B=6;s=sizeof(A);t=sizeof(B);printf("%d,%d\n",s,t);}在VC6.0平台上编译运行,程序运行后的输出结果是()A.10,6B.4,4C.2,4D.4,811若有定义语句:int x=10;,则表达式x-=x+x的值为()A.0B.-20C.-10D.1012表达式a+=a -= a=9 的值是()A.18B.-9C.0D.913若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/1014设有定义:int x=2;,以下表达式中,值不为6的是()A.2*x,x+=2B.x++,2*xC.x*=(1+x)D.x*=x+115若有以下程序#include <stdio.h>main(){int a=0,b=0,c=0;c= (a -= ++a), (a+=b, b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是()A.0,4,0B.0,4,4C.1,4,1D.1,4,416若有以下程序#include <stdio.h>main(){int a=0,b=0,c=0,d;c= (a+=b,, b+=a); /*第4行*/d=c; /*第5行*/; /*第6行*/;printf("%d,%d,%d\n",a,b,c); /*第7行*/}编译时出现错误,你认为出错的是()A.第4行B.第5行C.第6行D.第7行17以下叙述中正确的是()A.复合语句在语法上包含多条语句,其中不能定义局部变量B.花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的C.空语句就是指程序中的空行D.当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改18以下叙述正确的是( )A.C程序总是以main()作为程序执行的起始行B.main()函数若不带参数,其后面的一对圆括号可省略C.函数体内的定义语句和可执行语句允许任意穿插出现D.C语言中的语句之间必须用分号作为分隔符19阅读以下程序#include <stdio.h>main(){int case ;float printF;printf("请输入2个数:");scanf("%d %f",&case,&printF );printf("%d %f\n",case,printF ); }该程序在编译时产生错误,其出错原因是( )A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case 的值20以下叙述中正确的是( )A.在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上B.在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔C.在printf函数中,各个输出项只能是变量D.使用printf函数无法输出百分号%21有以下程序#include <stdio.h>main(){int a=2, c=5;printf("a=%%d,b=%%d\n", a,c );}程序的输出结果是( )A.a=2,b=5B.a=%2,b=%5C.a=%d,b=%dD.a=%%d,b=%%d22设有定义:int n = 1234;double x = 3.1415;则语句printf("%3d,%1.3f\n", n, x);的输出结果是( )A.1234,3.142B.123,3.142C.1234,3.141D.123,3.14123若有以下程序#include <stdio.h>main(){ int a=0,b=0,c=0c= (a+=++b, b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是()A.1,5,1B.1,5,5C.-1,4,4D.-1,4,-124有以下程序:#include <stdio.h>main(){char a,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%c\n",a,b,c,d);}当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)12<CR>34<CR>则输出结果是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第11章文件11.1典型考试题剖析11.1.1选择题【例1】若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是。

A) EOF B) -1 C) 非零值 D) NULL✧考点:feof函数的返回值✧分析:根据定义,当文件指针指向文件末尾时,函数feof值为“真”(非0)。

✧答案:C【例2】下面的程序执行后,文件test.t中的内容是。

#include <stdio.h>void fun(char *fname,char *st){ FILE *myf;int i;myf=fopen(fname,"w" );for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){ fun("test.t","new world");fun("test.t","hello,");}A) hello, B) new worldhello,C) new world D) hello, rld✧考点:文件的打开方式。

✧分析:本题中fun函数功能是将一个字符串写入文件中,向文件写入数据的方式是“w”方式。

用“w”方式向文件写入数据时,若原文件不存在,则在打开时建立文件,若原文件存在,则在打开时将该文件删除,然后重新建立一个新文件。

程序中第一次调用fun函数时,建立了“test.t”文件,并将字符串“new world”写入,第二次调用fun时,将上一次建立的“test.t”文件删去,新建一个“test.t”文件,并写入字符串“hello,”,因此程序执行结束后“test.t”文件的内容为“hello,”✧答案:A【例3】若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是_______。

A) fopen("A:\user\abc.txt","r")B) fopen("A:\\user\\abc.txt","r+")C) fopen("A:\user\abc.txt","r")D) fopen("A:\\user\\abc.txt","w")✧考点:文件打开函数。

✧分析:fopen函数有两个参数,第一个参数为文件名,当函数给出的是文件路径时,要用\\进行分隔,这是因为用双引号括起来的字符序列表示字符串,字符串中“\\”表示转义字符,实际代表“\”。

fopen的第二个参数是文件的打开方式,题目要求是进行读写操作,“r”代表只读,“w”代表只写,因此只有答案B符合要求。

✧答案:B【例4】有以下程序,程序运行后的输出结果是_______。

#include <stdio.h>main(){ FILE *fp;int i=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d %d\n",k,n);fclose(fp);}A) 20 30 B) 20 50 C) 30 50 D) 30 20✧考点:文件格式化读写函数。

✧分析:该程序先以写方式打开文件,将变量i和j的值写入文件,再以读方式打开文件,将刚刚写入的信息输出到变量k和n中,最后打印变量k和n并关闭文件。

得到的结果实际就是变量i和j的初始值。

✧答案:A【例5】对于下述程序,在方式串分别采用“w”和“wb”运行时,两次生成的文件TEST的长度是_______。

#include <stdio.h>void main(){ FILE *fp=fopen("TEST",方式串);fputc('A',fp);fputc('\n',fp);fputc('B',fp);fputc('\n',fp);fputc('C',fp);fclose(fp);}A) 7字节、7字节 B) 7字节、5字节C) 5字节、7字节 D) 5字节、5字节✧考点:文件打开方式对文件内容的影响。

✧分析:本例考查文本操作的字符转换特性。

在文本方式操作时,某些字符会被转换,例如“\n”会被转换成为两个连续字符“\r”和“\n”写入文件,在读出时恰好相反。

但二进制操作时没有任何转换。

✧答案:B【例6】以下程序的功能是_______。

#include <stdio.h>main(){ FILE *fp1,*fp2;fp1=fopen("file1","r");fp2=fopen("file2","w");while(!feof(fp1))fputc(fgetc(fp1),fp2);fclose(fp1);fclose(fp2);}A) 将磁盘文件的内容显示到屏幕上B) 将两个磁盘文件合并为一个C) 将一个磁盘文件复制到另一个磁盘文件中D) 将两个磁盘文件合并后送到屏幕✧考点:文件打开函数和文件读写函数。

✧分析:本题中以读的方式打开file1文件,以写的方式打开file2文件,再将输出语句fputc(fgetc(fp1),fp2)放入循环体内,表示只要fp1指向的文件没有结束,就从该文件中读出一个字符送到fp2指向的文件中。

✧答案:C11.1.2填空题【例1】下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空。

#include <stdio.h>FILE *fp;main( ){ int i,j;if((fp=fopen( 【1】 ,"wb"))==NULL) exit(0);for(i=0;i<10;i++){ scanf("%d",&j);fwrite(&j,sizeof(int),1, 【2】 );}fclose(fp);}✧考点:文件打开函数和文件写函数。

✧分析:将键入的数据存到指定文件,必须先打开文件,因此第一个空应该填入打开文件的文件名;根据fwrite的函数原型可以知道,最后一个参数应该是文件指针,所以填入fp。

✧答案:【1】"bi.dat" 【2】fp【例2】以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。

#include <stdio.h>main( ){ FILE *fp;char ch,fname[32];int count=0;printf("Input the filename:");scanf("%s",fname);if((fp=fopen( 【1】 ,"w+"))==NULL){ printf("Can't open file:%s \n",fname);exit(0);}printf("Enter data:\n");while((ch=getchar())!='#'){ fputc(ch,fp);count++;}fprintf( 【2】 ,"\n%d\n",count);fclose(fp);}✧考点:文件打开函数和文件写函数。

✧分析:操作前要打开文件,因此第一空一定应填入文件名,即fname。

根据题意知道,将字符全部写入文件后,还要在文件末尾写入字符个数,程序中采用的是fprintf函数,根据fprintf函数原型可知,它的第一个参数是文件指针,因此第二空应填入文件指针fp。

✧答案:【1】fname 【2】 fp【例3】以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE *myf;long f1;myf= 【】 ("test.t","rb");fseek(myf,0,SEEK_END);f1=ftell(myf);fclose(myf);printf("%ld\n",f1);✧考点:文件打开函数和文件定位函数。

✧分析:在对文件操作之前一定要打开文件,因此空白处应该填入fopen。

函数fseek的功能是将文件指针myf移到文件末尾处。

函数ftell的功能是得到流式文件中的当前位置,即相对于文件开头的位移量。

✧答案: fopen【例4】以下程序用来统计文件中字符的个数,请填空。

#include <stdio.h>main(){ FILE *fp;long num=0L;if((fp=fopen("fname.dat","r"))==NULL){ printf("Open error\n");exit(0); }while( 【】 ){ fgetc(fp);num++;}printf("num=%ld\n",num-1);fclose(fp);}✧考点:文件读函数和文件状态函数。

✧分析:while循环对文件中的字符进行逐个的统计,这种统计应该随着文件结束而结束,所以空白处应填入的循环条件为判断文件是否结束。

✧答案:!feof(fp)或feof(fp)==0。

【例5】若fp已确定为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen( 【】 );✧考点:文件打开函数。

✧分析:根据文件打开函数的函数原型可知,fopen函数有两个参数,第一个参数为文件名,第二个参数为打开方式。

本题要求对二进制文件进行“读”操作,因此打开方式可以为“rb”或“rb+”。

相关文档
最新文档