perject - 见习魔法师 三级 给的就是啊,不过算法属于最基本的。支持 芙瑶凌 - 经理 四级 提到的辗转相除法,稍加改动如下(turboc2编译通过的噢,关于辗转相除法见参考资料):
(昨晚提交的程序有个问题啊,不好意思……汗颜……现在就改过来)
#include<stdio.h>
#include<conio.h>
main()
{
int iNum,iDeno,iMax,iMin,iTmp;
iNum=iDeno=1;
while(iNum!=0 && iDeno!=0)
{
printf("Please input the numerator and the denominator:\n");
scanf("%i%i",&iNum,&iDeno);
if (iNum==0 || iDeno==0)
continue;
if (iNum<iDeno)
iMin=iNum,iMax=iDeno;
else
iMin=iDeno,iMax=iNum;
for(;iMin!=0;){ /*传说中的辗转相除法*/
iTmp=iMin;
iMin=iMax%iMin;
iMax=iTmp;
}
printf("\n%i\n----\n%i\n",iNum/iMax,iDeno/iMax);
getch();
}
}
参考资料:http://www.pep.com.cn/200406/ca417585.htm