C语言计算1-1/2+1/3-1/4+...+1/99-1/100

#include<stdio.h>voidmain(){inti,a=1;floatsum,sum1,sum2=0;for(i=1;i<=100;i++){sum1=1/... #include <stdio.h>
void main()
{
int i,a=1;
float sum,sum1,sum2=0;
for(i=1;i<=100;i++)
{
sum1=1/i+sum1;
a=i-2;
sum2=1/a+sum2;
sum=sum1+sum2;
}
printf("1+2+3+...+100=%d\n",sum);
}
结果程序崩溃了!
求改错!
展开
 我来答
问明6E
高粉答主

2019-06-25 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13万
展开全部

#include<stdio.h>

#include<math.h>

int main()

{

int i;

float sum=0.0,temp=0.0;

for (i = 1; i <= 100; i++)

{

temp = pow(-1, i + 1);

sum = sum + temp * 1 / i;

}

printf("sum is %f\n", sum);

system("pause");

return 0;

}

运行效果:

扩展资料:

在循环体外,可以定义一个辅助变量flag,令flag=1。

循环体中,只需要在结束末尾令flag=-flag,

这样就可以使flag在1和-1之间不断转变,从而完成编程。

代码

#include<stdio.h>

int main()

{

int i, flag = 1;

float sum = 0.0;

for (i = 1; i <= 100; i++)

{

sum = sum + flag*(1.0 / i);

flag = -flag;

}

printf("sum is %f\n", sum);

system("pause");

return 0;

}

独孤怎会求败
推荐于2018-04-12 · TA获得超过365个赞
知道小有建树答主
回答量:219
采纳率:71%
帮助的人:119万
展开全部
#include<stdio.h>
int main(){
double i=0;
double res=1;
for(i=2;i<=100;i++){
int k=i-1;
if(k%2!=0){
res=res-1/i;

}else{
res=res+1/i;
}


}
printf("%lf",res);

return 0;

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
铁打的泥人
推荐于2017-10-13 · TA获得超过2068个赞
知道小有建树答主
回答量:741
采纳率:50%
帮助的人:375万
展开全部
根据你的需要,改进了一下代码,如下
#include <stdio.h>
void main()
{
int i;
float a=1,sum=0;
for (i=1;i<101;i++)
{
sum=sum+a/i;
a=a*(-1);
}
printf("1-1/2+1/3-1/4....-1/100=%f\n",sum);
}
不懂再交流
望采纳
更多追问追答
追问
我找到关键了,%d应该改为%f,请问为什么不能是%d?
追答
%d是整形数据,1/2等明显是浮点型的数据,所以要用%f,不然会导致数据丢失等问题
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灰色是天天EB
2014-07-20 · TA获得超过398个赞
知道答主
回答量:112
采纳率:100%
帮助的人:104万
展开全部
你的输入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); }
追问
感觉你是复制粘贴来的。哪里来的n?好像用不着scanf吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0b90a6ecc
2014-07-20 · 超过16用户采纳过TA的回答
知道答主
回答量:100
采纳率:25%
帮助的人:21万
展开全部
发生除0错误 ,,,,
i=2时 a=0 1/0 这一段导致程序崩溃

指出几个问题,第一 1/i 是得不出想要的小数的 你可以试试,1/10 = 0 1/2 = 0 因为都是int型
结果也是int 你要 1.0 / i 这样 double/int 结果是范围大的那个类型,即double
#include<stdio.h>
int main()
{
double a=1,sum;
int i;
sum=0;
for(i=1;i<=100;i++)
{
sum+=1.0/i*a;
a*=-1;
}
printf("1+2+3+...+100=%lf\n",sum);
}
追问
先试试,如果可以就采纳你的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式