你好,请问为什么这段程序运行没有结果,找了很久都找不到原因?

include

include

double t[9]={15,30,50,100,150,200,300,400,550};
double cp[9]={7.2,16.4,21.1,24.3,25.2,25.8,26.5,27.4,28.9};
double sm_15=2.4;

double lgrg2(int n,double x0)
{

int i;
double p,q,r,z,c[i];
for(i=1;i<n;i++)
c[i]=cp[i]/t[i];
if(x0>t[0] && x0<t[1])
{
    i=0;
    p=(x0-t[i+1])*(x0-t[i+2])/(t[i]-t[i+1])/(t[i]-t[i+2]);
    q=(x0-t[i])*(x0-t[i+2])/(t[i+1]-t[i])/(t[i+1]-t[i+2]);
    r=(x0-t[i])*(x0-t[i+1])/(t[i+2]-t[i])/(t[i+2]-t[i+1]);
    z=p*c[i]+q*c[i+1]+r*c[i+2];
}
else if(x0>t[n-2] && x0<t[n-1])
{
    i=6;
    p=(x0-t[i+1])*(x0-t[i+2])/(t[i]-t[i+1])/(t[i]-t[i+2]);
    q=(x0-t[i])*(x0-t[i+2])/(t[i+1]-t[i])/(t[i+1]-t[i+2]);
    r=(x0-t[i])*(x0-t[i+1])/(t[i+2]-t[i])/(t[i+2]-t[i+1]);
    z=p*c[i]+q*c[i+1]+r*c[i+2];
}
else
{
for(i=0;i<n;i++)
{
    if(x0>t[i] && x0<t[i+1])
        if (fabs(x0-t[i])> fabs(x0-t[i+1]))
        {
            p=(x0-t[i+1])*(x0-t[i+2])/(t[i]-t[i+1])/(t[i]-t[i+2]);
            q=(x0-t[i])*(x0-t[i+2])/(t[i+1]-t[i])/(t[i+1]-t[i+2]);
            r=(x0-t[i])*(x0-t[i+1])/(t[i+2]-t[i])/(t[i+2]-t[i+1]);
            z=p*c[i]+q*c[i+1]+r*c[i+2];
            break;
        }
        else
        {
            i=i-1;
            p=(x0-t[i+1])*(x0-t[i+2])/(t[i]-t[i+1])/(t[i]-t[i+2]);
            q=(x0-t[i])*(x0-t[i+2])/(t[i+1]-t[i])/(t[i+1]-t[i+2]);
            r=(x0-t[i])*(x0-t[i+1])/(t[i+2]-t[i])/(t[i+2]-t[i+1]);
            z=p*c[i]+q*c[i+1]+r*c[i+2];
            break;
        }
}   
}

return z;

}

double simp()
{
int k,n=1;
double a=15,b=500,h,fa,fb,eps=0.00001;
double t1,t2,s,s1,s2,d=1;
h=b-a;
s1=0;
fa=cp[0]/t[0];
fb=lgrg2(9,500);
t1=h*(fa+fb)/2;
while(d>eps)
{
s=0;
for(k=1;n;k++)
{
s=s+lgrg2(9,a+(k-0.5)*h);
}
t2=(t1+h*s)/2;
s2=t2+(t2-t1)/3;
d=fabs(s2-s1);
if(fabs(s2)>1)
{
d=fabs(s2-s1)/s2;

}

n=n*2;
h=h/2;
t1=t2;
s1=s2;

}
return s2;

}

int main()
{
double sm_500;
sm_500=sm_15+simp();
printf("固态铅在500K时的标准熵是%lf",sm_500);
return 0;
}

#include<stdio.h>
#include<algorithm>
double t[9] = { 15,30,50,100,150,200,300,400,550 };
double cp[9] = { 7.2,16.4,21.1,24.3,25.2,25.8,26.5,27.4,28.9 };
double sm_15 = 2.4;

