以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 荤菜求助:计算s=2*2!+3*3!(2平方的阶乘加三平方的阶乘) (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=45328) |
-- 作者:荤菜 -- 发布时间:4/12/2007 2:00:00 PM -- 荤菜求助:计算s=2*2!+3*3!(2平方的阶乘加三平方的阶乘) 计算s=2*2!+3*3!(2平方的阶乘加三平方的阶乘) 我在此调用f1(用来算平方),而f1又调用f2函数(用来算阶乘,用的是递归),但为什么得不到正确的结果? int f1(p) /*f1函数*/ int p; {int y,r; y=p*p; r=f2(y); return r; } int f2(q) /*f2函数*/ int q; {int y; if(q==1||q==0) y=1; else y=q*f2(q-1); return(y); } main() /*main函数*/ {int y; y=f1(2)+f1(3); printf("%d",y); getch(); } |
-- 作者:elfstone -- 发布时间:4/12/2007 2:06:00 PM -- 你这个程序最后算出的结果是不是2?
|
-- 作者:elfstone -- 发布时间:4/12/2007 2:09:00 PM --
问题出在红色那块,你有没有看出来。。。 |
-- 作者:荤菜 -- 发布时间:4/12/2007 10:26:00 PM -- 我把他改成: int f1(p) /*f1函数*/ int p; {int y,r; y=p*p; r=f2(y); return r; } int f2(q) /*f2函数*/ int q; {int y; if(q<0) printf("error"); else if(q==1||q==0) y=1; else y=q*f2(q-1); return(y); } main() /*main函数*/ {int y; y=f1(2)+f1(3); printf("%d",y); getch(); } 结果居然是-30312,没用啊! |
-- 作者:leona -- 发布时间:4/13/2007 2:42:00 PM -- 在函数f1里调用f2,但f2还没有定义, 可以在f1的定义前,先定义f2 或者,在f1的定义前,对f2函数原型声明 |
-- 作者:卷积内核 -- 发布时间:4/13/2007 7:37:00 PM -- 写的好乱,建议以后写程序按规范写,这样的程序没有多少人愿意帮你看。 |
-- 作者:elfstone -- 发布时间:4/14/2007 12:38:00 AM --
发现我犯了个错误,你这个程序可以得到正确结果,虽说写的即不规范又不简洁,但不积跬步无以致千里,编程之道还在于多多实践,努力总会有所收获。。。 PS:你有的什么编译器?
|
-- 作者:elfstone -- 发布时间:4/14/2007 12:41:00 AM --
对新人还是要耐心一点,毕竟我们也从那个阶段走过。。。 |
-- 作者:荤菜 -- 发布时间:4/14/2007 12:51:00 AM -- 我用的是win tc1.91,我真的很菜,我编译器都不太清楚,我只是拿到一个题目就编,我现在在自学c语言,平日里别人在玩游戏,我还在做题,我已经自学了半年了,这几天感觉难题特别多,我实在想不出,才问的,我真的很想学c语言. |
-- 作者:elfstone -- 发布时间:4/14/2007 1:10:00 AM --
刚开始学总会遇到这样那样的问题,这么长时间你坚持下来就很不容易了,不要灰心,努力总会有所收获,编译器建议你用dev-c++,turboC个人感觉不是很好,devcpp支持标准C,短小精悍却很严谨,初学的时候多看些例程,广泛的阅读的方法很适合自学。。。 |
-- 作者:荤菜 -- 发布时间:4/14/2007 3:14:00 PM -- 呵呵,谢谢了,先表达一下自己的决心.用dev-c++真的能得到正确的结果了吗? |
-- 作者:荤菜 -- 发布时间:4/14/2007 5:41:00 PM -- 终于找到原因啦,其实很简单的一个问题,却让我想了这么长的时间!! long int f1(p) /*f1函数*/ int p; {int y; long int f2(),r; y=p*p; r=f2(y); return r; } long int f2(q) /*f2函数*/ int q; {long int y; if(q==1||q==0) y=1; else y=q*f2(q-1); return(y); } main() /*main函数*/ {long int y; /*问题出在这一步,不能写成int y;*/ y=f1(2)+f1(3); printf("%ld",y); getch(); } 结果是362904 |
-- 作者:lixiaoting -- 发布时间:7/29/2007 3:58:00 PM -- #include<conio.h> int f2(int q) /*f2函数*/ { int y; if(q==1||q==0) y=1; else y=q*f2(q-1); return(y); } int f1(int p) /*f1函数*/ { int y,r; y=p*p; r=f2(y); return r; } main() /*main函数*/ { int y; y=f1(2)+f1(3); printf("%d\n",y); } |
-- 作者:lixiaoting -- 发布时间:7/29/2007 3:59:00 PM -- #include<conio.h> int f2(int q) /*f2函数*/ { int y; if(q==1||q==0) y=1; else y=q*f2(q-1); return(y); } int f1(int p) /*f1函数*/ { int y,r; y=p*p; r=f2(y); return r; } main() /*main函数*/ { int y; y=f1(2)+f1(3); printf("%d\n",y); } |
-- 作者:taoyx -- 发布时间:8/9/2007 11:03:00 AM -- hao |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
16,855.470ms |