当前位置:  开发笔记 > 编程语言 > 正文

用叉子打印斐波那契()

如何解决《用叉子打印斐波那契()》经验,为你挑选了2个好方法。

我遇到的问题是,例如当用户输入7时,显示屏显示:

0 11 2 3 5 8 13 21 child ends.

我似乎无法弄清楚如何修复11,为什么它在序列中显示了很多数字!有人可以帮忙吗?

序列号将在命令行中提供.例如,如果提供5,则Fibonacci序列中的前五个数字将由子进程输出.由于父进程和子进程具有自己的数据副本,因此子进程必须输出序列.让父进程调用wait()调用以等待子进程在退出程序之前完成.执行必要的错误检查以确保在命令行上传递非负数.

#include 
#include 
#include 

int main()
{
   int a=0, b=1, n=a+b,i,ii;
   pid_t pid;

   printf("Enter the number of a Fibonacci Sequence:\n");
   scanf("%d", &ii);

   if (ii < 0)
      printf("Please enter a non-negative integer!\n");
   else
   {
      pid = fork();
      if (pid == 0)
      {
         printf("Child is producing the Fibonacci Sequence...\n");
         printf("%d %d",a,b);
         for (i=0;i

Don Neufeld.. 13

11实际上是两个1,它们之间没有空格.第一个来自第二个%d,因为b的值是1:

printf("%d %d",a,b);

第二个来自循环中的第一个printf,其中n = 1:

printf("%d ", n);


dmckee.. 7

这里没有结束空间

printf("%d %d",a,b);

你第一次遇到麻烦

printf("%d ", n);

您可以做的最优雅的事情是更改printf 循环以预先填充所需的空间,如下所示:

printf(" %d", n);

这样你最后就不会留下一个空地......


您显示"太多"元素,因为您没有计算首先写入的元素printf...



1> Don Neufeld..:

11实际上是两个1,它们之间没有空格.第一个来自第二个%d,因为b的值是1:

printf("%d %d",a,b);

第二个来自循环中的第一个printf,其中n = 1:

printf("%d ", n);



2> dmckee..:

这里没有结束空间

printf("%d %d",a,b);

你第一次遇到麻烦

printf("%d ", n);

您可以做的最优雅的事情是更改printf 循环以预先填充所需的空间,如下所示:

printf(" %d", n);

这样你最后就不会留下一个空地......


您显示"太多"元素,因为您没有计算首先写入的元素printf...

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有