| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2796 人关注过本帖
标题:超大数减法问题
取消只看楼主 加入收藏
空白先生
Rank: 2
等 级:论坛游民
帖 子:115
专家分:95
注 册:2012-12-9
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:2 
超大数减法问题
我最近在做ACM入门题,其中超大数问题是我第一个遇到的题目,为了从基本开始我挑了一个减法题,下面是我写的程序,问题是为什么输出来的值和输进去的值总隔了一行,而且我用小数减去大数,负号就在多出来的一行里,求高手指教。
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    void minus(char x[],char y[]);
    char a[1000],b[1000];
    gets(a);
    gets(b);
    minus(a,b);
    printf("\n");
    return 0;
}
void minus(char x[],char y[])
{
    int i,j;
    char z[1000],a[1000]={'\0'},b[1000]={'\0'},c[1000];
    if(strlen(x)<strlen(y))
    {
        strcpy(c,x);
        strcpy(x,y);
        strcpy(y,c);
        printf("-");
    }
    else if(strlen(x)==strlen(y))
    {
        if(strcmp(x,y)<0)
    {
        strcpy(c,x);
        strcpy(x,y);
        strcpy(y,c);
        printf("-");
    }
    }
    for(i=1000-strlen(x),j=0;i<1000;i++,j++)
        a[i]=x[j];
    for(i=1000-strlen(y),j=0;i<1000;i++,j++)
        b[i]=y[j];
    for(i=999;i>=999-strlen(x);i--)
    {
        if(b[i]=='\0')
            z[i]=a[i];
        else
        {
            z[i]=a[i]-b[i]+48;
        }
        if(z[i]<'0')
        {
            z[i]=z[i]+10;
            a[i-1]--;
        }
    }
    for(i=999-strlen(x);i<1000;i++)
        printf("%c",z[i]);
}

[ 本帖最后由 空白先生 于 2012-12-16 13:11 编辑 ]
搜索更多相关主题的帖子: include return 
2012-12-16 12:36
空白先生
Rank: 2
等 级:论坛游民
帖 子:115
专家分:95
注 册:2012-12-9
收藏
得分:0 
回复 3楼 wp231957
sorry,我发错代码了,把之前那个错的发上来了,容我改一下

printf("My goal is to be  good at computer")
2012-12-16 13:00
空白先生
Rank: 2
等 级:论坛游民
帖 子:115
专家分:95
注 册:2012-12-9
收藏
得分:0 
算了,改过来的那个就马马虎虎算可以用把,当然非常感谢版主的帮助

printf("My goal is to be  good at computer")
2012-12-16 14:56
快速回复:超大数减法问题
数据加载中...
 
   



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

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