问答题
请编写函数countValue(),其功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。
主函数最后调用函数progReadWrite()从in.dat文件中读取10组数据,分别得出结果,且把结果输出到out.dat文件中。
例如:若n为1000时,函数值应为:s=153.909064。
注意:部分程序已经给出。
请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。
#include <conio.h>
#include <math.h>
#include <stdio.h>
double countValue(int n)
{
}
void progReadWrite()
{
FILE *fp, *wf;
int i, n;
float s;
fp=fopen("in.dat","r");
if(fp==NULL)
{
printf("数据文件in.dat不存在!");
return;
}
wf=fopen("out.dat","w");
for(i=0;i<10;i++)
{
fscanf(fp,"%d,",&n);
s=(float)countValue(n);
fprintf(wf,"%f/n",s);
}
fclose(fp);
fclose(wf);
}
main()
{
printf("1000以内符合条件的自然数之和的平方根=%f/n",countValue(1000));
progReadWrite();
}
【正确答案】double countValue(int n)
{
double xy=0.0; /*初始化double型变量xy以作累加之用*/
int i;
for (i=1;i<n;i++) /*循环遍历从1到n-1之间的整数*/
if (i%3==0 && i%7==0)
xy+=i; /*若当前数既能被3整除又能被7整除,则累加到变量xy中*/
xy=sqrt((double)xy); /*求累加和的平方根*/
return xy;
}
【答案解析】