我想输出补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;
}