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

小弟我想输出补0,为何运行后补的是一个很大的数?

2012-03-15 
我想输出补0,为何运行后补的是一个很大的数?求助!我写一个程序,是处理信号变换的,有一个函数,目的是看给出

我想输出补0,为何运行后补的是一个很大的数?求助!
我写一个程序,是处理信号变换的,有一个函数,目的是看给出的周期参数是否是2的N次方,如果不是,则延长周期为其后最近的2的N次方,且相关信号量为0。
比如,我将信号周期设为3,则我输入前三个信号量为1,2,1,则输出为1,2,1,0,自动变成周期4,也就是2的2次方,第四个信号量为0。但不知为什么程序老是出错,补上的信号应为0,可是运行发现是个很大的数,请高人指点。

#include   "stdafx.h "
#include   "math.h "

void   FFT(float   a[],   int   M)
{
int   MM;
for(int   i=0;i <1000000;i++)
{
if((double)M> pow(2,(double)i))
                                          ;
else
{
MM=(int)pow(2,(double)i);
break;
}
}

for(int   i=M+1;i <MM;i++)
{
a[i]=0;
}

for(int   i=0;i <MM;i++)
{
printf( "a[%d]   =   %f\n ",i,a[i]);

}
}


int   _tmain(int   argc,   _TCHAR*   argv[])
{
float   x[100];
int   N;
printf( "请输入信号的周期:\n ");
                  scanf( "%d ",&N);
   
for(int   i=0;i <N;i++)
{
printf( "请输入第%d个数:\n ",i+1);
scanf( "%f ",&x[i]);
}
       
        printf( "输入序列为:\n ");

FFT(x,N);

return   0;
}


[解决办法]
for(int i=0;i <1000000;i++)
{
if((double)M> pow(2,(double)i))
;
else
{
MM=(int)pow(2,(double)i);
break;
}
}

这一段怎么回事?
[解决办法]
好象是for(int i=M+1;i <MM;i++)
{
a[i]=0;
}
写错了,
应该是for(int i=M;i <MM;i++)
{
a[i]=0;
}

热点排行