yeliangyuduan 2021-11-28 15:57 采纳率: 100%
浏览 27
已结题

求公约数公倍数问题 程序不报错 输出数据后按回车没有响应

#include "stdio.h"
main()
{
 int x,y,ACD,amd,t;/* 定义变量,acd 保存最大公约数,amd 保存最小公倍数 */
 int acd(x,y);
 printf("请输入两个数:\n");                     /* 提示输入 */
 scanf("%d,%d",&x,&y);
 if(x>y)                                         /* 如果 x>y,两个值互换,保证第一个参数为小值 */
 { t=x;x=y;y=t; }
 ACD=acd(x,y);                        /*调用函数求最大公约数*/
 amd=(x*y)/ACD;                                  /*求最小公倍数*/
 printf("最大公约数=%d,最小公倍数=%d",ACD,amd);
}
                                                 /*函数功能:使用辗转相除法求两个数的最大公约数
                                                   参数 m1:两个数中较小者
                                                   参数 m2:两个数中较大者
                                                   返回值:m1 和 m2 的最大公约数*/
int acd(int m1,int m2)
{
 int r;
 while(r!=0)                                    /*使用辗转相除法求最大公约数*/
 { r=m2%m1;
     m2=m1;
      m1=r; }
 return (r);                                       /*返回最大公约数*/
}



求解
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-28 16:05
    关注

    acd函数怎么会是return r呢???根据while条件,r的结局必然是0,否则死循环。你return 0,那么amd = (x*y)/ACD就会产生分母为0的异常。崩溃了
    应该return m2吧

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

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序