C语言分数相加求和
发布网友
发布时间:2023-04-14 06:18
我来回答
共2个回答
热心网友
时间:2023-04-30 18:23
#include <stdio.h>
#include <math.h>
int fenzi(int i) // 分子就是 1 3 7 13 21 31 他们之间的差是 2 4 6 8 10
{
if (i <= 0)
return 1;
return i * 2 + fenzi(i-1);
}
int fenmu(int i) // 分母就是 2 的 i + 1 次方
{
return (int)pow(2, i+1);
}
int main()
{
double sum = 0;
int flag, x, y;
for (int i = 0; i < 20; i++)
{
x = fenzi(i);
y = fenmu(i);
flag = pow(-1, i); // + - 随i是奇偶变换
printf("%c%d/%d", flag > 0 ? '+' : '-', x, y);
sum += flag * x * 1.0 / y;
}
printf(" = %lf\n", sum);
return 0;
}
热心网友
时间:2023-04-30 18:23
找到规律,代码并不难。供参考
#include <stdio.h>
int main()
{
double a, b, r;
int i;
int sign = 1;
a = 1;
b = 2;
r = 0;
for(i = 1; i <= 20; i ++)
{
r += a/b*sign;
a += i*2;
b *= 2;
sign*=-1;
}
printf("result = %lf\n", r);
}
追问int main(int argc, const char * argv[]) {
double sum=0;
int a=1,b=2;
for(int i=1;i<=20;i++)
{
a=a*a-a+1;
b=2^b;
sum+=a/b;
}
printf("%.6lf",sum);
return 0;
}