信奥之路-C++第6课作业
1. 数据统计
【问题描述】
输入N个整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。(1<=N<=1000)
【样例输入】
8
2 8 3 5 1 7 3 6
【样例输出】
1 8 4.375
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n, m, sum = 0, min, max, k;
cin >> n;
k=n;
cin >> m;
min = max = sum = m;
while(n-1>0){
cin >> m;
sum += m;
if(min>m){
min=m;
}
if(max<m){
max=m;
}
n--;
}
cout << min << " " << max << " ";
cout << fixed << setprecision(3) << (double)sum/k << endl;
return 0;
}
2. 角谷猜想
【问题描述】
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘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
#include<iostream>
using namespace std;
int main(){
long long int n;
cin>>n;
while(n>1){
if(n%2){
n=3*n+1;
cout<<(n-1)/3<<"*3+1="<<n<<endl;
}else{
n=n/2;
cout<<2*n<<"/2="<<n<<endl;
}
}
cout<<"End"<<endl;
return 0;
}
1. 小玉游泳
【问题描述】
小玉开心地在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游2米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道,如果要游到距离x米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式:输入一个数字(不一定是整数,小于100m),表示要游的目标距离。
输出格式:输出一个整数,表示小玉一共需要游多少步。
【样例输入】
4.3
【样例输出】
3
#include <iostream>
using namespace std;
int main(){
double m, n, l=2, step=0;
cin >> m;
while(n<m){
step++;
n+=l;
l*=0.98;
}
cout << step << endl;
return 0;
}
2. 球弹跳高度的计算
【问题描述】
一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?
输入:输入一个整数h,表示球的初始高度。
输出:输出包含两行:
第1行:到球第10次落地时,一共经过的米数。
第2行:第10次弹跳的高度。
注意:结果可能是实数,结果用double类型保存。
【样例输入】
20
【样例输出】
59.9219
0.0195312
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double h, sum, n=10;
cin >> h;
sum=h;
while(n-1>0){
sum+=h;
h/=2;
n--;
}
cout << fixed << setprecision(4) << sum << endl;
cout << fixed << setprecision(4) << h/2 << endl;
return 0;
}
//思路:球第一次落地经过h,然后弹起高度为二分之一h,
//弹起再落地所经过的路径还是h
3. 金币
【问题描述】
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
输入:一个整数(范围1到10000),表示天数。
输出:骑士获得的金币数。
【样例输入】
6
【样例输出】
14
作者: 王春天 出处: http://www.cnblogs.com/spring_wang/ Email: spring_best@yeah.net QQ交流:903639067
QQ群:322581894 关于作者: 大连天翼信息科技有限公司 技术总监。 SNF快速开发平台 创始人。应用平台架构师、IT规划咨询专家、业务流程设计专家。 专注于快速开发平台的开发、代码生成器。同时专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,精通DotNet系列技术Vue、.NetCore、MVC、Webapi、C#、WinForm等,DB(SqlServer、Oracle等)技术,移动端开发。熟悉Java、VB及PB开发语言。在面向对象、面向服务以及数据库领域有一定的造诣。现从事项目实施、开发、架构等工作。并从事用友软件产品U8、U9、PLM 客开工作。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。


浙公网安备 33010602011771号