我在用C编写一个计算S的程序时遇到了问题,即S = {1/50-3/48 + 5/46 ...}有9个元素。我不知道如何使用后跟SUM运算符的DIFFERENCE运算符,并且我必须使用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
最佳答案
也许是这样。最重要的一点是使用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/