有进位和没进位

来源:互联网 发布:自制数据采集卡 编辑:程序博客网 时间:2024/05/01 02:25





#include<iostream>

#include<string.h>
#include<stdio.h>
#include<algorithm>           
using namespace std;


//大数相加
void dashu(char s1[],char s2[]){


int a[25]={0},b[25]={0},l1,l2,c,k,i;
l1=strlen(s1);
l2=strlen(s2);
if(l1<l2) k=l2;
 else k=l1;c=k;
for(i=0;i<l1;k--,i++)
    a[k]=s1[l1-1-i]-'0';
for(k=c,i=0;i<l2;k--,i++)
    b[k]=s2[l2-1-i]-'0';
for(i=c;i>=0;i--)
{a[i]+=b[i];
if(a[i]>=10) 
{a[i]-=10;
a[i-1]++;}
}
if(a[0]!=0)
 {for(i=0;i<=c;i++)
printf("%d",a[i]);}
else 
 {for(i=1;i<=c;i++)
printf("%d",a[i]);}


printf(" ");


}
int main()
{

char a[11],b[11];
int c[15];
while((scanf("%s",&a))!=EOF)
{


scanf("%s",&b);
 
int len1=strlen(a);
int len2=strlen(b);
int aa=len1,bb=len2;
int flag=0;
int h=0;
dashu(a,b);
if(len1>len2)
{
      for(int j=0;j<len2;j++)
 {
     aa=aa-1;
bb=bb-1;
  a[aa]=a[aa]-'0'+b[bb];
 if(a[aa]>57)a[aa]-=10;


 }
    
    for(int i=0;i<len1;i++)
{
if(a[i]!='0')
{
flag=1;
        h=i;
break;
}
 }
 if(flag!=0){
 for(;h<len1;h++)
 printf("%c",a[h]);
   printf("\n");
 }
     else printf("0\n");
}
if(len2>len1)
{
 for(int j=0;j<len1;j++)
 {
 aa=aa-1;
bb=bb-1;
 b[bb]=a[aa]-'0'+b[bb];
   if(b[bb]>57)b[bb]-=10;
 }
   for(int i=0;i<len2;i++)
{
if(b[i]!='0')
{
flag=1;
        h=i;
break;
}
 }
 if(flag!=0){
 for(;h<len2;h++)
 printf("%c",b[h]);
   printf("\n");
 }
     else printf("0\n");
}


if(len2==len1)
{
 for(int j=0;j<len2;j++)
 {
aa=aa-1;
bb=bb-1;
 a[aa]=a[aa]-'0'+b[bb];
 if(a[aa]>57)a[aa]-=10;
 }
   for(int i=0;i<len1;i++)
{
if(a[i]!='0')
{
flag=1;
        h=i;
break;
}
 }
 if(flag!=0){
 for(;h<len1;h++)
 printf("%c",a[h]);
   printf("\n");
 }
     else printf("0\n");


}


memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}
0 0
原创粉丝点击