C语言编程,s=1+1/2-1/3+1/4-1/5......+1/n,

我想知道下面这个程序哪里错了,为什么得不到我想要的结果#include"stdio.h"fun(){inti,n;doublej;doubles=1;for(i=1;i<... 我想知道下面这个程序哪里错了,为什么得不到我想要的结果
#include "stdio.h"
fun()
{int i,n;
double j;
double s=1;
for(i=1;i<=n;i++)
j=1.0/(double)i;
if(n%2!=0)
j=-j;
s+=j;
printf("%f",s);
}
void main()
{
int n;
double s=1;
printf("N:");
scanf("%d",&n);
if(n=1)
printf("%f",s);
else
s=fun();
}
展开
 我来答
kaixingui2012
2014-12-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6502万
展开全部
#include <stdio.h>
void fun( int n ) //要传参数!!
{
int i;
double j;
double s=1;
for(i=2;i<=n;i++) //从2开始,s初值是1了
{ //多条语句要加括号
j=1.0/i; //有1.0参与,不用加强转了
if(i%2!=0) //这里应该是i
j=-j;
s+=j;
}
printf("%lf\n",s); //double用%lf  long float
}
void main()
{
int n;
double s=1;
printf("N:");
scanf("%d",&n);
if(n==1) //==比较用等号
printf("%lf\n",s); //
else
fun(n); //传参,没有返回值!
//s=fun();
}
追问
为什么要从2开始啊,非常感谢191080350
追答
因为s已经是1了,不用再加1了
畅瑞彩057
2019-05-03
知道答主
回答量:3
采纳率:0%
帮助的人:2206
展开全部

#include<bits/stdc++.h>

using namespace std;

void fun(int n){

int i;

double j;

double s=1;

for(i=2;i<=n;i++) //从2开始,s初值是1了

j=1.0/i;

if(i%2!=0) 

j=-j;

s+=j;

}

printf("%lf\n",s); 

}

void main()

{

int n;

double s=1;

printf("N:");

scanf("%d",&n);

if(n==1) //==比较用等号

printf("%lf\n",s); //

else

fun(n); //传参,没有返回值!

return 0;

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ji472907201
2014-12-01 · 超过16用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:31.4万
展开全部
你的for循环中的两个大括号没有用。具体你放到哪你看看;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式