#include
#include
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
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
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
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);
}
不懂再交流
望采纳
你的输入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
发生除0错误 ,,,,
i=2时 a=0 1/0 这一段导致程序崩溃
指出几个问题,第一 1/i 是得不出想要的小数的 你可以试试,1/10 = 0 1/2 = 0 因为都是int型
结果也是int 你要 1.0 / i 这样 double/int 结果是范围大的那个类型,即double
#include
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);
}