http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1158
这是一道大整数加法的基础题,不多解释,很容易看懂,关键在于前导零和数末端的零

#include<stdio.h>
#include<string.h>
int main(){
    int n,flag,i,j,k,l=0,l1=0,len,len1,a[210]={0},a1[210]={0};
    char s[210],s1[210];
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%s%s",s,s1);
        len=strlen(s);
        for(j=0;j<len;j++)
            a[j]=s[j]-'0';
        len1=strlen(s1);
        for(j=0;j<len1;j++)
            a1[j]=s1[j]-'0';
        if(len>len1)
            for(j=0;j<len;j++){
                a[j]+=a1[j];
                if(a[j]>=10){
                    a[j]-=10;
                    a[j+1]++;
                }
            }
        else
            for(j=0;j<len1;j++){
                a[j]+=a1[j];
                if(a[j]>=10){
                    a[j]-=10;
                    a[j+1]++;
                }
 
            }
        for(k=200;k>=0;k–)
            if(a[k])
                break;
        flag=0;
        j=0;
        while(j<=k){
            if(a[j])
                flag=1;
            if(flag){
                for(;j<=k;j++)
                printf("%d",a[j]);
            }
            j++;
        }
        printf("\n");
        for(j=0;j<200;j++)
            a[j]=a1[j]=s[j]=s1[j]=0;
    }
    return 0;
}
 

发表评论

电子邮件地址不会被公开。

Post Navigation