C++Primer第五版 5.3.2节练习
来源:互联网 发布:网络诈骗法律经验 编辑:程序博客网 时间:2024/06/07 21:02
练习5.9:编写一段程序,使用一系列if语句统计从cin读入的文本中有多少个元音字母。
练习5.10:我们之前实现的统计元音字母的程序存在一个问题:如果元音字母以大写字母形式出现,不会被统计在内。编写一段程序,既统计元音字母的小写形式,也统计大写形式,也就是说,新程序遇到‘a’和‘A’都应该递增aCnt的值,以此类推。
练习5.11:修改统计元音字母的程序,使其也能统计空格,制表符和换行符的数量。
练习5.12:修改统计元音字母的程序,使其能统计以下含有两个字符的字符序列的数量:ff,fl和fi。
答:练习5.9-5.12见云盘程序。
练习5.13:下面显示的每个程序都含有一个常见的编程错误,指出错误在哪里,然后修改它们。
(a). unsigned aCnt = 0, eCnt = 0, iouCnt = 0; char ch = next_text(); switch (ch) { case ‘a’ : aCnt++;//缺少break //break;case ‘e’ : eCnt++;//缺少break //break;default: iouCnt++;//缺少break//break;}(b). unsigned index = some_value(); Switch(index) {case 1: //int ix = get_value(); // 错误:控制流绕过一个显式初始化的变量 //ivec[ ix ] = index; // 错误:控制流绕过一个显式初始化的变量 break;//break; default: ix = ivec.size() – 1; ivec [ ix ] = index;}(c).unsigned evenCnt = 0, oddCnt = 0; int digit = get_num() % 10;switch (digit){ Case 1,3,5,7,9://写法错误 case 1: case 3: case 5: case 7: case 9: oddCnt++;case 2,4,6,8,10://case 2: case 4: case 6: case 8: case 10: evenCnt++; break;}(d). unsigned ival = 512, jval = 1024, kval = 4096;unsigned bufsize;unsigned swt = get_bufCnt();switch(swt){case ival://错误:case标签必须是整型常量表达式。 bufsize = ival * sizeof(int); break;case jval: //错误:case标签必须是整型常量表达式。 bufsize = javl * sizeof(int);case kval: //错误:case标签必须是整型常量表达式。 bufsize = kval * sizeof(int); break; }
练习5.9
#include <iostream>using namespace std;int main(){ unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, totalCnt = 0; char ch; while (cin >> ch) { if (ch == 'a') ++aCnt; if (ch == 'e') ++eCnt; if (ch == 'i') ++iCnt; if (ch == 'o') ++oCnt; if (ch == 'u') ++uCnt; totalCnt = aCnt + eCnt + iCnt + oCnt + uCnt ; } cout << "a:" << aCnt << endl; cout << "e:" << eCnt << endl; cout << "i:" << iCnt << endl; cout << "o:" << oCnt << endl; cout << "u:" << uCnt << endl; cout << "total:" << totalCnt << endl; return 0;}
练习5.10
#include <iostream>using namespace std;int main(){ unsigned aCnt =0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, other = 0, vowelCnt = 0,total = 0; char ch; while (cin >> 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; default: ++other; break; } } vowelCnt = aCnt + eCnt + iCnt + oCnt + uCnt; total = vowelCnt + other; cout << "a:" << aCnt << endl; cout << "e:" << eCnt << endl; cout << "i:" << iCnt << endl; cout << "o:" << oCnt << endl; cout << "other:" << other << endl; cout << "vowelCnt:" << vowelCnt << endl; cout << "total:" << total << endl; return 0;}
练习5.11
#include <iostream>#include <vector>#include <fstream>using namespace std;int main(){ unsigned aCnt =0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, other = 0, vowelCnt = 0,total = 0, space = 0, tableSign = 0, Enter = 0; vector<char> charVector; char ch; //while (cin >> ch && ch != '#') //输入流会掠过,空格,制表符,以及回车 ifstream in("练习5-11.txt"); //这边参考网上的例子,定义一个文件流,在文件同目录下,相应建一个new.txt文件,用于读取文件里的东西 if (!in) { cerr << "oh , shit!" << endl; return -1; } while(in.get(ch)) { cout << ch ; charVector.push_back(ch); } cout << endl;//以上打印文件里面的字符 for ( auto i = 0; i != charVector.size(); ++i) { switch (charVector[i]) { 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 ' ': ++space; break; case '\t': ++tableSign; break; case '\n': ++Enter; break; default: ++other; break; } } vowelCnt = aCnt + eCnt + iCnt + oCnt + uCnt; total = vowelCnt + other; cout << "a:" << aCnt << endl; cout << "e:" << eCnt << endl; cout << "i:" << iCnt << endl; cout << "o:" << oCnt << endl; cout << "other:" << other << endl; cout << "vowelCnt:" << vowelCnt << endl; cout << "space:" << space << endl; cout << "tableSign:" << tableSign << endl; cout << "Enter:" << Enter << endl; cout << "total:" << total << endl; return 0;} 练习5-11.txta b c d e f g h i j k l m n o p q
练习5.12
#include <iostream>#include <vector>#include <fstream>using namespace std;int main(){ unsigned aCnt =0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0, other = 0, vowelCnt = 0,total = 0, space = 0, tableSign = 0, Enter = 0, ffCnt = 0, flCnt = 0, fiCnt = 0; vector<char> charVector; char ch; //while (cin >> ch && ch != '#') 输入流会掠过,空格,制表符,以及回车 //这边参考网上的例子,定义一个文件流,在文件同目录下,相应建一个new.txt文件,用于读取文件里的东西 if (!in) { cerr << "oh , shit!" << endl; return -1; } while(in.get(ch)) { cout << ch ; charVector.push_back(ch); } cout << endl;//以上打印文件里面的字符 for ( auto i = 0; i != charVector.size(); ++i) { switch (charVector[i]) { 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 ' ': ++space; break; case '\t': ++tableSign; break; case '\n': ++Enter; break; case 'f': if (charVector[i+1] == 'f') //前一个字符为f,紧接着为ff情况 ++ffCnt; else if (charVector[i+1] == 'l') ++flCnt; else if (charVector[i+1] == 'i') ++fiCnt; //else ;//执行一个空语句,代表上述三种情况之外的,执行一个空语句,无任何结果 break; default: ++other; break; } } vowelCnt = aCnt + eCnt + iCnt + oCnt + uCnt; total = vowelCnt + other; cout << "a:" << aCnt << endl; cout << "e:" << eCnt << endl; cout << "i:" << iCnt << endl; cout << "o:" << oCnt << endl; cout << "other:" << other << endl; cout << "vowelCnt:" << vowelCnt << endl; cout << "space:" << space << endl; cout << "tableSign:" << tableSign << endl; cout << "Enter:" << Enter << endl; cout << "ffCnt:" << ffCnt << endl; cout << "flCnt:" << flCnt << endl; cout << "fiCnt:" << fiCnt << endl; cout << "total:" << total << endl; return 0;}
0 0
- C++Primer第五版 5.3.2节练习
- C++Primer 第五版 1.1节练习
- C++Primer第五版 1.3节练习
- C++Primer第五版 1.6节练习
- C++Primer第五版 2.4节练习
- C++Primer第五版 3.1节练习
- C++Primer第五版 4.2节练习
- C++Primer第五版 4.3节练习
- C++Primer第五版 4.4节练习
- C++Primer第五版 4.6节练习
- C++Primer第五版 4.7节练习
- C++Primer第五版 4.8节练习
- C++Primer第五版 4.9节练习
- C++Primer第五版 4.5节练习
- C++Primer第五版 5.1节练习
- C++Primer第五版 5.2节练习
- C++Primer第五版 6.1节练习
- C++Primer第五版 6.4节练习
- 如何检查 Android 应用的内存使用情况
- 算法系列--Reverse Integer
- java实现大数取模
- 逻辑覆盖
- Maven的HTTP代理设置
- C++Primer第五版 5.3.2节练习
- 大一的acm之路
- java动态规划最大子段和
- Android之单线程下载与多线程下载
- POJ 1577 Falling Leaves 二叉树
- centos install sass
- 将输入字符串中每个单词的首字母变成大写
- 后缀数组模板
- C++开发中指针易错点