Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 嵌套在循环中的公式赢得';执行不当_C_While Loop - Fatal编程技术网

C 嵌套在循环中的公式赢得';执行不当

C 嵌套在循环中的公式赢得';执行不当,c,while-loop,C,While Loop,我试图解决一个代码来运行这个系列pi=4-4/3+4/5-4/7+4/9。。。等等问题是,当我使用更高的值运行时,函数趋向于4,而不是31415。。。。程序似乎只运行n假定的最大值。我也不能让%%.lflf根据变量(p)设置小数。这个算法似乎是正确的,但几天后,我迫切需要任何帮助,非常感谢 if ( 2 == route ) { printf("piseries calculator\n"); double pi,n,p; printf("define precisi

我试图解决一个代码来运行这个系列pi=4-4/3+4/5-4/7+4/9。。。等等问题是,当我使用更高的值运行时,函数趋向于4,而不是31415。。。。程序似乎只运行n假定的最大值。我也不能让%%.lflf根据变量(p)设置小数。这个算法似乎是正确的,但几天后,我迫切需要任何帮助,非常感谢

if ( 2 == route ) {
    printf("piseries calculator\n");

    double pi,n,p;

    printf("define precision");
    scanf("%lf",&p);

    n=0;

    while (n++ <= p ) {
        pi = (4) - (n * ( 4 / ( 1 + 2 *(n)))) +( n * ( 4 / ( 3 + 2 * (n))));
    }
    printf("%%.lflf",p,pi);
    return 0;
}
if(2==路由){
printf(“piseries计算器”);
双pi,n,p;
printf(“定义精度”);
scanf(“%lf”和&p);
n=0;

而(n++对于这些计算,我也会对其进行缩放

#include <stdio.h>

#define Niterations 1000
#define SCALE 1000

int main(void) {

    double pi = 4.0 * SCALE;
    for(unsigned i = 0; i < Niterations; i ++)
    {
        double f = 4.0 * SCALE / (3 + i * 2);
        pi += (i & 1) ? f : -f;
    }

    printf("N iterations = %u, pi = %lf", Niterations, pi / SCALE);
    // your code goes here
    return 0;
}
#包括
#定义硝化作用1000
#定义比例尺1000
内部主(空){
双pi=4.0*刻度;
for(无符号i=0;i
测试一下


结果:
N迭代次数=10000,pi=3.1416926435905190295727607008302584290504455566406250000000…

首先,使N和p成为整数

第二,n从3开始,不是吗

第三,Pi系列为4.0(-分数+分数)

最后,您可以使用%.*lf打印F以提高/限制输出的精度

 if ( 2 == route )
 {
    printf("piseries calculator\n");

    double pi=4.0;
    int n,p;

    printf("define precision");
    scanf("%d",&p);

    for(n=3;n<p;n+=2)
    {
        pi -= 4.0/n;
        n+=2;
        pi += 4.0/n;
    }
    printf("%.*lf",p,pi);
    return 0;
}
if(2==路由)
{
printf(“piseries计算器”);
双pi=4.0;
int n,p;
printf(“定义精度”);
scanf(“%d”和“p”);

对于(n=3;n)你的公式实现是错误的。你只是在重新计算你每次迭代调用的
pi
,忘记了以前的值。@EugeneSh是对的,也许你打算写
pi+=
@Idle001,不仅如此……如果按比例缩放,这些计算将非常不精确。