7.8:  done 举一个例子说明什么时候应该将形参定义为引用类型。再举一个例子说明什么时候不应该将形参定义为引用。
7.9:  done 将第 7.2.2 节定义的 find_val 函数的形参表中 occurs 的声明修改为非引用参数类型，并重新执行这个程序，该函数的行为发生了什么改变？
7.10: done 下面的程序虽然是合法的，但可用性还不够好，指出并改正该程序的局限：

     bool test(string& s) { return s.empty(); }
7.11: done 何时应将引用形参定义为 const 对象？如果在需要 const 引用时，将形参定义为普通引用，则会出现什么问题？
7.12:  done什么时候应使用指针形参？什么时候就使用引用形参？解释两者的优点和缺点。
7.13:  done 编写程序计算数组元素之和。要求编写函数三次，每次以不同的方法处理数组边界。
7.14:  done 编写程序求 vector<double> 对象中所有元素之和。
7.15:  done 编写一个主函数 main，使用两个值作为实参，并输出它们的和。
05.18 修改 结果 vector里要求放的是指向string对象的指针，而不是string对象本身。
05.19 修改结果  (a)是先取自增前的值，再自增。
05.21 要使用条件操作符来判断。 修改结果
重写 bitset 表达式：使用下标操作符对测验结果进行置位（置 1）和复位（置 0）。

bitset也是支持[]操作符的.
bitset_quiz1[27] = 1;
bitset_quiz1[27] = 0;
7.16:  done 编写程序使之可以接受本节介绍的命令行选项，并输出传递给 main 的实参值。
7.17:  done 什么时候返回引用是正确的？而什么时候返回 const 引用是正确的？
7.18:  done 下面函数存在什么潜在的运行时问题？
7.19:  done 判断下面程序是否合法；如果合法，解释其功能；如果不合法，更正它并解释原因。
7.20:  done 将函数 factorial 重写为迭代函数（即非递归函数）
7.21:  done 如是函数 factorial 的终止条件为：

     if (val != 0)

会出现什么问题？
7.22:  done编写下面函数的原型：

a.  函数名为 compare，有两个形参，都是名为 matrix
的类的引用，返回 bool 类型的值。
b.  函数名为 change_val，返回 vector<int> 类型的
迭代器，有两个形参：一个是 int 型形参，另一
个是 vector<int> 类型的迭代器。
提示：写函数原型时，函数名应当暗示函数的功能。考虑
这个提示会如何影响你用的类型？
7.23:  done 给出下面函数，判断哪些调用是合法的，哪些是不合法的。对于那些不合法的调用，解释原因。