C语言程序设计第2版李学刚课堂实践答案 4512页Word格式.docx
《C语言程序设计第2版李学刚课堂实践答案 4512页Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第2版李学刚课堂实践答案 4512页Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
D.fscanf(文件指针,格式字符串,输出表列)
4.fwrite函数的一般调用形式是(D)。
A.fwrite(buffer,count,size,fp)B.fwrite(fp,size,count,buffer)
C.fwrite(fp,count,size,buffer)D.fwrite(buffer,size,count,fp)
5.若调用fputc函数成功输出字符,则其返回值是(D)。
A.EOFB.1C.0D.输出的字符
6.设有以下结构体类型:
structst
charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件中,以下不正确的形式是(C)。
A.fwrite(student,sizeof(structst),50,fp);
B.fwrite(student,50*sizeof(structst),1,fp);
C.fwrite(student,25*sizeof(structst),25,fp);
50;
fwrite(student+i,sizeof(structst),1,fp);
7.阅读以下程序及对程序功能的描述,其中正确的描述是(C)。
#include<
intmain()
FILE*in,*out;
charinfile[10],outfile[10];
intc;
printf("
Entertheinfilename:
\n"
);
scanf("
%s"
infile);
Entertheoutfilename:
outfile);
if((in=fopen(infile,"
r"
))==NULL)
{printf("
cannotopeninfile\n"
exit(0);
}
if((out=fopen(outfile,"
w"
))==NULL
{printf("
cannotopenoutfile\n"
while((ch=fgetc(in))!
=EOF)
fputc(ch,out);
fclose(in);
fclose(out);
A.程序完成将磁盘文件的信息在屏幕上显示的功能
B.程序完成将两个磁盘文件合二为一的功能
C.程序完成将一个磁盘文件复制到另一个磁盘文件中
D.程序完成将两个磁盘文件合并且在屏幕上输出
二、知识填空题
1.函数调用语句:
fgets(buf,n,fp);
从fp指向的文件中读入n-1个字符放到buf字符数组中,函数返回值为buf的首地址。
2.设有以下结构体类型:
structst
intnum;
floats[4];
}student[50];
并且结构数组student中的元素都已有值,若要将这些元素写到硬盘fp文件中,请将以下fwrite语句补充完整:
fwrite(student,50*sizeof(st),1,fp);
3.feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为1,否则为0。
4.用fopen(文件名,使用方式)打开文件,当使用方式为“r”时,只
能读入数据,不能进行写操作;
当使用方式为“w”时,只能写入数据,不能进行读数据操作。
5.当调用函数fread从磁盘文件中读数据时,若函数返回值为10,则表明读入了10个字符;
若函数的返回值为0,则是遇到了文件结束符;
若函数返回值为-1,则意味着读文件出错。
三、程序填空题
1.以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志。
请填空。
FILE*fp;
charch,fname[10];
printf("
lnputthenameoffile\n"
gets(fname);
if((fp=fopen(fname,"
))==NULL)
{printf("
Cannotopen\n"
exit(0);
Enterdata\n"
while((ch=getchar())!
='
#'
)fputc(ch,fp);
fclose(fp);
return0;
2.下面程序用变量count统计文件中字符的个数,请填入适当内容。
FILE*fp;
longcount=0;
if((fp=fopen("
letter.dat"
"
))==NULL)
{printf("
cannotopenfile\n"
while(fgetc(fp)!
=EOF)count++;
frintf("
count=%ld\n"
count);
fclose(fp);
3.下面程序由终端键盘输入字符,存放到文件中,用!
结束输入,请填入适当的内容。
stdlib.h>
inputnameoffile\n"
if((fp=fopen(fname,"
{
printf("
cannotopen\n"
exit(0);
}
enterdata:
while(ch=getchar()!
!
'
)
fputc(ch,fp);
4.下面程序从一个二进制文件中读入结构体数据,并把结构体数据显示在终端屏幕上。
请填入适当内容。
structrec
floattotal;
};
FILE*f;
if((f=fopen("
bin.dat"
"
rb"
))==NULL);
reout(f);
fclose(f);
voidreout(FILE*f)
structrec,r;
fread(&
r,sizeof(rec),1,f);
while(!
feof(f))
{
%df,%f\n"
r.num,r.total);
fread(&
r,sizeof(rec),1,f);
5.下面程序把从终端读入的10个整数以二进制方式写到一个名为bi.dat的新文件中,请填空。
stdio,h>
inti,j;
if((fp=fopen("
bi.dat"
"
wb"
for(i=0;
i<
10;
i++)
scanf("
%d"
&
j);
fwrite(&
j,sizeof(int),1,fp);
6.以下程序的功能是将C语言源程序文件exam.c中用反斜杠与星号括起来的非嵌套注释删除,然后存入文件exam.out中。
voiddelcomm(FILE*fp1,FILE*fp2)
intc,i=0;
while((c=fgetc(fp1))!
=EOF)
if(c=='
\n'
)
fprintf(fp2,"
else
switch(i)
{
case0:
if(c=='
/'
)i=1;
elsefprintf(fp2,"
%c"
c);
break;
case1:
*'
)i=2;
else
{fprintf(fp2,"
i=0;
case2:
)i=3;
case3:
i=(c=='
)?
0:
2;
}
FILE*fp1,*fp2;
fp1=fopen("
exam.c"
fp2=fopen("
exam.out"
delcomm(fp1,fp2);
fcloseall();
7.以下程序的功能是将文件file1.c的内容输出到屏幕上并复制到文件file2.c中,请填入适当内容。
FILE*fp1,*fp2;
charch;
file1.c"
file2.c"
while((ch=fgetc(fp1))!
{putchar(ch);
fputc(fp2,ch)}
fclose(fp1);
fclose(fp2);
8.以下程序的功能是用“追加”的形式打开gg.txt察看文件指针的位置。
其中ftell(*FILE)返回long型的文件指针位置。
程序执行前gg.txt内容为:
sample.请填入适当内容。
FILE*fp;
longposition;
fp=fopen("
gg.txt"
"
a"
);
position=ftell(fp);
position=%ld\n"
position);
fprintf(fp,"
sampledata\n"
position=ftell(fp);
四、程序设计题
1.编程实现以下功能:
从键盘输入一个字符串,将文件中的大写字母全部转换成小写字母,输出到磁盘文件letter.txt中保存,以字符#表示输入结束。
参考代码:
voidfun(FILE*fp)
charf;
请输入一个字符串(#号结束输入):
f=getchar();
while(f!
if(f>
A'
&
f<
Z'
f=f+32;
fputc(f,fp);
f=getchar();
}
letter.txt"
不能打开文件\n"
fun(fp);
2.有一文件num.txt中存有形如-1,0,1,2,5,3,0,-1,2,4,5,5,6,7,0,的数据,编程统计出文件中正整数的个数。
#defineN15
voidwrite();
intread();
intt;
write();
t=read();
正整数有%d个。
t);
return0
;
intread()
intt,n=0;
if((fp=fopen("
num.txt"
cannotopenfile\n"
fscanf(fp,"
%d%,"
t);
feof(fp))
if(t>
0)n++;
fscanf(fp,"
returnn;
voidwrite()
inti,a[N]={-1,0,1,2,5,3,0,-1,2,4,5,5,6,7,0};
N;
fprintf(fp,"
%d%c"
a[i],'
'
3.在文件worker.dat中存放着工人的基本信息,用以下结构体来描述:
structworker
//工号
charname[10];
//姓名
intage;
//年龄
charsex;
//性别
chardept[20];
//部门
请编程查找工号为1001的人工信息并输出在屏幕上。
存放工人的信息文件worker.dat需自己编写程序形成,也可以参考下列程序实现:
structworkerw;
inti;
worker.dat"
cannotopenstu.csvfile\n"
5;
\n输入第%d个工人\n工号:
"
i+1);
w.num);
getchar();
姓名:
gets(w.name);
年龄:
w.age);
性别:
w.sex);
部门:
gets(w.dept);
w,sizeof(structworker),1,fp);
#include"
stdio.h"
stdlib.h"
voidread();
read();
voidread()
structworkerwrk;
{printf("
wrk,sizeof(structworker),1,fp);
if(wrk.num==1001)
printf("
num:
%dname:
%sage:
%dsex:
%cdept:
%s\n"
wrk.num,wrk.name,wrk.age,wrk.sex,wrk.dept);
fread(&