#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\n",sum);
return 0;
}
#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\n",sum);
return 0;
}
写得太复杂了,这样既可。
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\n",sum);
}
lz你好,以下是我编译的程序,请你看一下:
#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;
}
以上程序在我的作业中显示编译正确,希望对你有帮助!
希望你能够采纳!
#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;
}