#include <stdio.h>
#include <stdlib.h>
int fact(int n);
int multi(int n);
int main(void)
{
int i;
double sum, item;
sum = 1;
for(i = 1;item >= 1e-6; i++){
item = fact(i) / multi(2*i+1);
sum = sum + item;
}
printf("PI=%0.5lf\n", sum * 2);
system("pause");
return 0;
}
int fact(int n)
{
int i;
double res;
res = 1;
for(i = 1; i <= n; i++)
res = res * i;
return res; /* 调试时设置断点 */
}
int multi(int n)
{
int i;
double res;
res = 1;
for(i = 3; i <= n; i = i+2)
res = res * i;
return res;
}
修改后的代码如下:
#include <stdio.h>
#include <stdlib.h>
double fact(int n);
double multi(int n);
int main(void)
{
int i;
double sum, item=10; // 初始时为item赋一个较大的值,不然第一次循环就是非法使用item
sum = 1;
for(i = 1;item >= 1e-6; i++)
{
item = fact(i) / multi(2*i+1);
sum = sum + item;
}
printf("PI=%0.5lf\n", sum * 2);
system("pause");
return 0;
}
double fact(int n) // 返回值为double
{
int i;
double res;
res = 1;
for(i = 1; i <= n; i++)res = res * i;
return res;
}
double multi(int n) // 返回值为double
{
int i;
double res;
res = 1;
for(i = 3; i <= n; i = i+2)res = res * i;
return res;
}
#include <stdio.h>
#include <stdlib.h>
double fact(int n);
double multi(int n);
int main(void)
{
int i;
double sum, item=10; // 初始时为item赋一个较大的值,不然第一次循环就是非法使用item
sum = 1;
for(i = 1;item >= 1e-6; i++)
{
item = fact(i) / multi(2*i+1);
sum = sum + item;
}
printf("PI=%0.5lf\n", sum * 2);
system("pause");
return 0;
}
double fact(int n) // 返回值为double
{
int i;
double res;
res = 1;
for(i = 1; i <= n; i++)res = res * i;
return res;
}
double multi(int n) // 返回值为double
{
int i;
double res;
res = 1;
for(i = 3; i <= n; i = i+2)res = res * i;
return res;
}
温馨提示:答案为网友推荐,仅供参考