1-1/2+1/3+1/4-1/5+1/6+1/7+1/8-1/9……1/n 用C语言写出代码

1-1/2+1/3+1/4-1/5+1/6+1/7+1/8-1/9……1/n 用C语言写出代码 求大神指教

#include <stdio.h>

int main()
{
int n;
int x = 1;
double i;
double sum = 0.0;
printf("请输入 n: ");
scanf("%d", &n); //输入n
for(i = 1; i <= n; i++)
{
sum = sum + (x)*1/i;
x = x*(-1); //用来控制表达式的正负
}
printf("%f\n", sum);
return 0;
}追问

这个不是吧 这个不是1-1/2+1/3—1/4……

这是书上的答案 我觉得不对

追答

sorry 我看错了。你书上的确实不对。我改了下。

#include

int main()
{
int n;
int step = 2;
int develop = 3;
double i;
double sum = 0.0;
printf("请输入 n: ");
scanf("%d", &n); //输入n
for(i = 1; i <= n; i++)
{
if((int)i%step == 0) //能被step整除时第i项就为负数
{
sum = sum + (-(1/i));
step = step + develop;
develop++;
continue;
}
sum = sum + 1/i;
}
printf("%f\n", sum);
return 0;
}

追问

不好意思哈 太感谢你了~~~可是已经采纳了 只能感谢了

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-21
找出加减号的规律即可追问

~~这个知道 想知道怎么用循环结构表示~

追答

OK,只要你找到了规律那就容易了, 先把他们全部看做加法运算,带减号的就相当于乘以-1, 假如规律是第1.3.5.7.....个数前面是减号,只需要给他们乘以-1即可

追问

不是的 是2 5 9 依次加2加3加4......我用C语言写不出来

追答

比如for(int i=0;i<n;i++)
{ if(i%2!=0)

i=i*(-1);

sum+=i;

追问

恩纳 这道题呢

追答

OK,明白

你可以发现他们之间的差值是2.3.4.5.....利用这个就可以方便的找到哪一项应该乘以-1.

追问

可是 我觉得我用for while 我写不出来 老师也说不会 就不用想了

追答

可以写出来,你要相信自己,我给你提示,也就是你现在的任务只要确保第2.3.5.9....项可以乘以-1即可

追问

…~~我都不信了 因为我都想两天了 C语言都开始学数组了~~

追答

额,好吧,这样吧,你先学习新知识,这个先不要想了,有时间了你再问我我给你再提示,这个还是你自己动手写出来比较好

本回答被提问者采纳
第2个回答  2014-10-21
相邻减号间距递增,速度为1追问

~~这个知道 想知道怎么用循环结构表示~

用c语言编写函数求表达式1-1\/2+1\/3-1\/4+1\/5-1\/6+1\/7-…+1\/n的值?
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+…的值…
{ int i,n;\/\/定义循环控制变量和分母值 double sum,k=1;\/\/定义求和变量和转变符号的变量的初值 printf("please input number n:\\n");\/\/提示用户输入想要的分母值 scanf("%d",&n);\/\/需要用户输入的n的值 for(i=1,sum=0;i<=n;i++)\/\/循环从1到n进行求和 { sum+=k\/i;\/\/累加求和...

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\/7-...+1\/n的值
int fun(int n){ double sum = 0.0;int k = 1;for(int i = 1; i <= n; i++){ sum += (1.0\/double(i))*k;k = k*(-1);} return sum;}

编写程序,输入n的值,求 :1-1\/2+1\/3-1\/4+1\/5-1\/6+1\/7-...+1\/n
include <stdio.h> int main (){ int i,n,m=-1,k=0;double j,sum=0.0;scanf("%d",&n);for(i=1;i<=n;i++){ m=-m;j=m\/(double)(k+1);\/\/这里必须加入强制类型转换,否则会发生截断 sum=sum+j;k++;} printf("%.4lf\\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,能告诉我怎么做吗?
程序我就不编了,告诉你思路吧·用for循环,设一个变量为i=1和k=-1,每循环一次i+1,k*-1,i+k。就循环N次就可以了。

c语言1-1\/2+1\/3-1\/4+1\/5-1\/6……请求出该多项式的前n项的和
include "stdio.h"int main(int argc,char *argv[]){double s;int i,n;printf("Input n(int n>0)...\\nn=");if(scanf("%d",&n)!=1 || n<1){\/\/限制输入的项数n是正整数printf("Input error, exit...\\n");return 0;}for(s=0,i=1;i<=n;s += i&1 ? 1.0\/i++ : ...

...1 - 1\/2 + 1\/3 - 1\/4 + 1\/5 - 1\/6 + ... 现在请你求出该多项式的前n...
if(n%2==1)o+=t\/n;printf("+1\/%d",n);printf("==%d\/%d==%f",o,t,(double)o\/t)简介 在数学中,多项式(polynomial)是指由变量、系数以及它们之间的加、减、乘、幂运算(非负整数次方)得到的表达式。对于比较广义的定义,1个或0个单项式的和也算多项式。按这个定义,多项式...

C语言编程计算:1 - 1\/2 + 1\/3 -1\/4 + ... + 1\/99 - 1\/100 +...,直到...
你的第一个问题的程序就是:include <stdio.h> int main(){ int i = 1, sign = 1;double sum = 0, e;do { e = 1.0 \/ i;sum += e * sign;sign = -sign;i++;} while (e > 1e-4);printf("%f\\n", sum);return 0;} ...

相似回答