头歌C语言实验 练习6:循环结构II
第1关:分数序列和
问题描述
有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,…… ,求这个分数序列的前n项之和。
输入
输入只有一个非负整数n(0≤n≤500)。
输出
按照“分数序列前x项之和为:y”的格式输出前n项的和,其中x为项数n,y是前n项之和,保留4位小数,冒号是中文的冒号。
输入示例
99
输出示例
分数序列前99项之和为:160.4849
提示
为避免溢出错误,在程序中的中间变量尽可能都使用double类型。
1 |
|
第2关:奖金发放
问题描述
企业每个月发放的奖金根据当月利润进行提成。利润I低于或等于10万元(I≤100000)时,奖金可提10%;利润高于10万元,低于20万元(100000<I≤200000)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;200000<I≤400000时,低于20万元的部分仍按上述办法提成(下同)。高于20万的部分按5%提成;400000<I≤600000时,高于40万元的部分按3%提成;600000<I≤1000000时,高于60万元的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。
聪明的你能编写一段程序,根据一年中每个月的利润,计算并输出这一年内的应发奖金总额吗?
输入
输入数据一共有12行,每一行都是一个正整数,其中第i(1≤i≤12)行的整数表示第i个月的利润(以元为单位),其中每个整数都不超过2000000。
输出
输出只有一行,即该企业在这一年内应该发放的奖金总额(以元为单位),要求精确到小数点后两位。
输入示例
400000
106000
50000
580000
620000
1030000
1700000
122000
640000
76000
60000
540000
输出示例
287000.00
提示
为保证数据精度准确无误,涉及到实数的变量请使用double类型。
输入示例中,针对每个月的利润,对应每月计算的奖金是:
27500.00
10450.00
5000.00
32900.00
33800.00
39800.00
46500.00
11650.00
34100.00
7600.00
6000.00
31700.00
1 |
|
第3关:成绩统计 II
问题描述
输入若干个百分制成绩,直到输入负数时为止。
请编写一段程序,统计出这些成绩的平均成绩和其中的不及格人数。
输入
若干个用空格分开的浮点数,最后是一个负数。除最后的负数外,之前的每个浮点数代表一个百分制成绩。
输出
输出共包括两行:
第一行输出全班同学的平均成绩,保留2位小数;
第二行输出不及格人数。
输出格式参照输出示例,注意其中的冒号是中文冒号。
输入示例
85.6 83.47 45.8 96.3 100 37.4 68.9 96.6 88 84.6 94.7 78.8 -2.3
输出示例
平均成绩:80.01分
不及格人数:2人
1 |
|
第4关:计算圆周率 I
问题描述
众所周知,可以使用级数展开公式近似计算圆周率π,下面的这个公式可以算是其中最简单的一个:
π/4=1-1/3+1/5-1/7+1/9-…
根据给定的正整数 n 使用上述公式通过计算前n项的和,近似计算圆周率π的值。
输入
一个正整数n。
输出
一个浮点数,表示圆周率π的近似值,精确到小数点后8位。
输入示例
5
输出示例
3.33968254
提示
为保证数据精度准确无误,涉及到实数的变量请使用double类型。
1 |
|
第5关:最大公约数和最小公倍数
问题描述
最大公约数
也称为最大公因数或最大公因子,指两个或多个整数共有约数中最大的一个。
求最大公约数的方法有很多,现列举最常用的两种方法。
辗转相除法 设有两整数 a 和 b ,则计算步骤如下:
① 计算a和b的余数c;
② 若c为0,则b即为两数的最大公约数;
③ 若c不为0,则令a = b,b = c,再重复执行步骤①。
例如:求27和15的最大公约数过程为:
求27和15的余数为12
求15和12的余数为3
求12和3的余数为0
因此,3即为27和15的最大公约数。
2. 相减法
设有两整数 a 和 b ,则计算步骤如下:
① 若a大于b,则令a = a - b;
② 若a小于b,则令b = b - a;
③ 若a与b相等,则a(或b)即为两数的最大公约数;
④ 若a与b不相等,则重复执行步骤 ①。
例如:求27和15的最大公约数过程为:
(27 > 15)27 - 15 = 12
(12 < 15)15 - 12 = 3
(12 > 3)12 - 3 = 9
(9 > 3)9 - 3 = 6
(6 > 3)6 – 3 = 3
因为a和b的值都为3,因此3即为27和15的最大公约数。
最小公倍数
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。
求最小公倍数算法:最小公倍数 = 两整数的乘积 ÷ 最大公约数。
请根据以上算法描述编写一段程序,计算并输出两个任意的正整数的最大公约数与最小公倍数。
输入
用空格分开的两个正整数a和b。
输出
输出用空格分开的两个正整数,第一个是最大公约数,第二个是最小公倍数。
输入示例
66 33
输出示例
33 66
下面有两种方法,任选其一即可
辗转相除法
1 |
|
相减法
1 |
|