c语言 埃及分数

来源:百度知道 编辑:UC知道 时间:2024/05/17 18:33:22
分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。
如:8/11=1/2 1/5 1/55 1/110。这是我的程序,不知道为何结果不正确。
#include <stdio.h>
void main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
c=b/a+1;
printf("%d/%d=1/%d",a,b,c);
while(a!=3)
{
if(a==1) break;
a=a*c-b;
b=b*c;
c=b/a+1;
printf("+1/%d",c);

if(a==3)
{
d=b/2;
printf("+1/%d+1/%d",d,b);
break;
}
}
}

#include <stdio.h>
void main()
{
int a,b,c,d;
printf("please input a&b:\n");
scanf("%d%d",&a,&b);
c=b/a+1;
printf("%d/%d=1/%d",a,b,c);
while(a!=1)
{
a=a*c-b;
b=b*c;
c=b/a+1;
if(a!=3)
printf("+1/%d",c);
else
{d=b/2;
printf("+1/%d+1/%d",d,b);
getch();
}
}
}

搞定了,你的(a!=3)条件放错了,呵呵,好好看看,是不?
判断完了以后才得到的a=3;所以那个C还是要打印的。

这道题是趣味编程中的一道题,以下是答案,能运行成功:
#include"stdio.h"
void main(){
int a,b,c;
printf("please input a/b:\n");
scanf("%d%d",&a,&b);
while(a>b){
printf("\nplease input a/b:\n");
scanf("%d%d",&a,&b);
}
printf("\n%d/%d= ",a,b);
while(1){
if(b%a)
c=b/a+1;
else{
c=b/a;
a=1;
}
if(a==1){
printf(&qu