用c语言写约分化简的程序(第一次写博文)

编程入门 行业动态 更新时间:2024-10-05 23:24:05

用c语言写约分化简的程序(第一次写<a href=https://www.elefans.com/category/jswz/34/1767054.html style=博文)"/>

用c语言写约分化简的程序(第一次写博文)

从开始思考怎么写到打磨好整个程序,约用了两个半小时。
大致思路就是
定义后,输出分式(分子和分母)

#include<stdio.h>
#include<stdlib.h>
main()
{int a,b,i,x,y,z,w;printf("输入的分数为:\n"); scanf("%d",&a);printf("/");scanf("%d",&b);

再判断输入的分子或分母是否为0
如果存在分子或分母为0的情况,则直接输出化简结果为0并终止程序

    if(a==0||b==0)//考虑分子分母值为 0 的情况 {printf("化简结果为:0");exit(0);}

然后判断最终结果的正负值,由w来记录:w==0,最终结果为w==1,最终结果为特别注意:因为if语句没有插入中止语句,所以四个if语句都会执行,换一句话说:四个if语句是有先后顺序的

	if(a>0&&b>0)//对最终结果正负值的判断并记录,统一为正值 w=0;  if(a<0&&b<0){a=-a;b=-b;w=0;}if(a<0&&b>0){a=-a;w=1;}if(b<0&&a>0){b=-b;w=1;}//四个if判断有先后顺序 

后对 最开始的 分子或分母值是否存在为1或-1的情况进行判断,如果存在,就直接输出最终结果并终止程序

    if(a==1&&w==0)//在初始分子值或分母值为1或-1的情况下,直接得出结果 {printf("化简结果为:%d/%d",a,b); exit(0);}if(a==1&&w==1){printf("化简结果为:%d/%d",-a,b); exit(0);}if(b==1&&w==0){printf("化简结果为:%d",a);exit(0);}if(b==1&&w==1){printf("化简结果为:%d",-a);exit(0);}

后对最开始的分数进行真、假分数的判断,由z记录:z==1,最开始的分数为假分数,则最终结果也为假分数z==0最终结果为真分数统一为假分数!!!后进行下面的do-while循环

if(a>b)//记录初始分数的真假,统一为假分数再进行下列循环{x=b;y=a;z=0;}else{x=a;y=b;z=1;}

到这里,相当于对一个大于0的假分数进行约分循环。值得注意的是:约分化简的过程中可能会出现分子为1的情况,这个时候中止循环,进行下一步的最终结果输出

	do //进行到这一步,分子分母都不会出现为1的情况(过程中可能会出现) {if(x==1)break;i=2;a=x;for(i=2;i<=x;i++)if(x%i==0)break;if(y%i==0){x=x/i;y=y/i;}}while(a!=x);

最后,结合w和z来输出最终结果。其中z==0特别注意x=1的情况,即输出结果 将x=1代入y/x 应为y,而不是y/1

	if(w==0&&z==1)printf("化简结果为;%d/%d",x,y);if(w==0&&z==0&&x!=1)printf("化简结果为:%d/%d",y,x);if(w==0&&z==0&&x==1)printf("化简结果为:%d",y);if(w==1&&z==1)printf("化简结果为:%d/%d",-x,y);if(w==1&&z==0&&x!=1)printf("化简结果为:%d/%d",-y,x);if(w==1&&z==0&&x==1)printf("化简结果为:%d",-y);}

更多推荐

用c语言写约分化简的程序(第一次写博文)

本文发布于:2024-02-27 16:05:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707277.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:博文   语言   程序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!