易截截图软件、单文件、免安装、纯绿色、仅160KB

c程序设计语言官方题解版勘误1

#include <stdio.h>
#define MAXHIST 15
#define MAXWORD 11
#define IN  1
#define OUT  0
//打印输入中单词长度的水平方向直方图,
void main()
{
 int c, i, nc, state;
 int len;     //length of each bar
 int maxvalue;    //maximum value for wl[]
 int ovflow;     //number of overflow words
 int wl[MAXWORD];   //word length count
 
 state = OUT;
 nc = 0;                     //number of chars in a word
 ovflow = 0;
 for (i = 0; i < MAXWORD; ++i)//数组初始化
  wl[i] = 0;
 
 
 while((c = getchar()) != EOF){
  if (c == ' ' || c == '\n' || c == '\t'){
   state = OUT;
   if(nc > 0)
    if(nc < MAXWORD)
     ++wl[nc];
    else
     ++ovflow;
   nc = 0;
  }else if (state == OUT){
   state = IN;
   nc = 1;
  }else
   ++nc;
 }
 
  maxvalue = 0;
 for (i = 1; i < MAXWORD; ++i)
  if (wl[i] > maxvalue)
   maxvalue = wl[i];
  
 for (i = 1; i < MAXWORD; ++i){
  printf("%5d - %d : ",i, wl[i]);
  if(wl[i] > 0) {
     if((len * wl[i] * MAXHIST / maxvalue) <= 0)
    len = wl[i];//书上此处本来为len = 1
  }else
   len = 0;
  while (len > 0){
   putchar('*');
   --len;
  }
  putchar('\n');
 }
 if (ovflow > 0)
  printf("There are %d words >= %d\n", ovflow, MAXWORD);
  }


相关文档:

UNIX下C编程问题

上学期间基本上都在windows下编程,就是学了一点LINUX,也是一些基本操作,在LINUX下编程几乎没有过,上班后都是在UNIX下的开发,突然之间有点感觉自己无处下手,感觉不会了,组长让我编一个程序,我想了半天在网上查了半天,有点思路了,在编译时确实错误连连,感觉都很有压力,但我会慢慢习惯的,我相信自己。
问题:
1 ......

标准C函数之 getchar

getchar函数是定义在 stdio.h 文件中的一个输入函数。它从标准输入设备(一般是键盘)中读取一个字符。
在实际工作中,它是这样完成的:
键盘输入到计算机中的字符并不是立刻送到内存中指定位置,而是会首先缓存到一个缓冲区中。这个是计算机为了弥补不同硬件之间速度差距,而惯用的伎俩。
当在程序中第一次调用 getchar ......

综合运用C语言指针强制转换和回调函数


  
在这个例子里,回调函数比较两个值。查找函数向比较函数传递两个指向需要进行比较的值的指针,并检查比较函数的返回值。例如:零表示相等的值,现在查找函
数就与类型无关,因为它本身并不执行实际的比较。确实,调用者必须编写必需的比较函数,但这样做是很容易的,因为调用者知道链表中所包含的值的类型 ......

一个Linux下C线程池的实现

from:邹鑫的专栏
    什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。
  &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号