首页>计算机>软件水平考试>复习指导>正文
2010年程序员考试笔记(六)

www.zige365.com 2010-7-1 18:09:19 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
       今天终于都讲到C语言比较后的范围了,"函数"说是C语言的一切真的没错(可能有吧,我不知道)。很多书上都说着函数是C语言根本,就是说函数是构成C语言的。看以下这个程序:
  main()
  {
  printf("Hello World");
  }
  main()就是C语言里最特殊的一个函数,是构成整个程序的关键。在C编译器里首先就是要找出这个主函数才开始执行编译,好了,说了一些书上原来的东西。现在我们就来看看C语言里的函数究竟是怎么的,如果我们从基础的说起也没有什么意思。那么我们就从函数的另一个特点说起,"递归函数"相信很多人都知道这个吧,看过老潭的教程应该都知道他经典的第一个递归程序吧:
  int abc(int n)
  {
  int s;
  if(n >1) s= n*abc(n-1);
  else s=1;
  return (s);
  }
  从这个源程序很容易就看出有一个同自己名字的函数在里面,所以以后我们看到一个函数里面调用自己就是递归函数了。而且我们看一个递归函数就主要就是看它是否一个返回的条件,就好像一条又黑又深的山洞,我们前去探险如果往到底就一定要回头,就算是更深的也要返回啊!所以我们判定一个递归函数是否成立也常常是看它的返回条件。至于上面的那个源程序我也不想多说了,应该大家也看得明白。
  这里就看看另一个利用递归函数做的题目吧,就是诺汉塔(老潭的书上也是有的)。
  #include
  void move(char x,char y)
  {
  printf("%c-->%c\n",x,y);
  }
  void hanoi (int n,char one ,char two,char three)
  {
  if(n==1) move (one ,three);
  else
  {
  hanoi (n-1,one,three,two);
  move(one,three);
  hanoi(n-1,two,one,three);
  }
  }
  main()
  {
  int m;
  printf("input the number of diskes:");
  scanf("%d",&m);
  printf("the step to moving %3d diskes:\n",m);
  hanoi(m,'A','B','C');
  }
  /*运行情况如下:
  input the number of diskes:3 回车
  the step to moving 3 diskes:
  A-->C
  A-->B
  C-->B
  A-->C
  B-->A
  B-->C
  A-->C
  书上说hanoi(n-1,one,three,two);是把"one"上的n-1个往"two"上移,接着move(one,three);然后是hanoi(n-1,two,one,three)即把"two"上的n-1个往"three"上移;
  |h(2,1,3,2)|h(1,1,2,3)=>move(1,3) move(3,2) move(2,1) move(1,3) j)
  {
  int k=1,i=2,j=3;
  pirntf("%d\n",i*3);
  printf("%d\n",j*10);
  }
  printf("%d",k);
  }
我要投稿 新闻来源: 编辑: 作者:
相关新闻