c - 分数:C 编程中的和与差

标签 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(分母)设置为 double,因为当然结果必须是十进制数。

有人可以帮我吗?

我得到的输出是:0

最佳答案

也许是这样的。最重要的一点,是使用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

关于c - 分数:C 编程中的和与差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749934/

相关文章:

c - 结构内部具有未初始化大小的数组

c++ - 生成形状的简单方法

c - 如何在 struct 中为 char* 字段分配内存

c - 如何将 BASIC 转换为 C?有没有我可以比较 BASIC 和 C 的等效网站?

python - Sympy 对实数分数返回零

python - 如何在 Python 中将带分数的字符串转换为 float

C:将实数转换为 64 位浮点二进制

将 C 字符串转换为 Pascal 字符串

c++ - 需要帮助理解结构,以及一些程序错误

c++ - 分数运算符重载