double lgrg2(int n, double x0)
{

    int i;
    double p, q, r, z, c[1024];         //c[i]只有在i是常量时才能编译通过
    for (i = 0; i < n; i++)             //i初始为1 ???
        c[i] = cp[i] / t[i];
    if (x0 > t[0] && x0 < t[1])
    {
        i = 0;
        p = (x0 - t[i + 1])*(x0 - t[i + 2]) / (t[i] - t[i + 1]) / (t[i] - t[i + 2]);
        q = (x0 - t[i])*(x0 - t[i + 2]) / (t[i + 1] - t[i]) / (t[i + 1] - t[i + 2]);
        r = (x0 - t[i])*(x0 - t[i + 1]) / (t[i + 2] - t[i]) / (t[i + 2] - t[i + 1]);
        z = p * c[i] + q * c[i + 1] + r * c[i + 2];
    }
    else if (x0 > t[n - 2] && x0 < t[n - 1])
    {
        i = 6;
        p = (x0 - t[i + 1])*(x0 - t[i + 2]) / (t[i] - t[i + 1]) / (t[i] - t[i + 2]);
        q = (x0 - t[i])*(x0 - t[i + 2]) / (t[i + 1] - t[i]) / (t[i + 1] - t[i + 2]);
        r = (x0 - t[i])*(x0 - t[i + 1]) / (t[i + 2] - t[i]) / (t[i + 2] - t[i + 1]);
        z = p * c[i] + q * c[i + 1] + r * c[i + 2];
    }
    else
    {
        for (i = 0; i < n; i++)
        {
            if (x0 > t[i] && x0 < t[i + 1])
                if (fabs(x0 - t[i]) > fabs(x0 - t[i + 1]))
                {
                    p = (x0 - t[i + 1])*(x0 - t[i + 2]) / (t[i] - t[i + 1]) / (t[i] - t[i + 2]);
                    q = (x0 - t[i])*(x0 - t[i + 2]) / (t[i + 1] - t[i]) / (t[i + 1] - t[i + 2]);
                    r = (x0 - t[i])*(x0 - t[i + 1]) / (t[i + 2] - t[i]) / (t[i + 2] - t[i + 1]);
                    z = p * c[i] + q * c[i + 1] + r * c[i + 2];
                    break;
                }
                else
                {
                    i = i - 1;
                    p = (x0 - t[i + 1])*(x0 - t[i + 2]) / (t[i] - t[i + 1]) / (t[i] - t[i + 2]);
                    q = (x0 - t[i])*(x0 - t[i + 2]) / (t[i + 1] - t[i]) / (t[i + 1] - t[i + 2]);
                    r = (x0 - t[i])*(x0 - t[i + 1]) / (t[i + 2] - t[i]) / (t[i + 2] - t[i + 1]);
                    z = p * c[i] + q * c[i + 1] + r * c[i + 2];
                    break;
                }
        }
    }

    return z;
}

double simp()
{
    int k, n = 1;
    double a = 15, b = 500, h, fa, fb, eps = 0.00001;
    double t1, t2, s, s1, s2, d = 1;
    h = b - a;
    s1 = 0;
    fa = cp[0] / t[0];
    fb = lgrg2(9, 500);
    t1 = h * (fa + fb) / 2;
    while (d > eps)
    {
        s = 0;
        for (k = 1; k < n; k++)             //这里死循环了
        {
            s = s + lgrg2(9, a + (k - 0.5)*h);
        }
        t2 = (t1 + h * s) / 2;
        s2 = t2 + (t2 - t1) / 3;
        d = fabs(s2 - s1);
        if (fabs(s2) > 1)
        {
            d = fabs(s2 - s1) / s2;

        }

        n = n * 2;
        h = h / 2;
        t1 = t2;
        s1 = s2;

    }
    return s2;
}

int main()
{
    double sm_500;
    sm_500 = sm_15 + simp();
    printf("固态铅在500K时的标准熵是%lf", sm_500);
    getchar();
    return 0;
}