C++运行结果为nan 求大神修改代码

所求问题是用近似矩形的方法来求圆的面积 代码如下:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{double area(double r,int n);
 double r;
 int n;
 cout<<"please input r and n:";
 cin>>r>>n;
 cout<<"S="<<area(r,n)*4<<endl;
 return 0; 
 } 
 double area(double a,int b)
 {double r,k=0;
  long i=1,n;
  do
  {k=k+r/n*sqrt(r*r-(r/n*(i-0.5))*(r/n*(i-0.5)));
  i=i+1;}
  while (i<=n);
  return k;
 }

k=k+r/n*sqrt(r*r-(r/n*(i-0.5))*(r/n*(i-0.5)));

公式没写对。

n变量没赋值。

double area(double a,int b)函数中,又定义了临时变量n,且没有赋初始值

那么在do循环中,n会默认为0,由于除数为0,就出现NAN了

根据你的代码,应该将area函数的第二个参数名改为n,然后把area函数中的临时变量n删除。

也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y