pata1088

题目
pata1088
题目思路
分数计算的常规题目,分别计算减加乘除后输出即可,注意要采用long long变量。
参考代码

#include<iostream>

using namespace std;

typedef struct{
	long long num;
	long long de;
}fen;
void pt(fen f1);
int to(long long a,long long b);

int main()
{
	
	fen f1,f2,sum,ji,cheng,chu;
	
	scanf("%lld/%lld %lld/%lld",&f1.num,&f1.de,&f2.num,&f2.de);
	sum.num=f1.num*f2.de+f2.num*f1.de;
	sum.de=f1.de*f2.de;
	ji.num=f1.num*f2.de-f2.num*f1.de;
	ji.de=f1.de*f2.de;
	cheng.num=f1.num*f2.num;
	cheng.de=f1.de*f2.de;
	chu.num=f1.num*f2.de;
	chu.de=f1.de*f2.num;
	pt(f1);
	printf(" + ");
	pt(f2);
	printf(" = ");
	pt(sum);
	printf("\n");
	pt(f1);
	printf(" - ");
	pt(f2);
	printf(" = ");
	pt(ji);
	printf("\n");
	pt(f1);
	printf(" * ");
	pt(f2);
	printf(" = ");
	pt(cheng);
	printf("\n");
	pt(f1);
	printf(" / ");
	pt(f2);
	printf(" = ");
	if(f2.num==0)
		printf("Inf");
	else
		pt(chu);
	
	
	return 0;
	
}

void pt(fen f1)
{
	long long f=1,k=0,t=0;
	
	if(f1.num<0)
	{
		f=-1;
		f1.num*=f;
	}
	if(f1.de<0)
	{
		f*=-1;
		f1.de*=-1;
	}
	k=to(f1.num,f1.de);
	f1.num/=k;
	f1.de/=k;
	t=f1.num/f1.de;
	f1.num=f1.num%f1.de; 
	if(f==-1&&(t!=0||f1.num!=0))
		printf("(-");
	if(t!=0||(t==0&&f1.num==0))
	{
		printf("%lld",t);
		if(f1.num!=0)
			printf(" ");
	}
	if(f1.num!=0)
		printf("%lld/%lld",f1.num,f1.de);
	if(f==-1)
		printf(")");
	
}

int to(long long a,long long b)
{
	if(b==0)
		return a;
	else 	
		return to(b,a%b);
	
 } 
发布了27 篇原创文章 · 获赞 0 · 访问量 375

猜你喜欢

转载自blog.csdn.net/zz73zz76/article/details/104296320