杭电 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);
}
} 展开
#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);
}
} 展开
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会出错
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询