分数:C编程的总和与差异

时间:2016-04-20 16:32:23

标签: c fractions

我在用C编写程序时遇到问题,计算S,S = {1/50 - 3/48 + 5/46 ...},包含9个元素。我不知道如何使用DIFFERENCE运算符后跟SUM运算符,我必须使用 for 结构。

这是我写的程序:

#include <stdio.h>
#include <stdlib.h>

int main (void) {
    int n, d, S, i;
    i = 0;
    n = 1;
    d = 50;
    S = n / ((double)d);

    for (i = 0; i < 4; i++) {
        n += 2;
        n -= 2;
        S = S + (n / ((double)d));
        S = S - (n / ((double)d));
    }
    printf("%d", S);
    return 0;
}

我知道变量声明可能是错误的,这正是我感到困惑的地方。我将S称为整数,但将d(分母)加倍,因为结果必须是十进制数,当然。

任何人都可以帮助我吗?

我得到的输出是:0

3 个答案:

答案 0 :(得分:1)

检查您正在寻找的是以下代码:

#include <stdio.h>
#include <stdlib.h>

void main () {
    int n = 1, d = 50, i = 0, signal = 1;
    double S = n / (double) d;
    for (i = 0; i < 8; i++) {
        n += 2;
        d -= 2;
        signal = -signal;
        S += signal * n/(double)d;
    }
    printf("%f", S);
}

我认为你遗失S是一个double号码。 int/double = double,但您将此数学分配到int变量。

答案 1 :(得分:1)

也许是这样的。最重要的一点是使用double类型,因为int类型只能包含整数。

#include <stdio.h>

int main (void) {
    int i;
    double sign = 1.0;              // sign
    double num = 1.0;               // numerator
    double div = 50.0;              // divisor
    double sum = 0.0;               // series sum

    for (i = 0; i < 9; i++) {
        sum += sign * num / div;    // accumulate the term
        num += 2.0;                 // numerator +2
        div -= 2.0;                 // divisor -2
        sign *= -1.0;               // alternate the sign
        printf("%f\n", sum);        // show double result
    }
    return 0;
}

节目输出:

0.020000
-0.042500
0.066196
-0.092895
0.121390
-0.153610
0.188496
-0.228171
0.271829

答案 2 :(得分:1)

关于代码的不同之处。

首先,您不能使用整数作为总和,因为您需要浮点结果。

然后如评论中所述,您正在使用导致不更改变量的连续操作

n+=2; n-=2;

您可以简单地执行以下操作:

double S = 0.0; int N=9;
for(i=0; i < N; ++i) {
   S += ( (i % 2 == 0)?(1.0):(-1.0) ) * (2.0*i+1)/(50-(2.0*i+1));
}

指令(i%2 == 0)?(1.0):( - 1.0)如果'i'是偶数则选择1,如果'i'是奇数则选择-1。

最后,如果S不再是int,则必须使用浮点格式更改printf,例如'%f'。