注册 登录
编程论坛 C语言论坛

devc++程序没有报错,为什么运行不了

rain513 发布于 2021-12-16 21:01, 1379 次点击
#include<stdio.h>
#include<math.h>
#define N 11
main()
{
    int i;
    float cha;
    float t[N],a[N],b[N];
    float h,t1,t0,r,D,H,x,m,A,p;
    printf("已知:h=45,t1=80,t0=300,r=110,D=110,H=0.1 (ISO)\n");
    /*赋值*/
    h=45, t1=80, t0=300.0, r=110.0, D=110.0, H=0.1;
    x=H/N; A=3.1415*D*D/4; p=3.1415*D; m=sqrt((h*p)/(r*A));
    /*x代表步长*/
    printf("\n假定一个温度场的初始分布:\n");
    for(i=0;i<N;i++)
    {
        scanf("%f",&t[i]);
        a[i]=(t[i]-t1)/(t0-t1);
        b[i]=a[i];
    }
    cha=1;
    while(cha>0.0001)
    {
        a[0]=1;
        for(i=1;i<N;i++)
            a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);
        a[N-1]=a[N-2];
        cha=0;
        for(i=0;i<N;i++)
            cha=cha+a[i]-b[i];
        cha=cha/N;
    }
    for(i=0;i<N;i++)
        t[i]=a[i]*(t0-t1)+t1;
    printf("\n\n经数值离散计算得肋片温度分布:\n");
    for(i=0;i<N;i++)
        printf("%4.2f\t",t[i]);
    printf("\n\n");
    getchar();
    for(i=0;i<N;i++)
        a[i]=b[i];
    cha=1;
    while(cha>0.0001)
    {
        a[0]=1;
        for(i=1;i<N;i++)
            a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);
        a[N-1]=a[N-2]/(1+0.5*m*m*x*x);
        cha=0;
        for(i=0;i<N;i++)
            cha=cha+a[i]-b[i];
        cha=cha/N;
    }
    for(i=0;i<N;i++)
        t[i]=a[i]*(t0-t1)+t1;
    printf("\n\n经数值离散计算得肋片的温度分布:\n");
    for(i=0;i<N;i++)
        printf("%4.2f\t",t[i]);
    printf("\n\n");
    getchar();
}
5 回复
#2
rain5132021-12-16 21:06
求大佬救命
#3
吹水佬2021-12-16 21:14
写了那么多代码才知道运行不了
全部注释,从main(){}开始逐行逐块调试运行

#4
rain5132021-12-16 21:54
回复 3楼 吹水佬
主要是第一次运行成功了,第二次运行的时候,到第一个printf后,输入数据回车,没有输出了
#5
rain5132021-12-16 22:01
麻烦大佬帮忙
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2021-12-16 22:02编辑过]

#6
rjsp2021-12-17 09:04
死在 while(cha>0.0001) 这个循环中

        for(i=1;i<N;i++)
            a[i]=(a[i+1]+a[i-1])/(2+m*m*x*x);
当i==N-1时,a[i+1]内存越界了吧
1