gpt4 book ai didi

c - 在 C 中子方法内使用循环的奇怪结果

转载 作者:行者123 更新时间:2023-11-30 15:28:54 25 4
gpt4 key购买 nike

我正在尝试根据用户想要的数量打印 Fobonacci 序列。 IE。如果用户输入 5,则输出将为 1,1,2,3,5。因此,我在一个普通的 C 程序中设置了一个循环来执行此操作:

for(int m=1; m<=a;m++)
{
i = (pow(c, m)-(pow(v, m)))/b;
printf("%d\n",(int)round(i));
}

这个 for 循环为我提供了我正在寻找的所需输出。但是,当我将其放入 fork 方法的子进程中时,输出会发生变化。 IE。如果用户输入 5,则输出将为 1,0,2,2,5。为什么是这样?有办法解决吗?这是我的代码:

#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
#include <math.h>

int var_glb; /* A global variable*/

int main(void)
{
pid_t childPID;
double a;
double c = 1.6180339;
double v = -0.6190339;
double b = 2.236067977;
int i;


childPID = fork();

if(childPID >= 0) // fork was successful
{
if(childPID == 0) // child process
{
printf("\nEnter the first value:");
scanf("%lf", &a);
for(int m=1; m<=a;m++)
{
i = (pow(c, m)-(pow(v, m)))/b;
printf("%d\n",(int)round(i));
}
}
else //Parent process
{
wait(NULL);

printf("\nThis is the parent process running");
return 0;
}
}
else // fork failed
{
printf("\n Fork failed, quitting!!!!!!\n");
return 1;
}

return 0;
}

最佳答案

我首先修复你的括号:i = (pow(c, m)-pow(v, m))/b; 另外你不能期望iint...i 应该为 floatdouble

关于c - 在 C 中子方法内使用循环的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26412117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com