用循环结构解决,刚学C语言

根据用户输入的正整数n,求1-1/2+1/3-1/4+一直加到+(-1)^(n+1)/n的值

马上写给你

#include<stdio.h>
int main()
{

    int n,i = 0;
    double sum = 0;
    int flag = 1;
    printf("请输入n的值:\n");\
    scanf("%d",&n);
    for (i = 1; i <= n; i++)
    {
        sum = sum + flag * (1.0 / i);
        flag = -flag;
    }
    printf("结果为:%lf ", sum);
    return 0;
}

img

img

上学的时候学的找规律呀,从1/1 …… 1/n,分子全是1,分母从1到n,那循环就是for(i = 1; i <= n; i++); 循环体是做累计运算,其中1-3-5-7也就是奇数的时候用正数累加,2-4-6-8这种偶数的时候用负数累加,可以用i % 2 == 0 来进行奇数偶数区分,这样算出来的结果就ok了,代码如下:

#include <stdio.h>
int main()
{
    int n, i;
    float sum = 0;
    printf("input n value:\n");\
    scanf("%d",&n);
    for (i = 1; i <= n; i++)
    {
        if((i % 2) == 1) 
        {
            sum +=(1.0 / i);
        }
        else
        {
            sum -=(1.0 / i);
        }
    }
    printf("ret:%f", sum);
    return 0;
}

img


#include"stdio.h"
int main()
{
    int i , n , flag = 1;
    float s = 0;
    printf("put in n:");
    scanf("%d",&n);      
    for(i=1;i<=n;i++)
    {
        s += 1.0 / i * flag;
        flag *= - 1;
    }    
    printf("%f\n", s);
    return 0;
}

运行示例:

img

代码:

#include <stdio.h>
int main()
{
    int n, i;
    double sum = 0;
    int flag = 1;
    scanf("%d", &n); //读取n
    for (i = 1; i <= n; i++)
    {
        sum += flag * 1.0 / i;
        flag = -flag;
    }
    printf("%lf", sum);
    return 0;
}

兄弟,你这题目求1-1/2+1/3-1/4+一直加到+(-1)^(n+1)/n 是错的啊,怎么后面是(n+1)/n呢?应该是(-1)^1/n啊


#include <stdio.h>
int main()
{
    int n, flag = 1;
    double sum = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        sum += flag * 1.0 /( i+1);
        flag = -flag;
    }
    printf("%lf", sum);
    return 0;
}