| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 805 人关注过本帖
标题:编译错误 求指教 分数加减 可能是越界了
取消只看楼主 加入收藏
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:1 
编译错误 求指教 分数加减 可能是越界了
分数加减法

编写一个C程序,实现两个分数的加减法
输入
输入包含多行数据
每行数据是一个字符串,格式是"a/boc/d"。
其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束
输入数据保证合法
输出
对于输入数据的每一行输出两个分数的运算结果。
注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数
样例输入
1/8+3/8
1/4-1/2
1/3-1/3




源代码:

#include<stdio.h>
int p,q;
int main()
{
    char a[1000],ch;
    int i,min,son,mon;
    void fact(int mon,int son);
    while((gets(a))!=NULL)
{    a[0]=a[0]-48;
    a[2]=a[2]-48;
    a[4]=a[4]-48;
    a[6]=a[6]-48;   
    min=(a[2]<a[6]?a[2]:a[6]);
    for(i=1;;i++)
    {
        if((min*i%a[6]==0)&&(min*i%a[2]==0))
            break;
    }
    mon=min*i;
    a[0]=mon/a[2]*a[0];
    a[4]=mon/a[6]*a[4];
    if((a[3]=='-')&&(a[0]<=a[4]))
    {   
        if(a[0]==a[4])
            printf("0\n");   
        
        else
        {
            ch='-';
            son=a[4]-a[0];
        fact(mon,son);
        printf("%c%d/%d\n",ch,q,p);
        }

    }
   
    else
    {
        son=a[0]+a[4];
        fact(mon,son);
        printf("%d/%d\n",q,p);
    }   
}
    return 0;
   
}

void fact(int mon,int son)

{   int r,m,n;
    m=mon;
    n=son;
    r=1;
    while(r!=0)
    {
        r=m%n;
        m=n;
        if(r!=0)
        n=r;
    }
    p=mon/n;
    q=son/n;
}
搜索更多相关主题的帖子: include 加减法 字符串 
2013-02-27 12:20
凉粉呵呵
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 8楼 azzbcc
修改了整数的还是过不了  原来还有自己3/8-1/8这种情况没写进去  依然为runtime error
2013-03-02 13:47
快速回复:编译错误 求指教 分数加减 可能是越界了
数据加载中...
 
   



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

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