我遇到的问题是,例如当用户输入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
...