首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

新手关于Programming in c 这本书中一个例题,有看过这本书的人帮忙来看看啊该如何解决

2012-02-24 
新手关于Programming in c 这本书中一个例题,有看过这本书的人帮忙来看看啊我最近在看Programminginc这本

新手关于Programming in c 这本书中一个例题,有看过这本书的人帮忙来看看啊
我最近在看Programming   in   c   这本书,书中有个例题,我在VC6.0和TC2.0中编译都会出现错误,那位高手能告诉我是怎么回事吗?

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

printf( "How   many   Fibonacci   numbers   do   you   wanter   (between   1   and   75)? ");
scanf   ( "%i ",   &numFibs);

if(numFibs   <   1   ||   numFibs   >   75   ){
printf( "Bad   number,   sorry!\n ");
return   1;

}

unsigned   long   long   int   Fibonacci[numFibs];

Fibonacci[0]   =   0;
Fibonacci[1]   =   1;

for   (i   =   2;   i   <   numFibs;   ++i)
          Fibonacci[i]   =   Fibonacci[i-2]   +   Fibonacci[i-1];
for   (i   =   0;   i <   numFibs;   ++i)
          printf( "%llu   ",   Fibonacci[i]);

printf( "\n ");
return   0;
}

[解决办法]
用gcc吧,
vc,tc都不支持 变长数组的
[解决办法]
你的编译器没支持C99的变长数组,WINDOWS下用dev-cpp,Linux用gcc
[解决办法]
C++看似只支持定长的数组声明吧?
就是int a[10];

#define MAX 10
int a[MAX];

const int MAX=10;
int a[MAX];
都是可以的
但是int max=3;
int a[max]就是不可以的
因为数组空间的分配是在编译的时候确定的,前三种在编译的时候都可以确定数组空间大小为3,而最后一种只有在执行的时候才能够确定max的值为3,何况说不定中间还有那句话再给max赋个值,那就连3都不是了,所以最后一种不行,可以改成
int max=3;
int* a=new int[max];

也就是把unsigned long long int Fibonacci[numFibs];改成上面说的那样

热点排行