admin 管理员组

文章数量: 887053


2024年1月6日发(作者:c语言怎么输入一个二维数组)

◇邵东职业中专2007年高三C语言习题◇

第十二章 文件

基础训练

一、填空题

1、 文件是指___________________________________________________________。

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

3、 现要求以读写方式,打开一个文本文件 stu1 ,写出语句:

__FILE *fp fp=fopen(“”,”r+”);_______________。

__________________________________。

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

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

二、选择题

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

A) fopen("A:","r") B) fopen("A:","r+")

C) fopen("A:","rb") C) fopen("A:","w")

2、若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为( )。

A) 0 B) 1 C) -1 D) 一个非0值

3、 当已经存在一个文件,执行函数fopen(“”,”r+”)的功能是( )。

A)打开文件,清除原有的内容;

B)打开文件,只能写入新的内容;

C)打开文件,只能读取原有内容;

D)打开文件,可以读取和写入新的内容;

4、 fread(buf , 64,2,fp)的功能是:( )

A)从fp所指向的文件中,读出整数64,并存放在buf中;

本试卷共5页 第1页 制卷人:容利平

B)从fp所指向的文件中,读出整数64和2,并存放在buf中;

C)从fp所指向的文件中,读出64个字节的字符,读两次,并存放在buf地址中;

D)从fp所指向的文件中,读出64个字节的字符,并存放在buf中;

5、 以下程序的功能是( ) 。

main()

{

FILE * fp;

char str[]=”Beijing 2008”;

fp = fopen(“file2”,”w”);

fputs(str,fp);

fclose(fp);

}

A)在屏幕上显示“Beiing 2008”;

B)把”Beijing 2008”存入file2文件中;

C)在打印机上打印出“Beiing 2008”;

D)以上都不对;

6、 以下程序是建立一个名为myfile的文件,并把从键盘输入字符存入该文件,当键盘上输入结束时关闭该文件。选择正确内容填空。

main()

{ FILE *fp;

char c ;

char name[10];

fp=fopen(“myfile”,_”wb”_______);

do

{ c=getchar();

fputc(c , fp);

} while(c!=EOF);

fclose(fp); }

(1) A) fgets B)fopen C ) fclose D) fgetc

(2) A) “r” B) “r+” C ) “w” D)

“w+”

三、设计题

1、 编写一个程序,以只读方式打开一个文本文件 ,如果打开,将文件地址放在fp文件指针中,打不开,显示“Cann’t open file n. ”,

◇邵东职业中专2007年高三C语言习题◇

然后退出。void main()

{

FILE *fp;

if((fp=fopen("","r"))='0');

printf("")

}

综合训练

一、填空题

1、以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE *myf; ling f1;

myf= _________ (“test.t”,“rb”);

fseek(myf,0,SEEK_END); f1=ftel(myf);

fclose(myf);

printf(“%dn”,f1);

2、下面程序把从终端读入的10个整数以二进制方式写到一个名为的新文件中,请填空.

#include

FILE *fp;

main()

{ int i,j;

if((fp=fopen(__””__________, "wb"))==NULL)

exit(0);

for(i=0; i<10; i++)

{ scanf("%d",&j);

fwrite(&j,sizeof(int),1,______fp_______ );

}

本试卷共5页 第2页 制卷人:容利平

fclose(fp);

3、以下程序用来统计文件中字符个数。请填空。

#include "stdio.h"

main()

{ FILE *fp; long num=0L;

if((fp=fopen("","r"))==NULL)

{ pirntf("Open errorn"); exit(0);}

while( ___!feof(fp)______________ )

{ fgetc(fp); num++;}

printf("num=%1dn",num-1);

fclose(fp);

}

4、以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件文件中形成文本文件,并将字符的个数写到文件尾部,请填空。

#include

main( )

{ FILE *fp;

char ch,fname[32]; int count=0;

printf("Input the filename :"); scanf("%s",fname);

if((fp=fopen( _fname____________ ,"w+"))==NULL)

{ printf("Can't open file:%s n",fname); exit(0);}

printf("Enter data:n");

while((ch=getchar())!="#"){ fputc(ch,fp); count++;}

fprintf(____________ ,"n%dn", count);

fclose(fp);

}

5、以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换为大写字母,输出到文件中,然后从该文件读出字符串并显示出来。请填空。

#include

main()

{ FILE *fp;

char str[100]; int i=0;

if((fp=fopen("",___________))==NULL)

{ printf("can't open this file.n");exit(0);}

◇邵东职业中专2007年高三C语言习题◇

printf("input astring:n"); gest(str);

while (str[i])

{ if(str[i]>='a'&&str[i]<='z')

str[i]=_____ ________;

fputc(str[i],fp);

i++;

}

fclose(fp);

main()

{ FILE *fp;

long count =0;

if ((fp=fopen(“”,___________))==NULL)

{ printf (“cannot open filen”);

exit(0) ;

}

while( ! feof (fp)) //! feof (fp)---- 未到文件尾,为真

fp=fopen("",______________);

fgets(str,100,fp);

printf("%sn",str);

fclose(fp);

}

6、 下面程序由键盘输入字符,存放到文件中,用!结束输入,请在____________上填空。

#include

main()

{ FILE *fp;

char ch ;

char fname[10];

printf(“Input name of filen”);

gets(fname);

if ((fp=fopen( fname, “w”))==NULL)

{ printf (“cannot open filen”);

exit(0) ;

}

printf((“Enter data:n”);

while(_______________!=’!’) //提示:从键盘输入一个字符,如不是!

fputc(__________________) ; //将从键盘输入的字符存入打开的文件中

fclose(fp);

}

7、下面程序用变量count 统计文件中字符的个数。请在____________中填写正确内容。

#include

本试卷共5页 第3页 制卷人:容利平

//feof()函数判断文件指针是否到文件尾,到文件尾,函数返回非0值,若未到文件尾,函数返回值0

{ ___________________; //提示:从文件读入一个字符

______________;

}

printf( “count =%ldn”,count);

_________________;

}

二、选择题

1、下面的程序执行后,文件testt.t中的内容是( )。

#include

void fun(char *fname.,char *st)

{ FILE *myf; int i;

myf=fopen(fname,“w” );

for(i=0;i

fclose(myf);

}

main()

{ fun(“test”,“new world”; fun(“test”,“hello,”0;)

A)hello, B)new worldhello, C)new world D) hello,

rld

2、有以下程序

#include

main()

{ FILE *fp; int i=20,j=30,k,n;

fp=fopen(“”“w”);

fprintf(fp,“%dn”,i);fprintf(fp,“%dn”j);

fclose(fp);

◇邵东职业中专2007年高三C语言习题◇

fp=fopen(“”, “r”); 5、以下程序是将一个名为 的文本文件拷贝到一个名为的新文fp=fscanf(fp,“%d%d”,&k,&n); printf(“%d%dn”,k,n); 本文件中,请选择正确内容填空。

fclose(fp); #include

} main()

程序运行后的输出结果是( ) 。 { FILE * fp1, *fp2 ;

A) 20 30 B) 20 50 C) 30 50 D) 30 int c ;

