编译正常,为何执行不了?
// 求圆周率 PAI 的近似值// π/4≈1-1/3+1/5-1/7+…
#include<stdio.h>
#include<conio.h>
int main()
{
int i,s,n;
double pai;
i = 1;
s = 1;
pai = 1;
n = getch(); /* 键盘输入一个要求,精确到第一项 */
if(i < n)
{
for(;i < n;)
{
s = -s;
pai = pai + s / (2 * i - 1);
}
}
pai = 4 * pai;
printf("%lf\n",pai);
}
另外:getch() 好像只能输入单个字符,如何输入两位及多位数?先谢谢了!
#include<stdio.h>
int main()
{
int i, s, n;
double pai;
i = 1;
s = 1;
pai = 1;
for (scanf("%d", &n); i < n;)
{
s = -s;
pai = pai + s / (2 * i - 1);
}
pai = 4 * pai;
printf("%lf\n", pai);
return 0;
} 不太明白你所说的
/* 键盘输入一个要求,精确到第一项 */
什么叫精确到第一项?
getch输入的是字符,不是数字
你需要用scanf读取输入
另外你的if的作用是什么?for没有修改条件,是个死循环。。
总之,很多小错误
帮你修改了一下。输入的数值是计算前多少项
#include<stdio.h>
int main()
{
int i, n;
double pai, s;
s = 1;
pai = 1;
scanf("%d", &n);
for (i=2; i <= n;i++)
{
s = -s;
pai = pai + s / (2 * i - 1);
}
pai = 4 * pai;
printf("%lf\n", pai);
return 0;
} 再给你写一个输入精度要求的
#include<stdio.h>
int main()
{
int i=1;
double pai,s,k,e;
s = 1;
k = 1;
pai = 1;
scanf("%lf", &e);//输入精度要求,例如输入0.00001,就是计算很的最后一项大于0.00001
while(k>e)
{
s = -s;
k=1.0/(2*++i-1);
pai = pai + s * k;
}
pai = 4 * pai;
printf("%lf\n", pai);
return 0;
} 永恒的蓝色梦想 发表于 2020-7-13 14:47
不行,我输入一个5,调试时,按F10,循环了十几圈,都停不下来,进入了死循环了 sunrise085 发表于 2020-7-13 15:09
不太明白你所说的
什么叫精确到第一项?
错了,是计算到第几项,实际上也就是要求精度。若 n =10,就计算前十项,若 n=20,就计算前20项 风过无痕1989 发表于 2020-7-13 15:33
错了,是计算到第几项,实际上也就是要求精度。若 n =10,就计算前十项,若 n=20,就计算前20项
那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度 {:10_312:} sunrise085 发表于 2020-7-13 15:35
那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度
三楼正是我要的,四楼的是老师上课时用的方法。所以,我不用老师讲的方法,我得自己思考解决问题。谢谢! 小甲鱼的铁粉 发表于 2020-7-13 15:44
谢谢! 上一次是你帮我的
页:
[1]