大数加法(个位数保存在数组[0]中

作者在 2013-05-25 22:35:22 发布以下内容
#include<stdio.h>
#include <string.h>
void add(char a[],char b[])
{
 int temp[101]={0},carry=0,i,m,n,num;
 m=strlen(a);
 n=strlen(b);
 num=n>m?n:m;
 
 for(i=m-1;i>=0;i--)
  temp[m-1-i]=a[i]-'0';//a数组的个位保存在temp[0],...
 
 for(i=n-1;i>=0;i--)
  temp[n-1-i]+=b[i]-'0';
 
 for(i=0;i<=num;i++)
 {
  temp[i]+=carry;
  carry=temp[i]/10;
  temp[i]%=10;
 }
 
 if(temp[num]) 
printf("%d",temp[num]);

for(i=num-1; i>=0;i--)
printf("%d",temp[i]);
    printf("%d",temp[i]);
   
}
int main()
{
 char a[100],b[100];
 printf("a数 : ");
 gets(a);
 printf("b数 : ");
 gets(b);
 printf("和数: ");
 add(a,b);
 printf("\n");
 return 0;
}
数据结构及算法 | 阅读 1966 次
文章评论,共0条
游客请输入验证码
浏览233231次
最新评论