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

#include <iostream>
using namespace std;
int main(){
    int n, sum=0;
    int i=0;
    cin >> n;
    while(n>0){
        i++;
        sum+=i*i;
        n-=i;    
    }
    sum += n*i;
    cout << sum << endl;
    return 0;
}