C语言 提示 1.表达式语法错误在main中 2.未定义的符号'F'在main中 3.无效间接运算在main中

来源:百度知道 编辑:UC知道 时间:2024/09/25 02:23:07
请教一下,这是我对照C教程写的产生Fibonacci数的程序:
#include "stdio.h"
main()
{
int F[15],i;

F[0]=0;
F[1]=1;

for(i=2;i<15;i++)
F[i]=F[i-2]+F[i-1];

for(i=0;i<15;i++)
printf("%i\n",F[i]);

return 0;

}
这是对照教程写的产生变量长度的Fibonacci数的程序:
#include "stdio.h"
main()
{
int i,n;

printf("N=?(1-75)");
scanf("%i",&n);

if(n<1||n>75){
printf("Bad!\n");
return 1;
}

unsigned long long int F[n];

F[0]=0;
F[1]=1;

for(i=2;i<n;i++)
F[i]=F[i-2]+F[i-1];

for(i=0;i<n;i++)
printf("%llu\n",F[i]);

printf("\n");

return 0;

}
第二个程序总是提示 1.表达式语法错误在main中 2.未定义的符

第一,错在 unsigned long long int,两个long在一起是不可以的,long和int也不能放在一起,可改为unsigned long

先改为unsigned long F[n];

第二,改为之后,因为你是定义组F[],不能写F[n],只能这么写
unsigned long *F;
F=new unsigned long[n];

#include "stdio.h"
main()
{
int i,n;

printf("N=?(1-75)");
scanf("%i",&n);

if(n<1||n>75){
printf("Bad!\n");
return 1;
}

unsigned long *F;

F=new unsigned long[n];

F[0]=0;
F[1]=1;

for(i=2;i<n;i++)
F[i]=F[i-2]+F[i-1];

for(i=0;i<n;i++)
printf("%llu\n",F[i]);

printf("\n");

return 0;

}

我试了一下,没报错了

unsigned long long int 这个数据类型是有的 是新的int型变量 表示1个64bit的int型 但我不记得scanf有个%i的控制符 可能你的编译器不支持long long int 型吧 没事用那么大的储存干嘛 int型够用了

没有long long int类型,用__