标题:c语言程序不懂求解!!!!
取消只看楼主
yzz91
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2012-11-13
结帖率:100%
已结贴  问题点数:10 回复次数:3 
c语言程序不懂求解!!!!
#include <stdio.h>
void func ();
int a=1,j=2;
main()
{ int i=2;
  func();
  printf("a=%d,i=%d,j=%d",a,i,j);
  }
  void func()
  {
  int n,i=5;
  printf("a=%d,i=%d\n",a,--i);
  i++;
  a++;
  if(a<4)
    func();
    a--;
    j+=3;
    printf("a=%d,j=%d\n",a,j);
  }
运行结果是:a=1,i=4
           a=2,i=4
           a=3,i=4
           a=3,j=5
           a=2,j=8
           a=1,j=11
           a=1,i=2,j=11
a=2,j=8   a=1,j=11 这两个答案怎么来的??a=3,j=5后面的应该是a=1,i=2,j=11啊!!
搜索更多相关主题的帖子: void include 
2013-03-12 14:04
yzz91
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2012-11-13
得分:0 
func()函数中自己调用func()函数三次:a=1时调用  func()(命名为第1个),在  func()(第1个)  中,a=2 ,所以再调用 func()(命名为第2个),在  func()(第2个)中a=3,所以再调用  func()(命名为第3个),在func()(第3个)函数中,先输出a,i,然后i++;a++  ,得到i=5,a=4,下一步不满足if语句,执行a--;j+=3;输出a=3,j=5;然后这里是重点:输出结束后返回上一个func()(第2个)函数,在这个函数中,原本运行到if语句时暂停,调用了func()(第3个),而func()(第3个)运行结束,返回func()(第2个)后接着运行a--;j+=3,所以输出a=2,j=8;然后返回func()(第1个) 函数,接着运行a--;j+=3;得到a=1,j=11,最后返回main函数。。。。
2013-03-12 19:57
yzz91
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2012-11-13
得分:0 
自己想了半天才懂的。。。
2013-03-12 20:00
yzz91
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2012-11-13
得分:0 
10楼正解!!!自己意会意会就了然了!
2013-03-12 22:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-400534-1-1.html




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

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