LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: wuhu

看一下到底什么地方错了

[复制链接]
发表于 2003-10-2 18:28:25 | 显示全部楼层

  1. void pow(int,int)
  2. {
  3. int res=1; // 错误。 改成 res = 1;
  4.    for ( int cnt = 1;cnt <= power; ++cnt)
  5.     res=val * res;
  6. }
复制代码


程序感觉设计的不够好。采用全局变量破坏了模块化。数据类型选择的不够好,未做任何检查,很容易就溢出了。
 楼主| 发表于 2003-10-2 20:51:44 | 显示全部楼层
那好象是书写习惯哦,没有关系吧
发表于 2003-10-2 21:26:58 | 显示全部楼层
你的pow函数既然已经给了两个参数,那就不需要全局变量了,

  1. #include <iostream>
  2. using namespace std;

  3. int pow(int val, int power)
  4. {
  5.   int res=1;
  6.   for ( int cnt = 1;cnt <= power; ++cnt)
  7.     res=val * res;
  8.   return(res);
  9. }

  10. int main()
  11. {
  12.   int val, power, res;

  13.   cin>>val;
  14.   cin>>power;
  15.   res = pow (val, power);
  16.   cout << res <<endl;
  17. }
复制代码

还有,你写的代码里pow函数内又声明了一个res,所以函数内使用的是这个局部的res,全局的res一直都是0,最后main里输出的是全局的res,所以结果始终是0
 楼主| 发表于 2003-10-4 12:09:26 | 显示全部楼层
原来我没有在pow里面定义,val,power,所以我只有在全局变量里定义了,在别的地方定义都说我的val,power没有被定义,
谢谢libinary斑竹!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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