德国开元华人社区 开元周游
标题:
求教!请高手看看程序!
[打印本页]
作者:
鳄鱼
时间:
24.3.2004 16:54
输出结果是多少?<br>#include<stdio.h><br>int feld[]={1,2,3,7,5,6,4,8,9};<br>unsigned anz(int a,int f[],unsigned l)<br>{ if(l) return a<f[0]?0:1+anz(a,&f[1],l-1);<br> return 0;<br>}<br>int main()<br>{ printf("%u \n",anz(0,feld,9));<br> printf("%u \n",anz(6,feld,9));<br> printf("%u \n",anz(8,feld,9));<br>}
作者:
Guest
时间:
26.3.2004 10:21
<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->if(l) return a<f[0]?0:1+anz(a,&f[1],l-1);<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd--><br>这里的&f[1]有问题,虽然可以通过编译,但是无法执行的,因为函数第二个参数要求是数组指针,你现在传进去一个int的指针,所以是错的
作者:
Guest
时间:
26.3.2004 11:03
可以编译,也可以执行,自己找个编译器吧。<br>因为数组的首地址其实就是数组第一个元素的地址,所以这里不存在传递错误。
作者:
小瘪三
时间:
26.3.2004 12:10
每次弟龟,首地址加一,输出结果是计算递归次数,关键注意feld <br>的顺序是7,6,5,4 ,所以6,5,4的输出都是3。
作者:
cyan
时间:
26.3.2004 14:19
呵呵,这个恐怕就是Fancy的倾向问题吧,无非就是降低了程序的可读性!<br><br>完全可以写的简单明了一些,多加几个printf输出。这个不需要高手!!
欢迎光临 德国开元华人社区 开元周游 (https://forum.kaiyuan.cn/)
Powered by Discuz! X3.2