栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

用c语言写分数比较的程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用c语言写分数比较的程序

因为把比较分数的所有情况都考虑到,类似于穷举法,所以程序并不简短,但能够正确地比较出两个分数的大小。

两个分式输出分别为a/b和c/d,x和y是对应分子通分后的值。先判断分式是否有意义,若分母有存在为0的情况,就输出对应分式无意义并终止程序,不进行大小比较。

#include
#include
main()
{
	int a,b,c,d,x,y;
	scanf("%d%dn%d%d",&a,&b,&c,&d);
    if(b==0&&d==0)
	{printf("%d/%d和%d/%d无意义",a,b,c,d);
	 exit(0);}
	if(b==0)
    {printf("%d/%d无意义",a,b);
	 exit(0);}
	if(d==0)
    {printf("%d/%d无意义",c,d);
	 exit(0);}

分式存在无意义的情况已排除,在a/b为正数的情况下开始讨论:c/d同为正数,通分后判断两个新分子的大小。因为分式为正数有分子分母同号或分子分母异号的两种情况,所以可能会出现通分后新分子为负数的情况,将为负的情况转正数在进行大小比较,再留意输出的大于小于号即可。其他情况也适用

	if(a>0&&b>0||a<0&&b<0)//在a/b为正数的情况下讨论 
	{
	 if(c>0&&d>0||c<0&&d<0)//*****************************
	 {x=a*d;y=b*c;
	  if(x<0)
	  x=-x;
	  if(y<0)
	  y=-y;
	  if(x>y)
	  printf("%d/%d>%d/%d",a,b,c,d);
	  if(x0&&d<0||c<0&&d>0)
	 printf("%d/%d>%d/%d",a,b,c,d);
	 
	 if(c==0)
	 printf("%d/%d>%d/%d",a,b,c,d);
	}	

在a/b为负数的情况下讨论:思路同上。

if(a>0&&b<0||a<0&&b>0)//在a/b为负数的情况下讨论 
	{
	 if(c>0&&d>0||c<0&&d<0)
	 printf("%d/%d<%d/%d",a,b,c,d);
	 
	 if(c>0&&d<0||c<0&&d>0)//*****************************
	 {x=a*d;y=b*c;
	  if(x<0)
	  x=-x;
	  if(y<0)
	  y=-y;
	  if(x>y)
	  printf("%d/%d<%d/%d",a,b,c,d);
	  if(x%d/%d",a,b,c,d);
	  if(x==y)
	  printf("%d/%d=%d/%d",a,b,c,d);}
	  
	  if(c==0)
	  printf("%d/%d<%d/%d",a,b,c,d);
	}

在a/b=0即a=0的情况下讨论:

	if(a==0)
	{
	 if(c>0&&d>0||c<0&&d<0)
	 printf("%d/%d<%d/%d",a,b,c,d);
	 
	 if(c>0&&d<0||c<0&&d>0)
	 printf("%d/%d>%d/%d",a,b,c,d);
	 
	 if(c==0)
	 printf("%d/%d=%d/%d",a,b,c,d);
	}
	return 0;
	 
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号