大数加法

来源:互联网 发布:网络舆情应对 编辑:程序博客网 时间:2024/05/23 00:01
#include<stdio.h>
#include<string.h>
main()
{
char a[500]={'\0'},b[500]={'\0'},c[500]={'\0'};
int i,j,l1,l2,l3,n;
int a1[500]={0},b1[500]={0},c1[500]={0},d1[500]={0};
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
scanf("%s",b);
l1=strlen(a);
l2=strlen(b);
l3=(l1>l2)?(l1):(l2);
for(i=0;i<l1;i++)
a1[i]=a[l1-i-1]-48;
for(i=0;i<l2;i++)
b1[i]=b[l2-i-1]-48;    //字符数字存储的逆置,并转换为整型数字
for(i=0;i<=l3;i++)
c1[i]=a1[i]+b1[i];     //整型数字的简单相加
/* for(j=0;j<l3;j++)
printf("%d ",c1[j]);
printf("\n\n\n");*/
for(i=0;i<l3;i++)
if(c1[i]>=10)
{
if(c1[l3-1]>9)
l3++;
c1[i+1]=c1[i+1]+c1[i]/10;
c1[i]=c1[i]%10;
}
/* for(j=0;j<l3;j++)
printf("%d ",c1[j]);  //整型数字相加后每位分离
printf("\n\n");*/
/* for(j=0;j<l3;j++)
{
d1[j]=c1[l3-j-1];
printf("%d ",d1[j]);  //分离后逆置,最终结果(整型)
}
printf("\n\n");*/
for(j=0;j<l3;j++)
c[j]=c1[l3-j-1]+48;
printf("%s+%s=%s\n",a,b,c);
//printf("%s",c);           //分离后逆置,最终结果(字符型)
}

}

=============================================================

#include<stdio.h>
#include<string.h>
main()
{
char a[500]={'\0'},b[500]={'\0'},c[500]={'\0'};
int i,j,l1,l2,l3,n,casee=1;
int a1[500]={0},b1[500]={0},c1[500]={0};
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
scanf("%s",b);
l1=strlen(a);
l2=strlen(b);
l3=(l1>l2)?(l1):(l2);
for(i=0;i<l1;i++)
a1[i]=a[l1-i-1]-48;
for(i=0;i<l2;i++)
b1[i]=b[l2-i-1]-48;
for(i=0;i<=l3;i++)
c1[i]=a1[i]+b1[i];
for(i=0;i<l3;i++)
if(c1[i]>=10)
{
if(c1[l3-1]>9)
l3++;
c1[i+1]=c1[i+1]+c1[i]/10;
c1[i]=c1[i]%10;
}
for(j=0;j<l3;j++)
c[j]=c1[l3-j-1]+48;
printf("Case %d:\n",casee);
casee++;
printf("%s + %s = %s\n",a,b,c);
}
}



原创粉丝点击