7-2用rational结构体来完成分子分母的格式进行计算

本文介绍了一个简单的C语言程序,该程序定义了分数结构并实现了两个分数相加的功能。通过计算最大公约数来简化结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<math.h>
int gcd(int a,int b);
void print(struct rational a);
struct rational
{	
	int a,b;	
};

struct rational add(struct rational x,struct rational y)
{
	int gcdnum;
	struct rational c;
	c.a=x.a*y.b+x.b*y.a;
	c.b=x.b*y.b;
	if(c.a==0)
		return c;
	gcdnum=gcd(abs(c.a),abs(c.b));
	c.a=c.a/gcdnum;
	c.b=c.b/gcdnum;
	return c;
}
int main(void)
{
     struct rational a = {-2, 8 };
     struct rational b = { -1, 8 };
     struct rational c = add(a, b);
     print(c);
     return 0;
}
void print(struct rational c)
{
	if(c.a==0)
		printf("%d\n",c.a);
	else	
		printf("%d/%d\n",c.a,c.b);
}
int gcd(int a,int b)  
{  
    int tmp,tmp1;  
    if(a<0)  
        a=-a;  
    if(b<0)  
        b=-b;  
    if(a<b)  
    {  
        tmp=a;  
        a=b;  
        b=tmp;  
    }  
    if(a%b==0)  
        tmp1=b;  
    else  
        tmp1=gcd(b,a%b);  
    return tmp1;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值