LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 691|回复: 5

函数的嵌套调用的问题!:)谢谢指教!:)

[复制链接]
发表于 2004-12-2 20:08:32 | 显示全部楼层 |阅读模式
  1. /*用主函数调用方法来实现1!+2!+3!+......+19!+20!的值*/
  2. main()
  3. {
  4. double ajc(x);/*声明*/
  5. double a;
  6. a=ajc(20);
  7. printf("%u\n",a);
  8. }
  9. double ajc(x)
  10. {
  11. double jc(n);/*声明*/
  12. int y,z=0;
  13. for(y=1;y<=x;y++)
  14. z+=jc(y);
  15. return(z);
  16. }
  17. double jc(n)
  18. {int w=1,k=1;
  19. for(k=1;k<=n;k++)
  20. w*=k;
  21. return(w);
  22. }
复制代码

我的编译结果是:
  1. fydream@linux:~/源代码/unit 6> gcc -o dreamdead 64shiyan.c
  2. 64shiyan.c: In function `main':
  3. 64shiyan.c:4: warning: parameter names (without types) in function declaration
  4. 64shiyan.c: In function `ajc':
  5. 64shiyan.c:11: warning: parameter names (without types) in function declaration
  6. fydream@linux:~/源代码/unit 6> ./dreamdead
  7. 0
复制代码

结果居然是0.我是在是不能找到什么错的,也许是小弟我还太菜,请各位高手指教,谢谢了!
发表于 2004-12-2 23:05:30 | 显示全部楼层
怎么没有缩进,看得头晕呀。
发表于 2004-12-3 08:57:55 | 显示全部楼层
为什么你的函数参数都不写类型?还有你的w,y,z是int型,显然装不下20!这么大的数。
发表于 2004-12-3 09:24:16 | 显示全部楼层
double ajc(x)
这是什么?看不懂啊,编译的时候,居然让你成功了?
 楼主| 发表于 2004-12-3 17:46:13 | 显示全部楼层
对不起!double ajc(x)的意思是定义一个 函数!就是阶乘相加的函数!:)
 楼主| 发表于 2004-12-3 18:21:48 | 显示全部楼层

成功了!:)

  1. /*用主函数调用方法来实现1!+2!+3!+......+19!+20!的值*/
  2. main()
  3. {
  4. double ajc(double x);/*声明*/
  5. double a;
  6. a=ajc(20);
  7. printf("%lf\n",a);
  8. }
  9. double ajc(double x)
  10. {
  11. double jc(double n);/*声明*/
  12. int y;
  13. double z=0;
  14. for(y=1;y<=x;y++)
  15. z+=jc(y);
  16. return(z);
  17. }
  18. double jc(double n)
  19. {int k=1;
  20. double w=1;
  21. for(k=1;k<=n;k++)
  22. w*=k;
  23. return(w);
  24. }
复制代码

成功了!确实是我的定义的类型非常混乱导致的错误。

  1. fydream@linux:~/源代码/unit 6> gcc -o dreamdead 64shiyan.c
  2. fydream@linux:~/源代码/unit 6> ./dreamdead
  3. 2561327494111820288.000000
  4. fydream@linux:~/源代码/unit 6>
复制代码

非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表