| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 366 人关注过本帖
标题:c++程序题相关问题
只看楼主 加入收藏
wluhao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-9-25
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:4 
c++程序题相关问题
#include<iostream>
using namespace std;
int main()
{
    int fac(int);
    int i,n=5,y;
    for(i=1;i<=5;i++)
   
    {  y=fac(i);
    cout<<y<<endl;}
    return 0;
}
int fac(int i)
{static int y=1;
  y=y*i;
  return y;
}
为啥把cout<<y<<endl改为cout<<fac(i)<<endl结果变为1,4,36,576,14400,寻求高手解答

[ 本帖最后由 wluhao 于 2012-10-10 19:13 编辑 ]
2012-10-10 19:06
风之子MIKEY
Rank: 3Rank: 3
来 自:江西省抚州市
等 级:论坛游侠
帖 子:39
专家分:108
注 册:2012-9-25
收藏
得分:10 
i=1:y_static=y_static(1)*i//////////y=fac(i);
             =1;
      y_for=y_static=1;    ///////////return y
     y_static=y_static(1)*i//////////cout<<fac(i);
      fac(i) =y_static=1;  ////////return y
    out:1
i=2: y_static=y_static(1)*i//////////y=fac(i);
             =2
     y_for=y_static=2;///////////return y
    ystatic=y_static(2)*i//////////cout<<fac(i);
          =4;
    fac(i)=y_static=4;/////////return y
    out:4
      
i=3: y_static=y_static(4)*i//////////y=fac(i);
             =12
     y_for=y_static=12;//////////////return y;
    y_static=y_static(12)*i;////////////////////cout<<fac(i);
            =36;
      fac(i)=y_static=36;///////////return y;
    out:36
 i=4:  y_static=y_static(36)*i;//////////y=fac(i);
               =144;
      y_for=y_static=144;///////////return y;
    y_static=y_static(144)*i//////////cout<<fac(i);
            =576;
   fac(i)=y_static=576;/////////return y;
       out:576
     
i=5: y_static=y_static(576)*i///////y=fac(i);
            =2880
     y_for=y_static=2880;//////////return y;
     y_static=y_static(2880)*i///////////////////cout<<fac(i);
            =14400
    fac(i)=y_static=14400;//////////return y;
     out:14400
   其中y_for指 for 内的临时变量y;y_static指fac函数中的静态变量y;括号里的数字指变量当时的值;out指输出的数。
2012-10-10 20:47
oncoldrain
Rank: 2
等 级:论坛游民
威 望:1
帖 子:11
专家分:36
注 册:2012-10-11
收藏
得分:10 
那是因为 你一个for 循环 运行了两次fac(i);  
y=fac(i); 这里一次
cout<<fac(i)<<endl 这里又一次

你把前面那个y=fac(i);注释掉就正常了

57818点net
2012-10-11 00:34
wluhao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-9-25
收藏
得分:0 
回复 2楼 风之子MIKEY
谢谢
2012-10-11 13:22
wluhao
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2012-9-25
收藏
得分:0 
回复 3楼 oncoldrain
多谢
2012-10-11 13:28
快速回复:c++程序题相关问题
数据加载中...
 
   



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

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