请问这个代码为什么无法正常输出呢?
用公式计算pai的值:
#include
int main(void)
{
int a, b, c, s;
double sum,d;
scanf("%d", &a);
for(s=1,b=1,c=1,sum=0;a>0;a--)//a也为循环次数,b为计数器,s为符号
{
d = s * 4 / c;
sum += d;
s *= -1;
c += 2;
printf("项数 pai的值\n");
printf("%d %f\n", b, sum);
b++;
}
}
应该是因为d = s * 4 / c; 这行代码,s * 4 / c的计算结果为int,因为参与运算的都是int类型,所以其结果也是int类型,与预期需要的的double类不符合,所以会出错。
可以改为d = s * 4.0 / c; 把里面的4改为4.0,因为有了double类型的值,所以把整个表达是的改为double类型的运算,如此可以与预期的double相符合。修改如下:
#include <stdio.h>
int main(void)
{
int a, b, c, s;
double sum,d;
scanf("%d", &a);
for(s=1,b=1,c=1,sum=0;a>0;a--)//a也为循环次数,b为计数器,s为符号
{
d = s * 4.0 / c;
sum += d;
s *= -1;
c += 2;
printf("项数 pai的值\n");
printf("%d %f\n", b, sum);
b++;
}
}