用c语言编程:计算s=1-1/2+1/3-1/4+1/5……+1/m,其中m由输入决定

如题所述

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int main(void){
    int m,i;
    double s;
    while(1){
        printf("Enter m(m>0)...\nm=");
        scanf("%d",&m);
        if(m>0) break;
        printf("Error, redo: ");
    }
    for(s=0,i=1;i<=m;i++)
        s += i&1 ? 1.0/i : -1.0/i;
    printf("The result is %f\n",s);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-09-05
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double i;
double times;
double sum1,sum2;
printf("指定的次数:");
scanf("%lf",×);
sum1=0;
sum2=0;
while (times>0)
{
for (i=1.0;i<=times;i++)
{
sum1=sum1+1.0/i ;
sum2=sum2+pow(-1.0,i+1.0)*1.0/i;
}
printf("sum1=%lf\n",sum1);
printf("sum2=%lf",sum2);
scanf("%lf",×);
sum1=0;
sum2=0;
}
printf("Done\n");
return 0;
}

这里的sum1可以不看,是1+1/2+1/3+...+1/n的。
sum2则是题主的1-1/2+1/3...+1/n
第2个回答  2015-04-24
可以看成两个序列,正数和负数的。手动算下两个累加和公式相减。。把m替换为变量,代表你的输入值追问

可以给出具体代码吗?

第3个回答  2015-04-24
#include <stdio.h>

int main()
{
int i, m;
float s;

printf("Enter m: ");
scanf("%d", &m);
if (m <= 1) {
printf("m 必须大于1\n");
return 0;
}

s = 1.0;
for (i = 2; i <= m; i++) {
if (i & 1) // i 是奇数
s += 1.0 / (float)i;
else
s -= 1.0 / (float)i;
}
printf("s=%f\n", s);
return 0;
}
第4个回答  2019-08-04
因为我们老师经常说,这个是无限小数,所以就等于1你们说对吗1+1/2+1/3+1/4+1/5, 到1/50是不是等于1
相似回答