• 流程图题过编译


    #include<stdio.h>
    #include<stdlib.h>
    
    // 函数原型
    int getLowestTerms(int, int, int *, int *); // 分数简化
    int getGCD(int, int); // 计算最大公约数
    void Output(int, int, int);
    
    // 测试
    int main()
    {
        int m, n, Num, Denom;
        int status;
    
        scanf("%d%d", &m, &n);
    
        status = getLowestTerms(m, n, &Num, &Denom);
        Output(status, Num, Denom);
    
        return 0;
    }
    
    // 分数化简
    // 原分子分母通过参数输入
    // 化简后的分子分母写入指针形参指向的变量
    int getLowestTerms(int m, int n, int *pNum, int *pDenom)
    {
        int gcd;
        int msign = 1;
        int nsign = 1;
        int numsign = 1;
    
        if(m == 0)
        {
            return 0;
        }
        else if(m == n)
        {
            return 1;
        }
        else if(n == 0)
        {
            return -1;
        }
        else
        {
            // 结果符号判断
            if(m < 0)
            {
                msign = -1;
            }
            if(n < 0)
            {
                nsign = -1;
            }
            // 结果分子符号
            numsign = msign * nsign;
    
            m = abs(m);
            n = abs(n);
            *pNum = m;
            *pDenom = n;
            gcd = getGCD(m, n);
            *pNum /= gcd;
            *pNum *= numsign;
            *pDenom /= gcd;
    
            return 2;
        }
    }
    
    // 计算最大公约数
    int getGCD(int m, int n)
    {
        int rem = n;
    
        while (rem != 0)
        {
            rem = m % n;
            m = n;
            n = rem;
        }
    
        return m;
    }
    
    void Output(int status, int nNum, int nDenom)
    {
        if(status == 0)
        {
            printf("%d
    ", status);
        }
        else if(status == 1)
        {
            printf("%d
    ", status);
        }
        else if (status == 2)
        {
            if(nDenom == 1) // 分母为1
            {
                printf("%d
    ", nNum);
            }
            else
            {
                printf("%d/%d
    ", nNum, nDenom);
            }
        }
        else
        {
            printf("Error!
    ");
        }
    }
    Aim: Buaa
  • 相关阅读:
    windows常用命令
    Qt 添加 QtNetwork 库文件
    LoadLibrary加载动态库失败
    C++11 Function 使用场景
    编程书籍集
    代码重构例集
    多重循环编码规范
    vim 命令学习(基础篇)
    QT构建窗体(父窗体传为野指针)异常案例
    JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别
  • 原文地址:https://www.cnblogs.com/calm-blogme/p/12096750.html
Copyright © 2020-2023  润新知