要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和,求改错
答案:5 悬赏:0 手机版
解决时间 2021-04-29 07:20
- 提问者网友:凉末
- 2021-04-28 18:06
要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和,求改错
最佳答案
- 五星知识达人网友:有你哪都是故乡
- 2021-04-28 18:36
#include
//这两个函数完全没必要用递归,即使用,在这里面变号也会导致错误
int crisscross(int n)
{
if(n==1)
return 1;
else
return crisscross(n-1)+1;
}
int interlock(int n)
{
if(n==1)
return 1;
else
return interlock(n-1)+2;
}
int main()
{
int N,i,n;
float sum = 0.0;
scanf("%d",&N);
for(i=1;i<=N;i++)
if(i % 2 == 1)
{
//这里正常应该写成这样既可
//sum+=((float)i)/(2*i-1);
sum+=((float)crisscross(i))/interlock(i);
}else
{
sum-=((float)crisscross(i))/interlock(i);
}
printf("%.3f
",sum);
return 0;
}
//这两个函数完全没必要用递归,即使用,在这里面变号也会导致错误
int crisscross(int n)
{
if(n==1)
return 1;
else
return crisscross(n-1)+1;
}
int interlock(int n)
{
if(n==1)
return 1;
else
return interlock(n-1)+2;
}
int main()
{
int N,i,n;
float sum = 0.0;
scanf("%d",&N);
for(i=1;i<=N;i++)
if(i % 2 == 1)
{
//这里正常应该写成这样既可
//sum+=((float)i)/(2*i-1);
sum+=((float)crisscross(i))/interlock(i);
}else
{
sum-=((float)crisscross(i))/interlock(i);
}
printf("%.3f
",sum);
return 0;
}
全部回答
- 1楼网友:西岸风
- 2021-04-28 23:13
设X^(1/6)=Y,方程可化简为:Y^3-3Y^2=3Y-9,移项得Y^3-3Y^2-3Y+9=0,Y^2(Y-3)-3(Y-3)=0,(Y^2-3)(Y-3)=0,(Y-根号3)(Y+根号3)(Y-3)=0,则Y有3个解:根号3,-根号3,3,即X^(1/6)=根号3或-根号3或3,解得X=27(当X^(1/6)=根号3或-根号3时解得的X相同)或729。
- 2楼网友:青灯有味
- 2021-04-28 21:43
#include
int crisscross(int n)
{
if(n%2==0)
return -n;
else
return n;
}
int interlock(int n)
{
return n*2-1;
}
int main()
{
int N,i,n;
float sum=1;
scanf("%d",&N);
for(i=2;i<=N;i++)
sum+=(float)crisscross(i)/interlock(i);
printf("%.3f ",sum);
return 0;
}
int crisscross(int n)
{
if(n%2==0)
return -n;
else
return n;
}
int interlock(int n)
{
return n*2-1;
}
int main()
{
int N,i,n;
float sum=1;
scanf("%d",&N);
for(i=2;i<=N;i++)
sum+=(float)crisscross(i)/interlock(i);
printf("%.3f ",sum);
return 0;
}
- 3楼网友:野慌
- 2021-04-28 20:46
写得太复杂了,这样既可。
int main()
{
int N,i,sign=-1;
float sum = 0;
scanf("%d",&N);
for(i = 1;i<=N;i++)
{
sum += (sign*=-1)*((float)i)/((float)(2*i-1));
}
printf("%.3f ",sum);
}
int main()
{
int N,i,sign=-1;
float sum = 0;
scanf("%d",&N);
for(i = 1;i<=N;i++)
{
sum += (sign*=-1)*((float)i)/((float)(2*i-1));
}
printf("%.3f ",sum);
}
- 4楼网友:逃夭
- 2021-04-28 19:57
#include
int main()
{
int i,n;
double m,f;
m=0.0;
f=1.0;
n>0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m+=(f*i)/(2*i-1);
f*=-1;
}
printf("%.3lf\n",m);
return 0;
}
int main()
{
int i,n;
double m,f;
m=0.0;
f=1.0;
n>0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
m+=(f*i)/(2*i-1);
f*=-1;
}
printf("%.3lf\n",m);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