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();
} 展开
#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了
展开全部
#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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的for循环中的两个大括号没有用。具体你放到哪你看看;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询