#include<stdio.h>
int main(void)
{
int a, b, c, n;
printf("What Fibonacci number would you like?:");
scanf("%d", &n);
if (n == 0 || n == 1)
return printf("%d", n);
else
for (c = 0; c < n; c++)
{
c = a + b;
a = b;
b = c;
}
printf("%d ", c);
return 0;
}
我已经制作了使用Fibonacci方程的程序。但是我在编译期间遇到以下错误:
Error 1 error C4700: uninitialized local variable 'a' used d:\computer programming c++\20150923\20150923\20150923-1.c 15 1 20150923
Error 2 error C4700: uninitialized local variable 'b' used d:\computer programming c++\20150923\20150923\20150923-1.c 15 1 20150923
我该如何解决?
答案 0 :(得分:2)
编译器是正确的,你必须在使用前初始化变量,例如
int a = 0, b = 1, c = 0, n = 0; // etc.
否则,如果您读取未初始化变量的值,则会触发undefined behaviour(在使用C或C ++等语言时应尽量避免)。
确实如评论中所述,将c
作为循环索引是没有意义的。
答案 1 :(得分:0)
您必须初始化声明的变量。由于你没有声明a和b,编译器会抛出错误。
您还需要将> su
> cd /var/cache/dnf/epel-2b6dfc5904c26562/repodata
> mkdir throwaway
> mv 49c4e3bd54f19136521be9b254830c954369cc22ce1b661db502ebef13b0004c-updateinfo.xml.bz2 throwaway
更改为c<n
才能获得所需的斐波纳契数
所以你的最终代码将如下所示:
c<=n
答案 2 :(得分:0)
除了初始化a和b之外,代码还需要为循环计数器使用单独的变量(我用过i)。通过使用无符号int,n可以高达47,结果= 2971215073.我将求和更改为c = b + a,因为这对应于fib(i)= fib(i-1)+ fib(i-2);
#include<stdio.h>
int main(void)
{
unsigned int a=0, b=1, c, i, n;
printf("What Fibonacci number would you like?:");
scanf("%d", &n);
if (n == 0 || n == 1){
printf("%u\n", n);
return 0;
}
for (i = 2; i <= n; i++)
{
c = b + a;
a = b;
b = c;
}
printf("%u\n", c);
return 0;
}