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

我想知道下面这个程序哪里错了,为什么得不到我想要的结果
#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();
}

#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了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-03

#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;

}


第2个回答  2014-12-01
你的for循环中的两个大括号没有用。具体你放到哪你看看;
相似回答