20250225-Rain

1. 判断

/*
1.
设计一个程序, 输入a,b,c三个整数, 输出最大的数.
(MIN_INT < a,b,c < MAX_INT)
*/

#include <iostream>

using namespace std;

int m_max(int x, int y);

int main(void)
{
    int a, b, c;
    int res;
    cout << "Please input 'a' 'b' 'c'(space to separate): " << endl;
    cin >> a >> b >> c;

    // 依次比较最大值
    res = m_max(m_max(a, b), c);
    cout << "The max number is:" << res << endl;
    return 0;
}

// 可以自定义比较函数
int m_max(int x, int y)
{
    return x > y ? x : y;
}

也可以使用 C++ 内置的 max() 函数,效果一致

...

int main(void)
{
    int a, b, c;
    int res;
    cout << "Please input 'a' 'b' 'c'(space to separate): " << endl;
    cin >> a >> b >> c;
    res = max(max(a, b), c);
    cout << "The max number is:" << res << endl;
    return 0;
}

2. 嵌套循环

/*
2.
求素数
设计一个程序,  输入N, 输出0~N之间的所有素数
(0<N<MAX_INT)
*/

#include <iostream>

using namespace std;

int main(void)
{
    int N;
    cout << "Please input 'N': " << endl;
    cin >> N;

    if (N <= 0)
    {
        // 如若不符合题目范围:报错、退出程序
        cout << "Error!" << endl;
        return 0;
    }

    // 假设 1 不是素数
    for(int i = 2; i <= N; i++)
    {
        // 素数标志,初始化为 1
        int is_prime = 1;

        // 从 2 开始,依次作为除数,求余
        // 此处如果 i 是素数,它一定有一个小于或等于其平方根的因数,只需要判断有没有最小的的因数即可
        for(int j = 2; j * j < i; j++)
        {
            // 若可以整除,余数为 0,则素数标志变更为 0
            if(i % j == 0)
            {
                is_prime = 0;
                break;
            }
        }

        // 如果标志位未改变,输出结果
        if(is_prime == 1)
        {
            cout << i << endl;
        }
    }
    return 0;
}

3. 简单循环

注意距离的计算包括 下降距离 和 回弹后上升距离

/*
4.
云海学长为了探究神秘的物理现象, 从高楼抛下一个弹球 但由于高空抛物被警察抓了, 请各位小伙伴完
成他未完成的心愿
小球从某一高度落下,每次落地后反跳回原来高度的一半,再落下。
输入弹球的初始高度M和回弹次数N, 输出弹球第N次回弹后的高度 和达到该高度后所经过的距离(保留两位小
数)
(0<M<2000, 0<N<50)
*/

#include <iostream>
#include <ios>
#include <iomanip>

using namespace std;

int main(void)
{
    double M;
    int N;
    cout << "Please input 'M' 'N'(space to separate): " << endl;
    cin >> M >> N;

    if (M <= 0 || M >= 2000 || N <= 0 || N >= 50)
    {
        // 如若不符合题目范围:报错、退出程序
        cout << "Error!" << endl;
        return 0;
    }
    
    double height = M;
    double distance = 0;

    for(int i = 0; i < N; i++)
    {
        // 下落高度距离
        distance = distance + height;

        height = height / 2;
        // 回弹高度距离
        distance = distance + height;
    }
    
    // 设定输出格式
    cout << fixed << setprecision(2) << "The final height is: " << height << endl;
    cout << fixed << setprecision(2) << "The total distance is: " << distance << endl;
    return 0;
}

Last updated