书中本章的例子的目的是来数每一个数(0-9),空格字符(空格,制表符,换行符) 以及 其它所有字符分别出现的次数。
例子程序代码如下:

#include <stdio.h> 

/* count digits, white space, others */
main() {
	int c, i, nwhite, nother; 
	int ndigit[10]; 
	
	nwhite = nother = 0; 
	for (i=0; i<10; i++) {
		ndigit[i]=0; 
	}
	
	while ((c=getchar()) != EOF) {
		if (c>='0' && c<='9') 
			++ndigit[c-'0']; 
		else if (c == ' ' || c == '\n' || c == '\t')
			++nwhite; 
		else 
			++nother; 
			
		printf("digits ="); 
		for (i=0; i<10; ++i) 
			printf(" %d", ndigit[i]); 
		printf(", white space = %d, other = %d\n", nwhite, nother); 
	}
}

认真感受下应该就可以懂了。

书后练习题1-13:

Write a program to print a histogram of the lengths words in its input. It is easy to draw the histogram with the bars horizontal; a vertical orientation is more challenging.

我写的版本:

/* Histogram to prints the lengths of the words --- Horizontal */ 
#include <stdio.h> 

#define INSIDE 1 // Inside a word
#define OUTSIDE 0 // Outside a word

main() {
	int c; // Variable that receives the value from getchar()
	int length = 0; // Variable that counts the length of a word
	int state = OUTSIDE; // Variable that helps us to know the status
	
	while ((c = getchar()) != EOF) {
		// Check, if we are in a word now or not. 
		if ((c==' ')||(c=='\n')||(c=='\t')) {
			// We are not in a word anymore, we should print the information of the word to the console. 
			if (state == INSIDE) {
				// Print Information
				putchar('\t'); 
				int i; 
				for (i=0; i<length; i++) {
					putchar(219); 
				}
				putchar('\n'); 
				
				// Initialize the Variables
				state = OUTSIDE; 
				length = 0; 
			}			
		} else {
			// We are in a word. 
			if (state == OUTSIDE) state = INSIDE; 
			putchar(c); 
			length++; 
		}
	}	
}

上面这个是横向版的,纵向版的还得自己写个List,有点懒, 不写了 就这样。

书后练习题1-14:

Write a program to print a histogram of the frequencies of different characters in its input.

我写的版本:

/* Histogram that prints the frequencies of different characters in its input */
#include <stdio.h> 

main() {
	int c; // Variable that receives the return value of the function getchar()
	int characters[128]; // An array that holds the numbers of occurrence of the characters. 

	// Initialize
	int i; 
	for (i=0; i<128; i++) {
		characters[i] = 0; 
	}
	
	while ((c=getchar()) != EOF) {
		if (c=='\n') {
			characters['\n']++; 
			for (i=0; i<128; i++) {
				printf("ASCII Dec Number: %d Frequencies: %d\n", i, characters[i]); 
			}
		} else {
			characters[c]++; 
		}
	}
}

参考: 《The C Programming Language》- Chapter 1.6