头歌C语言实训C++之for循环性质(II)

最大公约数(英语:Greatest Common Divisor,简写为G.C.D.;或Highest Common Factor,简写为H.C.F.)是指某几个整数共有约数中最大的一个。如1218的最大公约数为6

最小公倍数(英语:Lowest Common Multiple,简写为L.C.M.)是数论中的一个概念。若有一个数X,可以被另外两个数AB整除,且X大于(或等于)AB,则XAB的公倍数。AB的公倍数有无限个,而所有的公倍数中,最小的公倍数就叫做最小公倍数。如1218的最小公倍数为36

本关要求用for循环语句来分别求两个正整数的最大公约数和最小公倍数。

本关任务

本关的编程任务是实现step4/GcdAndLcm.cpp文件中的GcdLcm函数,代码如下:

 
  1. // 求两个正整数的最大公约数
  2. int Gcd(int a,int b)
  3. {
  4. // 请在此提供实现代码
  5. }
  6. // 求两个正整数的最小公倍数
  7. int Lcm(int a,int b)
  8. {
  9. // 请在此提供实现代码
  10. }

测试说明

本关的测试文件是step4/GcdAndLcmTest.cpp,负责对你写的实现代码进行测试。具体说明如下:

 
  1. #include <iostream>
  2. #include "GcdAndLcm.h"
  3. using namespace std;
  4. int main()
  5. {
  6. int m,n;
  7. // 从命令行读入两个正整数
  8. // 这两个数取自测试集的输入
  9. cin >> m >> n;
  10. cout << Gcd(m,n) << " " << Lcm(m,n) << endl;
  11. }

上述main函数从命令行读入,并将处理后的结果通过命令行输出。注意,step4/GcdAndLcmTest.cpp的代码不能被修改。

其中:GcdAndLcm.h文件代码如下:

 
  1. #ifndef _ISLEAPYEAR_H_
  2. #define _ISLEAPYEAR_H_
  3. int Gcd(int ,int );
  4. int Lcm(int ,int );
  5. #endif

以下是平台对step4/GcdAndLcmTest.cpp的测试样例:
测试输入:5 10
预期输出:5 10

测试输入:6 9
预期输出:3 18

测试输入:7 11
预期输出:11 77

 

int Gcd(int a,int b)
{  
    int i,j,k;
    if(a >= b)  
        j = a;  
    else  
        j = b;
    for(i = j; i >= 1; i--)  
    {  
        if(a % i == 0 && b % i == 0)  
        {  
            k = i;  
            break;  
        }  
    }  
    return k;  
}
int Lcm(int a,int b)  
{  
    int o,p,q;
    if(a >= b)  
        p = b;  
    else  
        p = a;
    for(o = p; o >= 1; o--)  
    {  
        if(a % o == 0 && b % o == 0)  
        {  
            q = o;  
            break;  
        }  
    }  
    return (a * b) / q;  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++课后习题及答案 一、 选择填空 1. 下列各种高级语言中,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2. 下列各种高级语言中,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ 3. 下述面向对象抽象的原理中,( )是不对的。 A. 数据抽象; B. 行为共享; C.进化; D. 兼容; 4. ( )不是面向对象系统所包含的要数。 A. 重载; B. 对象; C. 类; D. 继承; 5. 关于C++C语言的关系的描述中,( )是错误的。 A. C语言C++的一个子集; B. C语言C++是兼容的; C. C++C语言进行了一些改进; D. C++C语言都是面向对象的; 6. 下面关于对象概念的描述中,( )是错误的。 A.对象就是C语言中的结构变量; B.对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D.对象之间的信息传递是通过消息进行的; 7. 下面关于类概念的描述中,( )是错误的。 A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类就是C语言中的结构类型; 8. C++C语言作了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成为面向对象。 A.增加了一些新的运算符; B.允许函数重载,并允许设置缺省参数; C.规定函数说明必须用原型; D.引进了类和对象的概念; 9. 按照标识符的要求,( )符号不能组成标识符。 A.连接符; B. 下划线; C.大小写字母; D.数字字符; 10. 下列符号中,( )不可作为分隔符。 A.,; B.:;C.?; D.;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值