c语言 关于文件的两道选择题

来源:百度知道 编辑:UC知道 时间:2024/05/23 14:00:28
[练习6]以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
main()
{ int n,k;
float score ,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{ for(k=1;k<=4;k++)
{ scanf(“%f”,&score); sum+=score;}
ave=sum/4.0;
printf(“NO%d:%f\n”,n,ave);
}
}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是 。
A) sum=0.0; B) sum+=score;
C) ave=sun/4.0; D) printf(“NO%d:%f\n”,n,ave);

[练习9]下面的程序执行后,文件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”,“new world”); fun(“test”,“hello,”);}
A) hello, B) new worldhello, C) new world D) hello, rld

求答案和详解

1.A
sum=0.0不对,每开始统计一个新学生都应该把原来的sum清零,所以应该在第一个for内

#include "stdio.h"
main()
{ int n,k;
float score ,sum,ave;
for(n=1;n<=10;n++)
{
sum=0.0;
for(k=1;k<=4;k++)
{ scanf("%f",&score); sum+=score;}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}
}

2.A
文件使用方式"w"的说明:为输出打开一个文本文件,如果已存在同名文件,将该文件删除然后重新建立一个新文件
所以后面一个fun其实删除了一个同名文件test,前一个test文件的内容为new world,但被删掉了,新的test文件内容为hello,

[练习6]答案为A。sum=0.0应该放在循环for(n=1;n<=10;n++) 里面,因为如果只对sum赋一次初值,以后输的求平均值的都会在原来的sum基础上增加,就是这一句sum+=score;

[练习9]答案为D。第一次为new world,第二次则用hello把前面的覆盖