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);
}
结果程序崩溃了!
求改错! 展开
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);
}
结果程序崩溃了!
求改错! 展开
11个回答
展开全部
#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;
}
展开全部
#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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的需要,改进了一下代码,如下
#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);
}
不懂再交流
望采纳
#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,不然会导致数据丢失等问题
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的输入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); }
如果是计算
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吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发生除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);
}
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);
}
追问
先试试,如果可以就采纳你的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询