C语言简单的问题

lijiuhua0721 2004-04-14 06:37:46
π=2*2/sqrt(2)*2/sqrt(2+sqrt(2))*2/sqrt(2+sqrt(2+sqrt(2))…………
用C语言怎和编程!!

第一个做出来的给50分,第二个的给20分!!要求是用TC2.0,不用调用函数

要快!!
...全文
23 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
antijpn 2004-04-14
  • 打赏
  • 举报
回复
还有,这个不能考虑溢出还有数据类型的问题,否则……
antijpn 2004-04-14
  • 打赏
  • 举报
回复
n=getval();//这个你就自己写吧?
int i;
double result,temp;
for(i=0,result=1,temp=-1;i<n;i++)
{
temp=sqrt(temp+2);
result*=2;
result/=temp;
}

这个,调用数学库里面的函数允许吧?否则的话这个题目就没法做了(要自己写一个sqrt的话……那么去学数学吧!顺便把算法好好研究一下)!
goodluckyxl 2004-04-14
  • 打赏
  • 举报
回复

直接代代看看结果偏差多少?
积木 2004-04-14
  • 打赏
  • 举报
回复
#include<math.h>
#include<stdio.h>
double f(int n)
{
if(n==1)
{
return sqrt(2);
}
return sqrt(f(n-1)+2);
}
double g(int n)
{
int i = 1;
double result = 2.0;
for(i=2;i<=n;i++)
{
result*= (2.0)/f(n);
}
return result;
}
int main()
{
printf("%lf",g(5));
return 0;
}
我觉得应该没有什么问题,嘿嘿你看看吧
思路如下:
考虑分母 f2 = sqrt(2);
f3 = sqrt(2+f2);
所以 fn = sqrt(2+fn-1);
故有 gn = (2/fn)×gn-1
按这个公式写就很简单了啊
shishi2004 2004-04-14
  • 打赏
  • 举报
回复
float a=2,b=sqrt(2);
for(int i=0;i<n;i++)
{

a = a*2/b;
b = sqrt(2 + b);
}
lijiuhua0721 2004-04-14
  • 打赏
  • 举报
回复
我倒,不要打击我了,如果你会就回复一下!!

版主在不在呀,帮帮忙呀,以前我最崇拜这里了呀!!

难过今天高手放假了呀!!
tmanje 2004-04-14
  • 打赏
  • 举报
回复
简单问题复杂化.只能是自娱自乐.
lijiuhua0721 2004-04-14
  • 打赏
  • 举报
回复
晕,楼上的,是不是学C语言的呀,用SCANF输入多少项就终止到多少呀!!

晕死
tmanje 2004-04-14
  • 打赏
  • 举报
回复
什么意思.总得有个终止吧.

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