C语言运行不出结果

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:00:02
任务:已知一块无限大平板在t=0时刻的各点温度均匀为20设施度,放到1300设施度环境中,编程计算出在用多长时间可以让板的表面温度达到1200设施度,并且表面与内部温差最大不超过15设施度。并将这个时刻的各点温度打印出来。

计算用到的导热值、热容量等专业量都是随温度、位置变化的,在下面的程序中已经用函数f[T],f[T]表示出,在用到时可以直接调用。在给定时刻t0时可以当作稳态处理。计算此问题的专用方城也已经在while语句中给出,专用方程里面的系数A,B,C及已知量F已经给出计算式,最后算好后用回代法求出各点温度。

利用while语句来实现条件。

但现在的写法最终运行时并不出结果,请各位给帮忙看看!!!!万分感激!!!!!!!!!!!!!!!!!!!!得到正确解答后我会给各位高高的加分的!!

#include<math.h>
#include<stdio.h>

//定义热导率与温度的函数f(T)

float f(float T)

{float k;
int i;
//定义各点温度为数组量a,题目已经给出
float a[14]={20,100,200,300,400,500,600,700,800,900,1000,1100,1200,1300};
float b[14]={60,55,51,46,41,37,34,30,28,28,28,27,27,27};
for(i=0;i<14;i++)
{if(T==a[i])
{k=b[i];}
if(T<a[i])
{k=(b[i]-b[i-1])*(T-a[i-1])/(a[i]-a[i-1])+b[i-1];}
}
return k;
}

//定义热容量与温度的函数g(T)
float g(float T)
{
float Cp;
int i;
float a[14]={20,100,200,3

我对你的程序进行了以下操作:
首先是把所有的float类型都改成了double

然后在你的程序前面加上
#include<iostream.h>
#include<conio.h>
这两个头文件

再在程序主体部分的
while((T[25]<=1200) || ((T[25]-T[0])>=15))
循环体内一进循环体的位置加上
cout<<T[25]<<"|"<<T[25]-T[0]<<endl;
getch();
这两句话

运行程序得到结果:
20|0
1.#QNAN|1.#QNAN
1.#QNAN|1.#QNAN
1.#QNAN|1.#QNAN
...

说明进入while循环体后进行了一系列操作后T[25]的数据就变成了非法数据

所以我估计是你的while里面的那些公式带的有问题或者怎么样,总之
while((T[25]<=1200) || ((T[25]-T[0])>=15))
条件永远不可能不成立即永远不可能跳出循环体,当然就卡在那里得不到结果了(即所谓的死循环)

因为对你题目要求的公式不太清楚,所以也不好检查你的程序,总之个人感觉就是你的公式带的有问题,T[0]~T[25]计算方法有问题,自己仔细检查下。

单步调试吧

没有调试工具,可以在适当的地方添加打印语句打印变量的值,以此来跟踪程序的执行过程,从中发现问题。

算法问题,,,学习中

C语言中用" // "注释?