这道题的几个问题,有没有高手跟我说下?

来源:百度知道 编辑:UC知道 时间:2024/05/09 09:57:11
请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
例如若n为1000时,函数值应为:s=153.909064。
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。
#include <conio.h>
#include <math.h>
#include <stdio.h>

double countValue(int n)
{ int i;
double xy=0.0;
for(i=1;i<n;i++)
if(i%21==0) xy+=i;
xy=sqrt((double)xy);
return xy;
}

main()
{
...........

我的疑问是:
1. xy=sqrt((double)xy); 这句中说是在求平方根时,为保证精度,先将XY强制转化成双精度实型数据,强制类型转换的括号不可以省略. 那是不是double一定要用括号括起来的意思? 还有就是之前不是已经定义了双精度型了,为什么这边还要强制转化?

2.什么情况下要用return?

(double)xy的意思是相当于double z = (double)xy,xy转成double存于z中,xy的类型不变,本题xy已是double,所以(double)可以省略,return用于反回涵数的值,如: int countValue(int n) 要求反回int类的值char countValue(int n) 要求反回char类的值void countValue(int n) 无反回值,这时return可省,不省时也可以,return后不能带值