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

#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);                                       /*返回最大公约数*/
}



求解

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

你输入的时候也是两个数中间打了逗号么,输入格式要与scan中填写的格式一致