填空题
给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到文本文件中,然后再顺序读出显示在屏幕上。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include<math.h>
#include<stdio.h>
int fun(char*fname)
{FILE*fp;int i,n;float x;
if((fp=fopen(fname,"w"))==NULL)return 0;
for(i=1;i<=10;i++)
/**********found**********/
fprintf(
1,"%d%f/n",i,sqrt((double)i));
printf("/nSucceed!!/n");
/**********found**********/
2;
printf("/nThe data in file:/n");
/**********found**********/
if((fp=fopen(
3,"r"))==NULL)
return 0;
fscanf(fp,"%d%f",&n,&x);
while(!feof(fp))
{printf("%d %f/n",n,x);fscanf(fp,"%d%f",
&n,&x);}
fclose(fp);
return 1;
}
main()
{char fname[]="myfile3.txt";
fun(fname);
}
【正确答案】
【答案解析】fp fclose(fp) fname
[解析] 题目要求将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。主要是文件操作以及fopen、fprintf和fscanf函数的使用。
第一空:fprintf函数的调用形式是fprintf(fp,格式字符串,输出列表),其中fp是指向将要写入文件的文件指针,“pintf( ---|||________|||---"%d%f/n",i,sqrt((double)”是将i和i的平方根写入文件。因此(1)应该填入文件指针,由“if((fp=fopen(fname,"w"))==NULL)”可知,这里fp是文件指针。
第二空:由“if((fp=fopen( ---|||________|||---"r"))=NULL)”可知文件再次被打开,在再次打开文件之前需要将文件关闭,因此第二空处应该是将fp文件指针指向的文件关闭。文件关闭使用fclose函数,fclose函数的调用形式是fclose(文件指针),因此第二空应该是“fclose(fp)”。
第三空:考察fopen函数的使用,fopen函数的调用形式是:fopen(文件名,文件使用方式),文件名通过函数参数fname传递过来。因此第三空处应该是“if((fp=fopen(fname,"r"))==NULL)”。
[考点] 文件操作;指针。