下面是我程序的主函数  经过不断的改正终于可以运行了 但为什么结果只有一个 <-1.#IND,0>呢,应该是64*64个数才对啊 
这个 <-1.IND,0>又是什么数据 查询其他方面的信息 好像是逻辑问题吧 但又实在搞不懂原因出在哪里 希望有高手不吝赐教
void main() 

int n,i,m,c; 
double X[64]={8.719486461068,6.8193347340691,1.15486129825143,1.78330276284385, 
8.79848218940725,2.32994642114653,1.01136947787404,5.7686494784199, 
6.9598355166345,4.47763103667546,8.2501836350581,8.24208318585227, 
        4.4549258916443,6.92745296939813,5.73527811870724,0.9902178976729, 
2.3383330592581,8.8277162663549,1.817526496756,1.18324245791416, 
6.83513871006403,8.7194863082151,6.8193347038166,1.15486129691215, 
1.78330276714735,8.7984821938859,2.32994642474927,1.0113694806064, 
5.7686494804675,6.9598355181114,4.4776310377464,8.25018363583627, 
8.242083186418,4.4549258920556,6.92745296969724,5.735278118925, 
0.9902178978311,2.3383330593718,8.8277162664352,1.8175264968433, 
1.1832424579791,6.83513871011166,8.7194863082499,6.81933470384195, 
1.1548612969307,1.7833027671609,8.7984821938958,2.3299464247567, 
1.0113694808183,5.7686494805064,6.9598355181254,4.477631037753, 
8.25018363584024,8.2420831864207,4.4549258920577,6.9274529696991, 
5.73527811892643,0.9902178978326,2.3383330593719,8.8277162665365, 
1.81752649686155,1.1832424579887,6.8351387101175,8.7194863082538}; 
complex S2,S1,S,S0,a,b,xn,S10; 
double f; 
for(i=0;i <64;i++)                          //第一个循环 i 

n=0; 
for(n=0;n <64;n++)                    //第二个循环 n 

n=0; 
for(m=0;m <64;m++)                //第三个循环 m 

S0=0; 
if(n==0)                    //n=0 时 S[i,n]=1/64*sum(n=0,63)X[n] 

S10=0; 
for(n=0;n <64;n++) 

S1=X[n]; 
S1=S1+S10; 
S10=S1; 

S=1.0/64*S1; 

else 

for(m=0;m <64;m++) 

if(n+m>63) 

                            c=n+m-64;        //判断m+n是否超过64 

                        else 
{  c=m+n; 

    a.re=0; 
a.im=0.098125*m*i; 
S2=exp(a); 
f=m^2/n^2; 
b=exp(19.7192*f); 
        S1=X[c]*b; 
S=S1*S2; 

                    S=S+S0; 
S0=S; 
} } 
S=abs(S); 
cout < <S < <endl; 
/*  if(l=64) 
        cout < <"#" < <endl; 
else        */          
return; } 


解决方案 »

  1.   

    逻辑问题你的三个循环变量i,m,n在循环体中多次被你修改
      

  2.   

    程序我又改了一下 发现是在f=36的时候开始出错 也就是n=1 m=6的时候 怎么是在循环里出错 实在想不通 哪位大虾再帮忙看看吧   
    void main()
    {
    int n,i,m,c;
    double X[64]={8.719486461068,.....,8.7194863082538};
    complex S2,S1,S,S0,a,b,xn,S10;
    double f;
    for(i=0;i<64;i++)                          //第一个循环 i
    {
    n=0;
    for(n=0;n<64;n++)                     //第二个循环 n
    {
    m=0;
    for(m=0;m<64;m++)                //第三个循环 m
    {
    S0=0;
    if(n==0)                    //n=0 时 S[i,n]=1/64*sum(n=0,63)X[n]
    {
    S10=0;
    for(n=0;n<64;n++)
    {
    S1=X[n];
    S1=S1+S10;
    S10=S1;
    }
    n=1;
    S=1.0/64*S1;
    }
    else
    {
    for(m=0;m<64;m++)
    {
    if(n+m>63)
    {
                                c=n+m-64;         //判断m+n是否超过64
    }
                            else
    {  c=m+n;
    }
        a.re=0;
    a.im=0.098125*m*i;
    S2=exp(a);
    f=m*m/n*n;
    b=exp(19.7192*f);   //f=36时出错 
            S1=X[c]*b;
    S=S1*S2;
    }
                        
    }
    S=S+S0;
    S0=S;
             S=abs(S);
    cout<<S<<endl;


    return;

    }
    }
    }
    当n=0时可以输出,也就是只输出了第一个数。到n=1时,循环到m=6就出现这样的错误,实在搞不懂。