江湖中热 2019-08-25 11:34 采纳率: 50%
浏览 262
已采纳

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

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;
}

  • 写回答

1条回答 默认 最新

  • cold_windx 2019-08-25 12:14
    关注
    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料