双截棍 C语言版

Posted on 2008年5月05日 16:54
软考室的烟味弥漫 坐满了程序员
室里面的监考官 系分 已三年
出上午试题的老师 练cpu 耍单片机 
硬件功夫最擅长 还会逻辑门三极管 
他们学生我习惯 从小就耳濡目染 
什么软件跟网络我都耍的有摸有样 
什么语言最喜欢 c++面向对象 
想要去英伦美帝 学图灵诺伊曼 
怎么编 怎么编 离散数学是关键 
怎么编 怎么编 数值分析也较难 
怎么编 怎么编 数据结构最重要 
算法不学莫后悔 死的难看 
一段代码写好 一个左子树 右子树 
一句不会递归有危险 不停调用 
一个优秀的库函 一用好多年 拷贝好带身边 
怎么编 怎么编 我学会动态规划 
怎么编怎么编 分支限界的难关 
怎么编怎么编 已被我一脚踢开 
哼 快使用c语言 哼哼哈兮 
快使用c语言 哼哼哈兮 
编程之人切记 np无敌 
是谁在练汇编 背指令集 
快使用c语言 哼哼哈兮 
快使用c语言 哼哼哈兮 
如果我会分治 快速解题 
熟用堆栈队列 系统分析 
快使用c语言 哼 
我用vb描述 哼 
万能的回溯法

exit与return

Posted on 2008年5月02日 20:50

先看俩个程序对比:

程序一:

  1. #include <stdio.h>
  2.  
  3.  
  4. void trangle(int count);
  5.  
  6. int main(void)
  7. {
  8.         trangle(5);
  9.         exit(1);
  10. }
  11.  
  12.  
  13. void trangle(int count)
  14. {
  15.         if(count == 1) {
  16.                 printf("*\n");
  17.                 exit(1);
  18.         }
  19.         trangle(count-1);
  20.         int i;
  21.         for(i = 0; i < count; i++)
  22.                 putchar('*');
  23.         printf("\n");
  24. }
  25.  

程序二:

  1. #include <stdio.h>
  2.  
  3.  
  4. void trangle(int count);
  5.  
  6. int main(void)
  7. {
  8.         trangle(5);
  9.         exit(1);
  10. }
  11.  
  12.  
  13. void trangle(int count)
  14. {
  15.         if(count == 1) {
  16.                 printf("*\n");
  17.                 return;
  18.         }
  19.         trangle(count-1);
  20.         int i;
  21.         for(i = 0; i < count; i++)
  22.                 putchar('*');
  23.         printf("\n");
  24. }
  25.  

俩段程序虽然只改动了17行的输出,然而输出却截然不同,program1输出×,program2输出

总结:由此可见,return是返回调用函数,exit是退出进程.

Program Diary-1

Posted on 2008年5月02日 06:11

打印输入各个字符出现频度的直方图:

  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. #define MAXHIST 15
  5. #define MAXCHAR 128
  6.  
  7. int main(void)
  8. {
  9.         int c, i;
  10.         int len;        /* length of histogram    */
  11.         int maxvalue;   /* max different characters        */
  12.         int cc[MAXCHAR];
  13.  
  14.         for(i = 0; i < MAXCHAR; ++i)
  15.                 cc[i] = 0;
  16.         while((c = getchar()) != EOF)
  17.                 if (c < MAXCHAR)
  18.                         ++cc[c];
  19.         maxvalue = 0;
  20.         for(i = 1; i < MAXCHAR; i++)
  21.                 if (cc[i] > maxvalue)
  22.                         maxvalue = cc[i];
  23.  
  24.         for(i = 1; i < MAXCHAR; ++i){
  25.                 if (isprint(i))
  26.                         printf("%5d - %c - %5d : ", i, i, cc[i]);
  27.                 else
  28.                         printf("%5d -   - %5d : ", i, cc[i]);
  29.                 if (cc[i] > 0) {
  30.                         if ((len = cc[i] * MAXHIST / maxvalue) <= 0)
  31.                                 len = 1;
  32.                 } else
  33.                         len = 0;
  34.                 while (len > 0) {
  35.                         putchar('*');
  36.                         len--;
  37.                 }
  38.                 putchar('\n');
  39.         }
  40.         exit(1);
  41.  
  42. }