第十节:while语句

循环结构之while、do...while语句

1、统计正数

输入若干整数,以0结尾,统计其中有多少个正整数。 输入: 一行若干整数,最后一个为0。 输出: 一行一个整数,表示输入的数据中正整数的个数。 样例输入: 3 6 -3 2 0 样例输出: 3

2、投资收益

小华在去年赚了一大笔钱。他想把这些钱用于投资,并对自己能的到得到多少收益感到好奇。已知投资的年利率为r(0~20之间的整数),小华现有m元钱。他想知道投资多少年后,他的钱将会超过y元。 输入: 一行三个整数r、m和y,相邻两个整数之间用一个空格隔开。m为100~1,000,000之间的整数。 输出: 一行一个整数,即要投资的年数。保证答案的范围在1~400之间。 样例输入: 5 5000 6077 样例输出: 4

3、人口增长问题

假设目前的世界人口有x亿,按照每年0.1%的增长速度,n年后将有多少人? 输入: 一行两个正整数x和n,之间有一个空格。其中,1<=x<=100,1<=n<=100。 输出: 一行一个数,表示答案。以亿为单位,保留到小数点后4位。 样例输入: 13 10 样例输出: 13.1306

4、斐波那契数列

斐波那契数列是指这样的数列:第一个数和第二个数都为1,接下来每个数都等于前面2个数之和。编程输入一个正整数k,输出斐波那契数列第k个数。 输入: 一行一个正整数k,1<=k<=46。 输出: 一行一个正整数,表示斐波那契数列第k个数的大小。 样例输入: 19 样例输出: 4181

5、分离整数的各个数

给定一个整数n(1<=n<=100,000,000),要求从个位开始分离出它的每一位数字。从各个位开始按照从低位到高位的顺序依次输出每一位数字。 输入: 一个整数,整数在1~100,000,000之间。 输出: 从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。 样例输入: 123 样例输出: 3 2 1

6、数字反转

给定一个整数,请将该数各位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不为零,例如输入-380,反转后得到的新数为-83。 输入: 一行,一个整数n(-1,000,000,000<=n<=1,000,000,000)。 输出: 一行,一个整数,表示反转后的新数。 样例输入 #1: 123 样例输入 #2: -380 样例输出 #1: 321 样例输出 #2: -83

7、级数求和

已知:Sn=1+1/2+1/3+...+1/n。显然对于任意一个整数k,当n足够大的时候,Sn大于k。现给出一个整数k(1<=k<=15),要求计算出一个最小的n,使得Sn>k。 输入: 一个整数k(1<=k<=15)。 输出: 一个整数n。 样例输入: 1 样例输出: 2

8、角谷猜想

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如:假定初始整数为5,计算过程分别为16,8,4,2,1。程序要求输入一个整数,将经过处理得到1的过程输出来。 输入: 一个正整数n(n<=2,000,000)。 输出: 从输入整数到1的步骤,每一步为一行,每一步中描述计算过程。最后一行输出“End”。如果输入为1,直接输出“End”。 样例输入: 5 样例输出: 5*3+1=16 16/2=8 8/2=4 4/2=2 2/2=1 End

9、球弹跳高度的计算

一个球从某一高度h落下(单位:米),每次落地后反弹回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少米?第10次反弹多高? 输入: 输入一个整数h,表示球的初始高度。 输出: 第1行:到1球第10次落地时,一共经过的米数; 第2行:第10次弹跳的高度。 注意:结果可能是实数,结果用double类型保存。 提示:输出时不需要对精度特殊控制,用cout<<ANSWER,或者printf(“%g”,ANSWER)即可。 样例输入: 20 样例输出: 59.9219 0.0195312

10、含k个3的数

输入两个正整数m和k,其中1<m<100000,1<k<5,判断m能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。例如,输入:43833 3,满足条件,输出YES。如果输入:39331 3,尽管有3个3,但不能被19整除,也不满足条件,应输出NO。 输入: m和k的值,中间用单个空格隔开。 输出: 满足条件时输出YES,不满足时输出NO。 样例输入: 43833 3 样例输出: YES

11、不说脏话

有一天小明说脏话时被老师听到了,结果被罚在黑板上写n遍"I don't say swear words!"。 输入: 输入只有一行,其中含有一个正整数n(1<=n<=10),代表被罚写的次数。 输出: 输出n行"I don't say swear words!"。 样例输入: 2 样例输出: I don't say swear words! I don't say swear words!

12、26个兄弟姐妹

26个字母26枝花,26个兄弟姐妹是一家,大写字母与小写字母不分家。试编写一个程序,按顺序输出26个小写英文字母,再按逆序输出26个大写字母。 输入: 无。 输出: 2行,第一行按顺序输出26个小写英文字母。第二行按逆序输出26个大写字母。 样例输入: 无。 样例输出: a b c d e f g h i j k l m n o p q r s t u v w x y z Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

13、输出奇偶数之和

利用while循环,分别输出1~n之间的所有奇数的和、偶数的和。 输入: 输入n,1<=n<=100。 输出: 输出为一行,两个数(用一个空格隔开),偶数之和与奇数之和。 样例输入: 10 样例输出: 30 25

14、订餐时间

小明在组织高中同学的聚会。现在他要从家里面出发,按照顺序去n家火锅店看一下哪家更合适进行大规模的聚餐。当从第n家火锅店离开后,他会立刻决定聚餐的地点。现在他想知道从家里出发到第n家火锅店离开总共花了多少时间(忽略掉他在火锅店里面停留的时间)。 输入: 第一行一个整数n(1<=n<=1000)。 第二行n个用空格分隔的整数a1(1<=a1<=10^3),其中第一个整数是小明家到第一家火锅店需要花费的时间;然后第i个整数是第i-1家火锅店到第i家火锅店需要花的时间。 输入的所有数都是正整数且满足x<=n。

输出: 一个整数,表示最后总共花了多少时间。 样例输入: 4 1 2 3 4 样例输出: 10