#include <stdio.h>
int m(int h,int l)
{
float w;
if(l<=3){
w=14;
return w;
}
else
{
if(h>=23||h<=6)
{
if(l<=1)
{
return 1.2;
}
else
{
w=1.2* m(h,l-1);
return w;
}
}
w=w*2.3* 9+ 14;
return w;
}
return w;
}
int main()
{
printf("%f\n",m(21,12));
printf("%f",m(9,12));
return 0;
}为什么输出为0.000000
0.000000
该如何改动代码
得出非零值
或是
该问题的正确结果
1 回答
已采纳

MadMarical
TA贡献79条经验 获得超122个赞
你好。你的问题是w没有在判断语句外初始化,导致你很可能使用了未初始化变量。这种编码习惯不好。如m(21,22)其中l>3所以落入else语句中,h并不属于<6或者>23的区间中,所以没有进入if分支而是直接使用w = w*2.3*9+14。可此时w并没有被初始化,所以导致输出结果为0.000 也有可能会输出很多乱码。
- 1 回答
- 0 关注
- 1067 浏览
添加回答
举报
0/150
提交
取消