事无巨细,代码亦然
重读C++Primer(第四版,李师贤等译),做第六章的习题6.9。侯捷先生出了C++Primer3rd的习题集,于是对照看看。惭愧至极,事无巨细尤其是代码,大家编程,极小的细节如命名,输出等都考虑等令人惊叹。并且jjhou在习题6.9中体现出的及其严密的逻辑也是让我…
于是,将习题6.9的代码贴出来(jjhou),程序在vc6.0中编译通过。
习题6.9:修改元音统计程序使其可以统计以下双字符序列出现的次数:ff、fl以及fi
完整代码:
#include<iostream>
#include<cctype>
using namespace std;
int main()
{
char ch;
int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0,
blankCnt = 0, tabCnt = 0, newlineCnt = 0,
ffCnt = 0, flCnt = 0, fiCnt = 0,
consonantCnt = 0;
while( cin.get(ch) )
{
switch( ch )
{
case 'a': case 'A':
++aCnt;
break;
case 'e': case 'E':
++eCnt;
break;
case 'i': case 'I':
++iCnt;
break;
case 'o': case 'O':
++oCnt;
break;
case 'u': case 'U':
++uCnt;
break;
case ' ':
++blankCnt;
break;
case '/t':
++tabCnt;
break;
case '/n':
++newlineCnt;
break;
case 'f':
++consonantCnt;
cin.get(ch);
switch(ch)
{
case 'f':
++consonantCnt;
++ffCnt;
break;
case 'l':
++consonantCnt;
++flCnt;
break;
case 'i':
++iCnt;
++fiCnt;
break;
default:
cin.putback(ch);
break;
}
break;
default:
if( isalpha(ch) )
++consonantCnt;
break;
}
}
cout << "vowel a:" << aCnt << endl
<< "vowel e:" << eCnt << endl
<< "vowel i:" << iCnt << endl
<< "vowel o:" << oCnt << endl
<< "vowel u:" << uCnt << endl
<< "consonant:" << consonantCnt << endl
<< "ff:" << ffCnt << endl
<< "fl:" << flCnt << endl
<< "fi:" << fiCnt << endl
<< "blan:" << blankCnt << endl
<< "tab:" << tabCnt << endl
<< "newline:" << newlineCnt << endl;
return 0;
}