首页 > 代码库 > 150128

150128

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.
  1. 对变量赋初值语句nc=nl=nw=0;的赋值顺序是从右往左的,即原语句等同于nc=(nl=(nw=0));
  2. 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 }

 

150128