| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 774 人关注过本帖
标题:请求大家解疑 用指针实现大整数相加的函数,大整数为10进制,最多有15位。
只看楼主 加入收藏
jintom
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-11-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
请求大家解疑 用指针实现大整数相加的函数,大整数为10进制,最多有15位。
所谓大整数指的是位数很大的整数,如9999999999。  大整数相加的例子:5555555555+6666666666=12222222221


这是我编的,就是输不出结果  大家看看  什么地方不对  谢谢啊
# include<stdio.h>
main()
{
    char a[15],b[15];
    void fun(a,b);
    int i;
    gets(a);
    a[14]='\0';
    fflush(stdin);
    gets(b);
    b[14]='\0';
    fun(a,b);
    for(i=0;i<15&&b!='\0';i++)
        printf("%c",*(b+i));
}

void fun(char x[],char y[])
{
    char c[15]={'\0'},z[15]={'\0'};
    int i,j;
    for(i=14,j=0;i>0;i--)/*倒置x[]*/
    {
        if(x[i]!='\0')
        {
            z[j]=x[i];
            j++;
        }
    }
    for(i=14,j=0;i>0;i--)
    {
        if(y[i]!='\0')
        {
            x[j]=y[i];
            j++;
        }   
    }
    for(i=0;i<15&&(z[i]!='\0'||x[i]!='\0');i++)/*数组相加*/
    {
        c[i]=z[i]+x[i];
        if(c[i]>10)
        {
            c[i]=c[i]-10;
            z[i+1]=z[i+1]+1;
        }
    }
        if(z[i]=='0')
            for(;x[i]!='\0';i++)
                c[j++]=x[i];
        else if(x[i]=='0')
            for(;z[i]!='\0';i++)
                c[j++]=z[i];        
    for(i=14,j=0;i>0;i--)/*倒置得出数组*/
    {
        if(c[i]!='\0')
        {
            y[j]=c[i];
            j++;
        }   
    }
}
搜索更多相关主题的帖子: 整数 进制 指针 函数 解疑 
2010-12-07 23:03
jintom
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2010-11-19
收藏
得分:0 
求顶贴。。。
2010-12-09 11:47
venus85
Rank: 6Rank: 6
等 级:侠之大者
帖 子:159
专家分:477
注 册:2010-11-27
收藏
得分:0 
路过帮顶。弱弱地问一句,LZ为什么不定义long int 或者long long int来实现大整数相加呢?
2010-12-09 12:54
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:20 
程序代码:
# include<stdio.h>

void fun(char* a,char* b,int pos);
void ver(char*,int);
void convert(char*,int);

int
main(void)
{
      char a[15],b[15];
      int i;

      gets(a);
      a[14]='\0';
      fflush(stdin);
      gets(b);
      b[14]='\0';
      ver(a,14);
      ver(b,14);
      convert(a,14);
      convert(b,14);
      fun(a,b,14);
      for(i=0;i<14&&b!='\0';i++)
            printf("%c",*(b+i));
      getch();
      return 0;
}

void ver(char* a,int n)
{
      int i=0,j;
      char c;

      while(a[i++]!='\0')
            ;
      --i;
      n-=i;
      for(j=14;i>=0;i--,j--)
            a[j]=a[i];
      for(i=0;i<n;i++)
            a[i]=' ';
}


void convert(char* a,int n)
{
      int i;

      for(i=0;i<n;i++)
      {
            if(*(a+i)==' ')
                  ;
            else if(*(a+i)<0x30 || *(a+i)>0x3a)
            {
                  printf("error input!\n");
                  getch();
                  exit(0);
            }
            else
                  *(a+i)&=0xf;
      }
}

void fun(char* a,char* b,int pos)
{
      int i,m=0;

      for(i=pos-1;i>=0&&b[i]!=' ';i--)
      {
            b[i]=b[i]+a[i]+m;
            m=b[i]/10;
            b[i]=b[i]%10;
      }
      if(m>0)
            b[i]=m;
      for(i=0;i<pos;i++)
      {
            if(b[i]==' ')
                  ;
            else
                  b[i]|=0x30;
      }
}

2010-12-09 17:18
快速回复:请求大家解疑 用指针实现大整数相加的函数,大整数为10进制,最多有1 ...
数据加载中...
 
   



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

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