c语言计算 1-1/2+1/3-1/4+1/5-1/6....…±1/n 的值

我写的是

#include<stdio.h>

main()
{
int n,i;
float sum=0,term=1;
for(n=1;n<=30;n++)
{
if(n%2==1)
{
term=term/n;
}
else
{
term=-term/n;
}

sum=sum+term;
}

printf("%f",sum);

}

当n=30是算出来的结果是0.381773

可是正确答案是0.676758 到底哪里出错了,请大神来帮忙,,谢谢!!

第1个回答  推荐于2018-02-28
因为term的值改变了 不再是1 也可以在循环里赋值1
#include<stdio.h>

main()
{
int n;
float sum=0,term;
for(n=1;n<=30;n++)
{
if(n%2==1)
{
term=1.0/n;
}
else
{
term=-(1.0)/n;
}

sum=sum+term;
}

printf("%f",sum);

}追问

果然是在循环体里重新赋值了一下就正确了!!谢谢你的帮忙!!


这个结果耗了我很长时间,唉,,,可是为什么会改变原来的值呢?

追答

抱歉刚刚上线看到,因为每次都进行运算,term都被重新赋值,而不是要做分母的1

本回答被提问者和网友采纳
第2个回答  2014-02-28
你的问题是。。。 term问题 参考
#include<stdio.h>

main()
{
int n,i;
float sum=0,term=1;
for(n=1;n<=30;n++)
{
if(n%2==1)
{
term=term/n;
}
else
{
term=-term/n;
}

sum=sum+term;
term=1; // 你运行第二次的时候,term!=1 而是1/2; 初始化term=1 就好了
}

printf("%f",sum);

}
第3个回答  2014-02-27

/*

0.676758

Press any key to continue

*/

#include<stdio.h>

int main() {
double n,sum = 1,sign = 1;
for(n = 1;n < 30;n++) {
sign = -sign;
sum += sign/(n + 1);
}
printf("%lf\n",sum);
return 0;
}

c语言计算 1-1\/2+1\/3-1\/4+1\/5-1\/6...…±1\/n 的值
因为term的值改变了 不再是1 也可以在循环里赋值1 include<stdio.h> main(){ int n;float sum=0,term;for(n=1;n<=30;n++){ if(n%2==1){ term=1.0\/n;} else { term=-(1.0)\/n;} sum=sum+term;} printf("%f",sum);} ...

C语言编写函数求:1-1\/2+1\/3-1\/4+1\/5-1\/6+...1\/n的值怎么做?结果是什么...
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:。int n = 100;double s;for (int i = 1; i <= n; i++)if (i % 2 == 0)s -= 1.0 \/ i;else s += 1.0 \/ i;printf("%lf", s);3、编译器运行test.cpp文件,...

C语言编写函数求:1-1\/2+1\/3-1\/4+1\/5-1\/6+...1\/n的值怎么做?结果是什么...
include <stdlib.h> int main(void){ float t=1,m,k;float i;printf("请输入一个正整数!\\n");scanf("%f",&m);for(i = m;i>1;i--){ t-=1\/(i*i);} printf("%f",t);system("pause");}

C语言编写函数求:1-1\/2+1\/3-1\/4+1\/5-1\/6+...1\/n的值怎么做?结果是什么...
include<stdio.h>int main(){int i=1,n;float s=0;scanf("%d",&n);while(i<=n){if(i%2)s+=1.0\/i; else s-=1.0\/i; i++; } printf("%f\\n",s); return 0;}

用c语言编写函数求表达式1-1\/2+1\/3-1\/4+1\/5-1\/6+1\/7-…+1\/n的值?
include <stdio.h> int main(){ double x=0;int i,n,f=1;printf("请输入n的值\\n");scanf("%d",&n);for(i=1;i<=n;i++){ x=x+1.0\/i*f;f=-f;} printf("数列的值为:%f",x);}

用C语言编程:求1-1\/2+1\/3-1\/4+1\/5-1\/6+…+1\/99-1\/100+…的值…
number n:\\n");\/\/提示用户输入想要的分母值 scanf("%d",&n);\/\/需要用户输入的n的值 for(i=1,sum=0;i<=n;i++)\/\/循环从1到n进行求和 { sum+=k\/i;\/\/累加求和 k*=-1;\/\/实现符号的变换 } printf("%lf\\n",sum);\/\/输出结果 return 0;} 一步一步的写的,希望对你有帮助!

c语言编程求1-1\/2+1\/3-1\/4+1\/5-1\/6+…….+1\/99-1\/100的值。 可不可以...
{ if(i%2==0) \/\/分母是偶数用减 sum=sum-1.0\/i; \/*这里用 1.0\/i 不能用1\/i,1\/i得到的整型,比如 1\/5会等于0,而这里想要的是等于0.2,所以不对*\/ else \/\/分母是奇数用加 sum=sum+1.0\/i; } printf("结果等于%lf\\n",sum)} ...

用C语言编程计算 1+ 1\/2 - 1\/3 + 1\/4 - 1\/5 + 1\/6 -……+ 1\/n该怎样...
int main(){ int n;scanf("%d",&n);float result = 1;for(int i=2; i<=n; i++) \/\/把1排除 ,从2开始 { int flag;if(0 == i%2) \/\/判断是否是偶数 flag = 1;else flag = -1;result += flag * 1.0 \/ i;\/\/小数计算要用1.0 } printf("%f",result);} 希望...

c语言1-1\/2+1\/3-1\/4+1\/5-1\/6……请求出该多项式的前n项的和
=1 || n<1){\/\/限制输入的项数n是正整数printf("Input error, exit...\\n");return 0;}for(s=0,i=1;i<=n;s += i&1 ?

用c语言编写函数求表达式1-1\/2+1\/3-1\/4+1\/5-1\/6+1\/7-…+1\/n的值
3l犯的错误和1l差不多,1\/(i+1)是等于0的 include "stdio.h"double fun(int n){ double sum=0;float flag=1;\/\/正负符号,且直接用float类型,不会出现1\/i等于0的情况 int i;for (i=1;i<=n;i++){ sum+=flag\/i;flag*=-1;\/\/正负交替 } return sum;} int main(){ int n;p...

相似回答