lieyk 2023-03-01 14:41 采纳率: 66.7%
浏览 24
已结题

代码问题,程序未终止

题目:根据main测试函数设计有理数类CRational,数据成员由分子、分母组成(都是整型,应表示成最简形式),完成分数显示(如用户输入的分子是4,分母是8,输出:1/2)、两个分数相加、相乘等功能。main函数不得修改。提示:用分子分母的最大公约数分别除分子和分母即得最简分数。

出现的问题:程序运行后输完a b c d , 没有出现预期结果 , 程序也没有终止


#include <iostream>
using namespace std;

void gongyueshu(int a , int b)
{
    int p=0;
    for(int i = 0 ; i < a<b?b:a ; i++)
        if(a%i==0&&b%i==0)p=i;
    if(p!=0){a/=p;b/=p;}
}

class CRational
{
public:
    CRational( int a , int b )
    {
        gongyueshu(a,b);
        mu = a;
        zi = b;
    }
    CRational add(CRational p)
    {
        int mu1 = mu+p.mu;
        int zi1 = zi+p.zi;
        gongyueshu(mu1,zi1);
        CRational result(mu1,zi1);
        return result;
    }
    void show()
    {
        cout<<mu<<"/"<<zi<<endl;
    }
    CRational multi(CRational p)
    {
        int mu2 = mu*p.mu;
        int zi2 = zi*p.zi;
        gongyueshu(mu2,zi2);
        CRational result(mu2,zi2);
        return result;
    }
private:
    int mu;
    int zi;
    
};

int main()

{

     int a,b,c,d;//接受两个CRational对象的分子和分母

     cin>>a>>b>>c>>d;

     CRational f1(a,b);//f1对象的分子为a,分母为b

     CRational f2(c,d);

     CRational f3=f1.add(f2);//f1+f2的结果保存到f3中

     f3.show();//显示形式:分子/分母

     f3=f1.multi(f2);//f1*f2的结果保存到f3中

     f3.show();

     return 0;

}

  • 写回答

3条回答 默认 最新

  • 於黾 2023-03-01 14:44
    关注

    这种情况一般是死循环、无限递归,或者被其他输入语句阻塞住了
    一步一步调,看从哪一步开始没反应了,不要靠猜
    i < a<b?b:a
    目测这东西是个死循环,后面的三目运算符没有加括号
    改为i < (a<b?b:a)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 Qt中实现子线程和管理线程类之间实时通信
  • ¥15 cacls 命令如何解除锁定文件夹?
  • ¥50 C++使用TWAIN协议如何实现A3幅面扫描仪扫描A4横向
  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?