当前位置:编程学习 > C/C++ >>

一道C语言题

(28)有以下程序 fun(int x) {int p; if(x==0║x= =1) return(3); p=x-fun(x=2); retum p; }main() { prinf("%d\n",fun(7));} 执行后的输出结果是________。 A)7 B)3 C)3 D)0
追问:p=x-fun(x-=2)     括号里是怎么回事
答案:fun(7)→p=x-fun(x-=2)此时x=5;
p=5-fun(5);
fun(5)→p=x-fun(x-=2)此时x=3
p=3-fun(3);
fun(3)→p=x-fun(x-=2)此时x=1
p=1-fun(1)=-2
所以fun(7)=5-(3-(1-fun(1)))=0
其他:首先纠正下:

1.printf写成prinf
2.return 写成 retum
这个程序是个递归程序,但是fun(x=2)这个调用每次都把x赋值为2,将永远不能执行if语句
没有出口. 

上一个:wxString str = wxString::FromUTF8(v); v为中文时,str转换结果为何为空,v类型是char v[20];
下一个:请高手给写一个C#类的关系

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,