📌  相关文章
📜  8级RD沙尔玛–第5章玩数字–练习5.2(1)

📅  最后修改于: 2023-12-03 15:29:13.379000             🧑  作者: Mango

8级RD沙尔玛–第5章玩数字–练习5.2

介绍

本节练习旨在帮助程序员熟练掌握C++中的数据结构和算法知识,进一步提升编码能力。通过完成本节练习,程序员可以学会如何使用函数嵌套实现数据处理,以及掌握C++中的循环嵌套语法。

知识点

本练习需要掌握以下知识点:

  • C++中函数嵌套的用法;
  • C++中循环嵌套语法的用法;
  • 算法设计与实现。
练习内容

练习5.2中要求我们设计一个程序,由用户输入两个正整数A和B,然后计算A和B的最小公倍数和最大公因数,最后输出结果。

程序分析

本题需要通过程序计算两个数的最小公倍数和最大公因数,因此需要使用函数来实现计算。

程序的主要流程如下:

// 1. 定义输入两个数的函数
// 2. 定义计算最大公因数的函数
// 3. 定义计算最小公倍数的函数
// 4. 主程序流程,调用输入函数,计算最小公倍数和最大公因数,输出结果。
代码实现

以下为完整的C++代码实现:

#include<iostream>

using namespace std;

//函数声明
int calcMaxCommDivisor(int, int); //计算最大公因数
int calcMinCommMultiple(int, int); //计算最小公倍数
void inputNumbers(int*, int*); //输入两个正整数

int main()
{
    int num1, num2, maxCommDivisor, minCommMultiple;
    inputNumbers(&num1, &num2); //输入两个正整数

    maxCommDivisor = calcMaxCommDivisor(num1, num2); //计算最大公约数
    minCommMultiple = calcMinCommMultiple(num1, num2); //计算最小公倍数

    //输出结果
    cout << "两个数的最小公倍数为:" << minCommMultiple << endl;
    cout << "两个数的最大公因数为:" << maxCommDivisor << endl;

    return 0;
}

//输入两个正整数
void inputNumbers(int* a, int* b)
{
    cout << "请输入第1个正整数:";
    cin >> *a;
    cout << "请输入第2个正整数:";
    cin >> *b;
}

//计算最大公约数
int calcMaxCommDivisor(int a, int b)
{
    int temp;
    while (a%b != 0)
    {
        temp = a % b;
        a = b;
        b = temp;
    }
    return b;
}

//计算最小公倍数
int calcMinCommMultiple(int a, int b)
{
    return a*b / calcMaxCommDivisor(a, b);
}
示例输出

程序输出示例:

请输入第1个正整数:5
请输入第2个正整数:7
两个数的最小公倍数为:35
两个数的最大公因数为:1
总结

通过本章练习,我们了解了C++中函数嵌套实现数据处理的用法,以及C++中循环嵌套语句的用法,并且理解了算法设计与实现的重要性。在实际工作中,程序员认真学习此练习中的知识点,对于提升编程能力会有很大的帮助。