20

3、 若有以下定义和说明:

#iinclude

struct std

{ char num[6];

char name[8];

float mark[4];

}a[30];

FILE * fp;

设文件中以二进制形式存有许多学生的数据,且已经正确打开,文件指针定位在文件开头,若要从文件中读出30个学生的数据放入a数组中,以下正确的语句是( )。

A)fread (a , sizeof(struct std),30 , fp) ;

B)fread (&a[i] , sizeof(struct std),1 , fp) ;

C)fread (a +i, sizeof(struct std),1 , fp) ;

D)fread (a , struct std,30 , fp) ;

4、设有以下结构体类型:

struct st

{ char name[8];

int num;

float s[4];

} student [20];

并且结构体数组student中的元素都已经有值,若要将这些元素写到fp所指向的磁盘文件中,以下不正确的形式是( )。

A)fwrite (student , sizeof(struct st ),20 , fp) ;

B)fwrite (student ,20* sizeof(struct st ),1, fp) ;

C)fwrite (student , 10*sizeof(struct st ),10 , fp);

D)for (i=0;i<20;i++)

fwrite (student+i , sizeof(struct st ),1 , fp);

本试卷共5页 第4页 制卷人:容利平

fp1=fopen(“”,__________);

fp2=fopen(“”,__________);

c=getc(fp1);

while(c!=EOF)

{ fputc(c,fp2) ;

c = fgetc(fp1);

}

fclose(fp1);

fclose(fp2);

}

A) “r” B ) “r+” C) “rb” D) “rb+”

A) “W+ “ B) “wb+” C) “ w” D) “wb”

三、问答题

1、 什么叫“缓冲文件系统”?

四、编程题:

1、 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test ”中保存,输入的字符串以!表示结束。

◇邵东职业中专2007年高三C语言习题◇

参考答案

基础训练

一、填空题

1、是指存储在外部介质上数据的集合 ;

2、 ASCII文件和二进制文件;

3、 FILE * fp ;

fp = fopen( “stu”,” r+ ”) ;

4、 fclose ( fp);

5、 ”wb+”

二、选择题:

1、B 2.、A 3、D 4、C 5、B

6、B、C

三、编程题:参考答案

main()

{

FILE * fp;

If ((fp=fopen(“”,”r”))==NULL)

{

printf(“Cann’t open file n” );

exit(0);

}

}

综合训练

一、填空题

1、fopen

2、""

fp

3、 !feof(fp)

4、 fname

fp

5、 "w"或"w+"或"wt"或"w+t"或"""wt+"

str[i]-32 或str[i]-('a'-'A'或str[i]-'a'+'A'

"r"或"r+"或"r+t"或"rt+"

6、 ( ch=getchar())

ch , fp

本试卷共5页 第5页 制卷人:容利平

7、 r

fgetc(fp);

count++

fclose(fp);

二、选择题

1.、A 2、 A 3、A 4、C 5、 A、C

三、问答题(略)

四、编程题

参考答案:

#include

main()

{FILE *fp;

char str[80],filename[10];

int i=0;

if((fp=fopen(“test”,”w”))==NULL)

{ printf(“Cannot open filen”);

exit(0);

}

printf(“Input a string:n”);

gets(str);

while(str[i]!=’!’)

{

if (str[i]>=’a’&&str[i]<=’z’)

str[i]=str[i]-32;

fputc(str[i],fp);

i++;}

fclose(fp);

fp=fopen(“test”,”r”);

fgets(str,strlen(str)+1,fp);

printf(“%sn”,str);

fclose(fp);

}


本文标签: 文件 打开 字符