求1-1/2+1/3-1/4+...+1/99-1/100的值.用循环怎么做?
----------------解决方案--------------------------------------------------------
我自己做了一个不会循环的,大家看看是怎么回事?
#include <stdio.h>
int main(void)
{
int j;
double i;
for(i=1.0,j=2;j<=100;j++)
if(j%2==0) i-=1/j;
else i+=1/j;
printf("%lf\n",i);
return 0;
}
----------------解决方案--------------------------------------------------------
{ 1 n=1
sum(n){sum(n-1)+a(n) n>=2
a(n)=(1/n)*(-1)的n次方
用递归较好:
#include<iostream.h>
#include<stdio.h>
float sum(int n)
{ if(n<=0) cout<<"ERROR!! n<=0 \a"<<endl;
else if(n==1) return 1;
else return (sum(n-1)+a(n));
}
float a(int n)
{
if(n/2==0) return -(1/n);
else return 1/n;
}
int main()
{ int n;
cout<<"PLease input the number n"<<endl;
cout<<"n=";
cin>>n;
cout<<"sum["<<n<<"]="<<sum(n)<<endl;
}
----------------解决方案--------------------------------------------------------
能再说详细点吗?
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
int j;
double i=0;
for(j=1;j<=100;j+=2)
i+=(1/j)-(1/j+1);
printf("%lf\n",i);
}
没有编译器,你自己试试看吧。估计没问题的。
----------------解决方案--------------------------------------------------------
还是不行!
----------------解决方案--------------------------------------------------------
main()
{
int sign=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("%f",sum);
}
上机试试
----------------解决方案--------------------------------------------------------
mian()
{
int sign=1;
float deno=2.0,sum=1,term;
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("%f",sum)
}
----------------解决方案--------------------------------------------------------
不行!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
int j;
double i=0;
for(j=1;j<=100;j+=2)
i+=(1.0/j)-(1.0/(j+1));
printf("%f\n",i);
}
这个对了吧。
----------------解决方案--------------------------------------------------------