1. 程式人生 > >一篇文章有若干行,以空行作為輸入結束的條件。統計一篇文章中單詞the(不管大小寫,單詞the是由空格隔開的)的個數。

一篇文章有若干行,以空行作為輸入結束的條件。統計一篇文章中單詞the(不管大小寫,單詞the是由空格隔開的)的個數。

#include <iostream>
using namespace std;

int k = 0;
int n = 0;
int main() {
  char c;  
  char a[1000];
  do
  {
    cin.get(c);

    if(c>='A'&&c<='Z'){  //將大寫轉換為小寫

      c=c+32;

    }

    a[k++] = c; //把字元放入陣列中

  } while (c != '\n');


  k = k - 1; //  k = 有效字元長度
  //cout << k << endl;

  for (int i = 0; i <= k - 1; i++)
  {
    if (a[i] == 't' && a[i+1] == 'h' && a[i+2] == 'e' && a[3] == ' ' && k >= 4 && i == 0) { //如果k大於等於4 判斷頭三個是否構成單詞the
      n++;
    }
    if (i >= 1 && k>=5 && a[i - 1] == ' ' && a[i] == 't' && a[i + 1] == 'h' && a[i + 2] == 'e' && a[i + 3] == ' ') { //如果k大於等於5 並要求 i>=1 出現空格the空格 n++
      n++;
    }
    if (i+2 == k-1 && a[i-1]==' ' && a[i] == 't' && a[i + 1] == 'h' && a[i + 2] == 'e') { //當i執行到倒數第三個 判斷最後三個字母是否構成the
      n++;
    }
    if (k == 3 && a[i] == 't' && a[i+1] == 'h' && a[i+2] == 'e' && i == 0) //如果k==3 看這個三個字母是否構成the
    {
      n++;
    }
  }

cout << n;
}