| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 924 人关注过本帖
标题:两个分数的加减法
只看楼主 加入收藏
天谈2011
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-3-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
两个分数的加减法
样例输入
1/8+3/8
1/4-1/2
1/3-1/3
样例输出
1/2
-1/4
0
搜索更多相关主题的帖子: 加减法 
2011-04-22 19:32
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:8 
#include <stdio.h>
#include <math.h>
int fun(int m,int n)
{   
    int r;
    if(m<n){r=m;m=n;n=r;}
    while(n!=0){r=m%n;m=n;n=r;}
    return m;  
}
void main()
{
        int a1,a2,b1,b2,c1,c2,t,i;  char ch;
        
    printf("分数计算,输入格式形如:1/8+3/8 1/4-1/2\n");
        scanf("%d/%d%c%d/%d",&a1,&a2,&ch,&b1,&b2);

    t=fun(a2,b2);   
    c2=a2*b2/t;

        if(ch=='-')b1=-b1;
    c1=a1*b2/t+b1*a2/t;

    for(i=2; i<=abs(c1) && i<=c2;i++)     //最简约
        if(c1%i==0 && c2%i==0){ c1/=i; c2/=i;}

    if(c1==0 || c2==1)printf("%d\n",c1);
    else printf("%d/%d\n",c1,c2);
}
2011-04-22 20:46
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:6 
2011-04-22 20:51
爱海松涛
Rank: 3Rank: 3
来 自:安徽合肥
等 级:论坛游侠
帖 子:120
专家分:197
注 册:2011-2-25
收藏
得分:0 
路过、、
2011-04-22 20:55
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:6 
void f(int m,int n)
{int i;
if(m==0)
printf("0");
else if(m==n)
printf("1");
else
{
for(i=m>n?m:n;i>0;i--)
if(m%i==0&&n%i==0)
break;
if(m%n==0)
printf("%d",m/n);
else if(n%m==0)
printf("1/%d",n/m);
else
printf("%d/%d",m/i,n/i);
}}
main()
{int a1,a2,b1,b2,i=1;
char c;
scanf("%d/%d%c%d/%d",&a1,&a2,&c,&b1,&b2);
while(1)
{if(i%a2==0&&i%b2==0)
break;
else i++;}
a1=a1*i/a2;
b1=b1*i/b2;
switch(c)
{case '+':f(a1+b1,i);break;
case '-':f(a1-b1,i);break;}getch();
}
2011-04-23 11:20
快速回复:两个分数的加减法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014553 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved