C语言程序 1-1/2+1/3-1/4+...+1/99-1/100

#include<stdio.h>#include<math.h>voidmain(){doublesum;intn,m;printf("请输入n:");scanf("%... #include <stdio.h>
#include <math.h>
void main()
{
double sum;
int n,m;
printf("请输入n:");
scanf("%d",&n);
for(n=1,m=1,sum=0;n<100;n++)
{
sum+=m*(1.0/n);
m=-m;
}
printf("sum=%lf\n",sum);

}
怎么就不行-谢谢
展开
 我来答
貌似風輕
推荐于2018-03-13 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:697万
展开全部

你的输入n是什么意思?

如果是计算

1-1/2+1/3-1/4+...+1/99-1/100

那么不需要输入n,其他不变就是了


如果是计算

1-1/2+1/3-1/4+...+1/n

才需要输入n

代码如下(不需要math.h头文件):

#include <stdio.h>
void main()
{
    double sum;
    int i,n,m;        //加个变量i
    printf("请输入n:");
    scanf("%d",&n);
    for(i=1,m=1,sum=0;i<=n;i++)  //n改为i,100改为n
    {
        sum+=m*(1.0/i);
        m=-m;
    }
    printf("sum=%lf\n",sum);    
}
敏千迩qi
2013-10-04 · TA获得超过565个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:508万
展开全部
#include <stdio.h>
#include <math.h>
int main() //main 最好返回int,有时候是硬性要求……
{
double sum;
int n,m;
printf("请输入n:");
scanf("%d",&n);
for(n=1,m=1,sum=0;n<=100;n++)        //别忘了1/100
{
    sum+=m*(1.0/n);
    m=-m;
}
printf("sum=%lf\n",sum);
return 0; //main 最好返回int,有时候是硬性要求……
}

编译的时候别忘了加上-lm

然后应该没问题啊,

我都执行了……

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Mark>a
n:1
sum=0.698172

C:\Documents and Settings\Mark>
更多追问追答
追问
不管输入多少 SUM都是这个啊 - -输入1 还是这个·这个就不科学了·
追答

把for语句的n=1删了

for(m=1,sum=0;n<=100;n++)

另外:

在for前面加上:

if(n%2==1) m=1;
else m=-1;

 -------------------


C:\Documents and Settings\Mark>a
n:1
sum=0.688172

C:\Documents and Settings\Mark>a
n:2
sum=0.311828

C:\Documents and Settings\Mark>a
n:3
sum=0.188172

C:\Documents and Settings\Mark>a
n:4
sum=0.145161

C:\Documents and Settings\Mark>a
n:5
sum=0.104839

C:\Documents and Settings\Mark>a
n:6
sum=0.095161

C:\Documents and Settings\Mark>a
n:7
sum=0.071506

C:\Documents and Settings\Mark>a
n:100
sum=0.010000

C:\Documents and Settings\Mark>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-04
展开全部
#include <stdio.h>
#include <math.h>
void main()
{
double sum;
int n,m;
printf("请输入n:");
scanf("%d",&n);
for(n=1,m=1,sum=0;n<100;n++)//这里应该是 n<=100 要把1/100也算进去
{
sum+=m*(1.0/n);
m=-m;
}
printf("sum=%lf\n",sum);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5212b2c
2013-10-04 · TA获得超过263个赞
知道答主
回答量:79
采纳率:0%
帮助的人:30.7万
展开全部
这个每次都是负的啊 你得增加一个标志位 偶数是负的 奇数是正的 if(m%2==0)flag=-1:else flag=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky自由_落体
2017-08-13
知道答主
回答量:2
采纳率:0%
帮助的人:1897
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式