| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1062 人关注过本帖, 1 人收藏
标题:求助!!!!!!!新手问个简单的问题!!
只看楼主 加入收藏
zhxhhyqj
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-21
收藏(1)
 问题点数:0 回复次数:7 
求助!!!!!!!新手问个简单的问题!!
我的目的是输入底数和指数,计算结果,并且能实现循环输入,而不会出现程序运行一次就跳出;

#include<iostream>

using namespace std;
   
int myFunc(unsigned short x,unsigned short y);
  int sum=1,i=1;
  main()
{
    
      int x=0,y=0;
           int sum=1,i=1;  //................................此处为标记处

    double t;
      cout<<"输入底数:";
      cin>>x;
      cout<<"\n输入指数:";
      cin>>y;
      t=myFunc(x,y);
      cout<<"\n结果为:"<<t<<endl;
    
      main();
      
  return 0;
    
}
  int myFunc(unsigned short a,unsigned short b)
  {
    
     if(i<=b)
     {
         sum*=a;
         i++;
         myFunc(a,b);
     }
     return sum;
    
  }
编译没有错,当我运行的时候~~第一次输入出来结果是对的!!!但是再次输入时结果就出错!!
运行结果如下:
输入底数:3
输入指数: 2
结果为:9
输入底数:5
输入指数: 2
结果为:9
但是我在上面的标记处那行int 去掉,程序运行时就不会出错了,也就是  int sum=1,i=1;改成 sum=1,i=1;.程序就对了.
高手能给我解释下为什么吗?
搜索更多相关主题的帖子: int cout 底数 
2008-03-21 22:15
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
作为一个新手,我只能说你的代码风格一塌糊涂。
一些规范要遵守:
main要写成 int main 并返回0(编译通过不等于正确);
你的程序是个无穷递归,没有出口,在main中调用它本身是不推荐的;
你要有全局和局部的概念,不要混用,造成阅读的困难,和你自己的错误;

接下来说你的问题:
首先你定义了全局的sum和i,并在函数中使用,记住myFunc中的sum和i是main外定义的sum和i。
在main中,你再次定义了局部的sum和i,此时全局的被隐藏,不可见,所以你第2次执行时myFunc中的sum和i是没有更新的依然保留了上次的值。
如果你在main中把int去掉,那么这里的sum和i就是可见的全局变量了,并被更新,再去myFunc里,都是1,1了,结果正常。

Fight  to win  or  die...
2008-03-22 00:29
zhxhhyqj
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-21
收藏
得分:0 
谢谢了~~现在明白了!!
2008-03-24 13:54
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
把main后面的代码放在
while(1)
{
...
}
内,用if(getchar() == VK_ESCAPE)return 0;
来结束程序

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-03-24 14:02
zhxhhyqj
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-21
收藏
得分:0 
if(getchar() == VK_ESCAPE)return 0
是什么意思?
输入什么字符结束程序?
2008-03-24 14:17
飞陨
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-3-19
收藏
得分:0 
那个捕获输入的按键..要是程序运行时按了Esc键就执行return 0 结束
2008-03-24 19:08
xiaxiang1986
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-16
收藏
得分:0 
回复 6# 的帖子
怎么加呀?你能把那个结束语句加到那个程序去吗?是不是还要什么头文件!

呵呵!
2008-03-24 20:17
zhxhhyqj
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-21
收藏
得分:0 
回复4#:
if(getchar() == VK_ESCAPE)return 0;这个代码怎么写进去啊~~~~
有这个代码后~~运行有错!!!提示如下!!
要添加个什么头文件吗?
error C2065: 'VK_ESCAPE' : undeclared identifier
2008-03-25 18:23
快速回复:求助!!!!!!!新手问个简单的问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029471 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved