P.14单词计数例
#include<stdio.h> #define IN 1 #define OUT 0 /*IN和OUT分别表示在单词内和单词外*/ /*使用define可使程序更明晰,在复杂程序中尤其明显*/ main() { int c,nc=0,nl=0,nw=0,state; //state即单词内、外的状态 /*以上对nc,nl,nw的初始赋值亦可写作‘nc=nl=nw=0’*/ state=OUT; //设初始状态为OUT while((c=getchar())!=EOF) { ++nc; if(c==‘\n‘) ++nl; if(c==‘\t‘||c==‘\n‘||c=‘ ‘) state=OUT; else if(state==OUT) { ++nw; state=IN; } printf("%d %d %d\n",nc,nl,nw); } /*遇到单词外字符state调至OUT等到单词内第一个字符时计数并调至IN*/ }
- PA.
- 对变量赋初值语句nc=nl=nw=0;的赋值顺序是从右往左的,即原语句等同于nc=(nl=(nw=0));
- if-else的两个语句中有且只有一个会被执行
练习:编写一个程序,以每行一个单词的形式打印输出
1 #include<stdio.h> 2 3 #define IN 1 4 #define OUT 2 5 6 main() 7 { 8 int c,state; 9 10 while((c=getchar())!=EOF) 11 { 12 if(c==‘\n‘||c==‘\t‘||c==‘ ‘) 13 { 14 state=OUT; 15 putchar(‘\n‘); 16 } 17 18 else 19 putchar(c); 20 } 21 }
时间: 2024-10-14 11:54:45