ch0_bigint2.c

来自「本人讲授数据结构课程时的所写的示例程序」· C语言 代码 · 共 73 行

C
73
字号
/*
长整数2
author: kk.h
date: 2006.9
http://www.cocoon.org.cn
*/
#include "stdio.h"
char* add(char *b1,char *b2)
{
  char *r; char b1i,b2i;
  int b1len,b2len,rlen,i1,i2,i,a,t;
  b1len=strlen(b1);
  b2len=strlen(b2);

  if (b1len>b2len)
    rlen=b1len+1;
  else
    rlen=b2len+1;

  r=(char*)malloc(rlen+1);

  t=0;
  i1=b1len-1;i2=b2len-1; i=rlen-1;
  while (i1>=0 || i2>=0){
    if (i1>=0) b1i=b1[i1]; else b1i='0';
    if (i2>=0) b2i=b2[i2]; else b2i='0';
    a = b1i+b2i-2*'0'+t;
    if (a>=10){
      t=1;a=a-10;  
    }else
      t=0;
    r[i] = a+'0';
    i1--;i2--;i--;
  }
  if(t>0)
    r[0] = '1';
  else
    r[0] = '0';

  r[rlen]='\0';
  return r;
}

char* init(char *data)
{
  char *bigint;
  int i;
  bigint = (char*)malloc(strlen(data)+1);

  for (i=0;i<strlen(data);i++)
    bigint[i] = data[i];

  bigint[i]='\0';
  return bigint;
}

main()
{
  int i;
  char *bigint1=NULL,*bigint2=NULL,*r=NULL;

  bigint1 = init("23641");
  bigint2 = init("62");

  r = add(bigint1,bigint2);

  for(i=0;i<strlen(r);i++)
    printf("%c",r[i]);

  free(bigint1); free(bigint2); free(r);
  getch();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?