1.7 分?jǐn)?shù)四則運算
對輸入的兩個分?jǐn)?shù)進(jìn)行+、-、*、/四則運算,輸出分?jǐn)?shù)結(jié)果。
算法分析如下:
對分?jǐn)?shù)b/a與d/c,不管哪一種運算,其運算結(jié)果均為y/x形式。對結(jié)果y/x進(jìn)行化簡,約去分子分母的公因數(shù):試用i(i=1,...,y)對y,x進(jìn)行試商,若能同時整除y,x,則y,x同時約去公因數(shù)i,最后打印約簡的分?jǐn)?shù)。
程序代碼如下:
#include
void main()
{
long int a,b,c,d,i,x,y,z;
char op;
printf("兩分?jǐn)?shù)b/a,d/c作+,-,*,/四則運算,結(jié)果為分?jǐn)?shù)。\n");
printf("請輸入分?jǐn)?shù)運算式。\n");
scanf("%ld/%ld%c%ld/%ld",&b,&a,&op,&d,&c);
if(a==0||c==0) {printf("分母為0輸入錯誤!");exit(0);}
if(op=='+'){y=b*c+d*a;x=a*c;} /*運算結(jié)果均為y/x*/
if(op=='-'){y=b*c-d*a,x=a*c;}
if(op=='*'){y=b*d;x=a*c;}
if(op=='/'){y=b/c;x=a/d;}
z=x;
if(x>y) z=y;
i=z;
while(i>1) /*y/x分子分母約去公因數(shù)*/
{
if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;}
i--;
}
printf("%ld/%ld%c%ld/%ld=%ld/%ld.\n",b,a,op,d,c,y,x);
}
對輸入的兩個分?jǐn)?shù)進(jìn)行+、-、*、/四則運算,輸出分?jǐn)?shù)結(jié)果。
算法分析如下:
對分?jǐn)?shù)b/a與d/c,不管哪一種運算,其運算結(jié)果均為y/x形式。對結(jié)果y/x進(jìn)行化簡,約去分子分母的公因數(shù):試用i(i=1,...,y)對y,x進(jìn)行試商,若能同時整除y,x,則y,x同時約去公因數(shù)i,最后打印約簡的分?jǐn)?shù)。
程序代碼如下:
#include
void main()
{
long int a,b,c,d,i,x,y,z;
char op;
printf("兩分?jǐn)?shù)b/a,d/c作+,-,*,/四則運算,結(jié)果為分?jǐn)?shù)。\n");
printf("請輸入分?jǐn)?shù)運算式。\n");
scanf("%ld/%ld%c%ld/%ld",&b,&a,&op,&d,&c);
if(a==0||c==0) {printf("分母為0輸入錯誤!");exit(0);}
if(op=='+'){y=b*c+d*a;x=a*c;} /*運算結(jié)果均為y/x*/
if(op=='-'){y=b*c-d*a,x=a*c;}
if(op=='*'){y=b*d;x=a*c;}
if(op=='/'){y=b/c;x=a/d;}
z=x;
if(x>y) z=y;
i=z;
while(i>1) /*y/x分子分母約去公因數(shù)*/
{
if(x%i==0&&y%i==0){x=x/i;y=y/i;continue;}
i--;
}
printf("%ld/%ld%c%ld/%ld=%ld/%ld.\n",b,a,op,d,c,y,x);
}