习题
1.如果你还没有完成本章中的“试一试”,请先完成相关练习。
2.定义一个序列的中值恰好是序列的一半元素在它之前而另一半元素在它之后的数值,修改4.6.3节的程序使其总是能够输出中值。提示:中值并不一定是序列中的元素。
3.输入一组double型数据到一个vector中,假设这些数据是沿着某一条路径的相邻城市间的距离。要求:计算并输出全部距离(所有距离的总和);搜索并输出相邻两个城市间的最小和最大距离;搜索并输出两个相邻城市间的平均距离。
4.编写一个猜数游戏程序。用户给出一个1到100之间的整数,程序通过提问来猜测用户所想的数是什么(例如,“你的数小于50吗?”),程序应该能够用不超过7个问题来确定这个数。提示:使用<和<=运算符以及if-else语句编写程序。
5.实现一个简单的计算器程序。计算器应该能够对两个输入数据实现五种基本数学操作:加、减、乘、除和取模(余数)。程序应该提示用户输入三个参数:两个double型数据和一个表示操作的字符。例如,如果输入参数35.6,24.1和'+',程序将输出“The sum of35.6and24.1is59.7”。在第6章我们将介绍一个更复杂的计算器程序。
6.定义一个能够存储10个字符串的vector,分别是“zero”,“one”,…“nine”。编写一个能够实现数字与其对应拼写进行转换的程序。例如,当输入7的时候输出seven。同时,该程序还能够实现拼写形式到数字形式的转换,例如,当输入seven的时候输出7。
7.修改习题5的“迷你计算器”程序,使程序不但能够接受数字形式的数据,也能够接受拼写形式的数据。
8.有一个古老的故事讲述的是一个皇帝为了感谢国际象棋的发明人,答应这个发明人可以提出自己的赏赐要求。发明人提出的要求是:在棋盘的第一个格子里放1粒米,在第二个格子里放2粒米,第三个格子里放4粒米,依次类推。每次都加倍直到放满棋盘的所有64个格子为止。这个要求听起来很谦虚,但实际上全国所有的米都不够支付这个赏赐。编写程序来计算一下发明人要获得至少1000粒米需要多少个棋盘格子?至少1000000粒米呢?至少1000000000粒米呢?当然,你需要设计一个循环,也许还需要一个整型变量记录当前所处的格子,一个整型变量记录当前格子的米数,一个整型变量记录以前所有格子的米数。建议你在每次循环中都输出所有的变量值,并观察一下会发生什么情况。 ...