1.A+B
#include<stdio.h> #include<string.h> int main() { char a1[1100],b1[1100]; int T; while(scanf("%d",&T)!=EOF) { int i1,i,j,k,k1,La,Lb,t,L; for(i1=1;i1<=T;i1++) { int a[1100]={0},b[1100]={0},c[1100]={0}; scanf("%s%s",&a1,&b1); La=strlen(a1); Lb=strlen(b1); printf("Case %d:\n",i1); for(i=0;i<La;i++)//输出第一个数 { printf("%c",a1[i]); } printf(" + "); for(i=0;i<Lb;i++)//输出第二个数 { printf("%c",b1[i]); } printf(" = "); for(j=La-1,t=0;j>=0;j--,t++)//反序 { a[t]=a1[j]-'0'; } for(k=Lb-1,t=0;k>=0;k--,t++)//反序 { b[t]=b1[k]-'0'; } L=(La>=Lb?La:Lb); for(i=0;i<=L-1;i++)//加法运算 { c[i]=(a[i]+b[i])+c[i]; if(c[i]>=10) { c[i]=c[i]%10; c[i+1]++; } } if(c[L]!=0) { L++; } for(i=L-1;i>=0;i--)//输出运算结果 { printf("%d",c[i]); } printf("\n"); if(i1!=T) { printf("\n"); } } } return 0; }2.多个大数相加(1)
#include <cstdio> #include <cstring> int sum[147]; char s[147]; void Add( char ss[]) { int len = strlen(ss); int z = 1; for(int i = len - 1 ; i >= 0 ; i-- ) { sum[z] +=(ss[i]-'0'); sum[z+1] +=sum[z]/10; sum[z]%=10; z++; } } int main() { int t; while(~scanf("%d",&t)) { while(t--) { memset(sum,sizeof(sum)); while(scanf("%s",s)&&s[0]!='0') { Add(s); } int flag = 0; for(int i = 147; i > 1 ; i-- ) { if(flag == 0 && sum[i] == 0) continue; else { flag = 1; printf("%d",sum[i]); } } printf("%d\n",sum[1]); if(t != 0) printf("\n"); } } return 0; }
3.多个大数相加(2)
#include <stdio.h> #include <string.h> int sum[147]; char s[147]; void Add( char ss[]) { int len = strlen(ss); int z = 1; for(int i = len - 1 ; i >= 0 ; i-- ) { sum[z] +=(ss[i]-'0'); sum[z+1] +=sum[z]/10; sum[z]%=10; z++; } } int main() { memset(sum,s) && strcmp(s,"0")!=0) { Add(s); } int flag = 0; for(int i = 147; i > 1 ; i-- ) { if(flag == 0 && sum[i] == 0) continue; else { flag = 1; printf("%d",sum[1]); return 0; }