第五章
1. case
标签必须是整型常量表达式
5.3用逗号运算符重写1.4.1节的while
循环,使它不再需要块,观察改写之后的代码可读性提高了还是降低了。
int i = 50, sum = 0; while (i <=100) sum += i, ++i;
5.13下面显示的每个程序都含有一个常见的编码错误,指出错误在哪里,然后修改它们。
(a) unsigned aCnt = 0, eCnt = 0, iouCnt = 0; char ch = next_text(); switch (ch) { case 'a': aCnt++; case 'e': eCnt++; default: iouCnt++; } (b) unsigned index = some_value(); switch (index) { case 1: int ix = get_value(); ivec[ ix ] = index; 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: oddcnt++; break; case 2, 4, 6, 8, 10: evencnt++; break; } (d) unsigned ival=512, jval=1024, kval=4096; unsigned bufsize; unsigned swt = get_bufCnt(); switch(swt) { case ival: bufsize = ival * sizeof(int); break; case jval: bufsize = jval * sizeof(int); break; case kval: bufsize = kval * sizeof(int); break; }
(1)缺break
(2)default中没有i的定义
(3)case 1: case 3: case 5: case 7: case 9:
(4)case
标签必须是整型常量表达式const unsigned ival=512, jval=1024, kval=4096;
5.14编写一段程序,从标准输入中读取若干string
对象并查找连续重复出现的单词
,所谓连续重复出现的意思是:一个单词后面紧跟着这个单词本身。要求记录连续重复出现的最大次数以及对应的单词。
如果这样的单词存在,输出重复出现的最大次数;如果不存在,输出一条信息说明任何单词都没有连续出现过。 例如:如果输入是:
using namespace std; int main() { string word; int num = 1, lag = 0; vector<string> v; while (cin >> word) { v.push_back(word); } if(v.size() == 1 || v.size() == 0) cout << "enter enough number!" << endl; else{ for(int i = 1; i < v.size(); ++i) { if(v[i] == v[i - 1]) { ++num; if(num > lag) lag = num; } else { num = 1; } } } cout << lag << endl; }