c语言问题,来点牛人看看!~~

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:30:54
fun(int t[],int n)
{int i,m;
if(n==1)return t[0];
else if(n%3==0){m=fun(t,n-1);return m;}
}
main()
{int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
怎么算出3来的啊??当n=0时,两个if都没起作用啊!~~ 有人说是该程序问题太多,导致返回值不可预期!不可预期那我怎么预期它返回一个等于3的值啊?我考试遇到它怎么办啊?烧香?
请大哥写出关键的流程并说明(说明怎么算出个3来的),谢谢!~讲解得好加分感谢!~
晕,这不是我写的东西,这是书上的一个选择题,你说我怎么才能看着这个烂程序选择出正确的答案3呢??问题是这个程序运行它就能算出一个3来,不是随机值!~

根据这个程序本身是算不出3来的,不同的编译器可能得出不同的结果来,不如我用gcc 3.2.2得出的就是1107.....

这个值虽然是确定的,但却是不可预知的,如果你想知道得出这个值得过程,必须要知道特定编译器的工作流程。我估计这个不是题目想考的内容。

至于出题者怎么得出3的,鬼才知道。
所以这种烂题,就当没看到好了。

重写

注意你的程序习惯,格式很重要,方便别人读..
int fun(int t[],int n)
{
int i,m;
if(n==1)
return t[0];
else
if(n%3==0)
{
m=fun(t,n-1);
return m;
}
}

main()
{
int a[]={11,4,6,3,8,2,3,5,9,2};
printf("%d\n",fun(a,10));
}
你的程序调式通没?你的fun函数有返回值的错误..当n!=1而且n%3!=0,就没有返回值,而且也不会循环调用fun函数.
fun(a,10)调用fun函数,就是n=10,这个时候n!=1而且n%3!=0,你单步调试下会发现问题..两个if是都没进去,你的函数相当于没调用,我是不知道你为什么会得到个3..
理论上讲应该通不了的.