关于#c语言#的问题

img


题目是输入n计算1-(1/3)+(1/5)-省略号+(1/n),这个码运行有问题,但是我看不出问题在哪。

应该是计算式子每一项的那里需要修改下。

修改如下:


#include <stdio.h>
#include <math.h>

int main(void){
    
    int i,n;
    int a=1;  // 式子每一项的分母,初始分母为1 
    float j;
    float sum=0.0;
    int flag=1; // 式子每一项的符号位 
    scanf("%d",&n);
    
    for(i=1;i<=n;i++){  // 计算式子的n项 的和
        
            
        j=flag*1.0/a;  // 当前式子项的值为 符号位乘以 1.0除以分母 
        sum=sum+j;  // 将当前项累加到和中 
        
        //printf("a=%d,flag=%d,j=%f,sum=%f\n",a,flag,j,sum);
        
        a= a+2;  // 下一项的分母 比当前项分母 大2 
        flag=-flag;  // 符号为变换 
        
        
        
    }
    
    printf("%f\n",sum);
    
    return 0;
    
} 

img

按题意,输入n,计算1-(1/3)+(1/5)-省略号+(1/n),应该是这样写,供参考:

#include <stdio.h>
int main()
{
    int n, i;
    double s = 0;
    do {
        scanf("%d", &n);
        if(n % 2 == 0)
            printf("n必须是奇数,请重新输入:");
        else
            break;
    } while(1);
    for(i = 1; i <= n; i += 2)
        s += (i % 4 == 1 ? 1.0 / i : -1.0 / i);
    printf("%f\n", s);
    return 0;
}

题目的n是指有n项吧,你这个等于只计算了m/2项