杭电 OJ 第2009题 为什么我的代码总是WA,请大神帮忙详细解释

#include<stdio.h>#include<math.h>main(){doublesum;intn,m,i;while(scanf("%d%d",&n,&m)!... #include<stdio.h>
#include<math.h>
main()
{
double sum;
int n,m,i;
while(scanf("%d %d",&n,&m)!=EOF)
{
sum=(double)n;
for(i=0;i<m-1;i++)
{
sum+=sqrt(n);
n=sqrt(n);
}
printf("%.2lf\n",sum);
}
}
展开
 我来答
porker2008
推荐于2016-10-25 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
#include<stdio.h>
#include<math.h>
int main() {
double sum, n; // 把 n 弄成 double
int m, i;
while (scanf("%lf %d", &n, &m) != EOF) {
sum = (double)n;
for (i = 0; i < m - 1; i++) {
sum += sqrt(1.0 * n);
n = sqrt(1.0 * n);
}
printf("%.2lf\n", sum);
}
}
追问
为什么 n要 定义成 double?   与定义成int有什么区别?
追答
sqrt(n) 返回n的开根,是个double,所以n = sqrt(n)要求n必须是double,不然sqrt(n)的结果放回n会出错
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式