下面内容是关于ACM 1002:A + B Problem II C语言的内容。
#include <stdio.h>
void main()
{
while(T--)
{
char c[1000],a[1000],b[1000];
int x=0,y=0,t=0,v=0,j,k,z=0;
for(k=0;k<j;k++,z++,x--,y--)
{
}
if(x<y){
{
t=b[y-1]-48+v;
c[z]=48+t%10;
v=t/10;
}
}else{
j=x-y;
for(k=0;k<j;k++,z++,x--)
{
t=a[x-1]-48+v;
c[z]=48+t%10;
v=t/10;
}
}
{
z++;
char d[1000];
x=0;
while(c[x])x++;
printf("Case %d:n",m);
m++;
for(k=0;k<j;k++,x--)
{
}
printf("%s + %s = %sn",a,b,d);
if(T)printf("n");
}
}
C语言代码2
#include<stdio.h>
#include<string.h>
#define N 1005
void main()
{
char A[N],B[N],S[N];
int T;
int i,j,k,l;
int flag;
while(scanf("%d",&T)!=EOF)
{
for(i=0;i<T;i++)
{
if(i)
printf("n");
j=0,flag=0;
scanf("%s%s",&A,&B);
k=strlen(A)-1;
l=strlen(B)-1;
while((k+1)&&(l+1))
{
S[j]=(A[k]-'0')+(B[l]-'0')+flag;
if(S[j]>=10)
{
S[j]=S[j]-10;
flag=1;
}
else flag=0;
k--,l--,j++;
}
if(k+1)
while(k>=0)
{
S[j]=(A[k]-'0')+flag;
if(S[j]>=10)
{
S[j]=S[j]-10;
flag=1;
}
else flag=0;
k--;
j++;
}
else if(l+1)
while(l>=0)
{
S[j]=(B[l]-'0')+flag;
if(S[j]>=10)
{
S[j]=S[j]-10;
flag=1;
}
else flag=0;
l--;
j++;
}
if(flag)
S[j]=flag;
else j--;
printf("Case %d:n",i+1);
printf("%s + %s = ",A,B);
while(j>-1)
printf("%d",S[j--]);
printf("n");
}
}
}
C语言参考代码3
#include <iostream>
#include <algorithm>
using namespace std;
int nCases;
int m[1001], n[1001];
char a[1001], b[1001];
int main()
{
scanf("%d", &nCases);
for(int i = 1; i <= nCases; ++i)
{
memset(m, 0, sizeof(m));
memset(n, 0, sizeof(n));
getchar();
scanf("%s %s", a, b);
int len1 = strlen(a);
int len2 = strlen(b);
{
int cnt = 0;
for(int j = len1-1; j >= 0; --j)
m[cnt++] = a[j] - '0';
cnt = 0;
for(int j = len2-1; j >= 0; --j)
n[cnt++] = b[j] - '0';
}
else
{
int cnt = 0;
for(int j = len1-1; j >= 0; --j)
n[cnt++] = a[j] - '0';
cnt = 0;
for(int j = len2-1; j >= 0; --j)
m[cnt++] = b[j] - '0';
}
int len = len1 > len2? len2: len1;
for(int j = 0; j < len; ++j)
{
m[j] += n[j];
if(m[j] >= 10)
k = j+1;
m[j+1] += (m[j]/10);
m[j] %= 10;
}
printf("Case %d:n", i);
printf("%s + %s = ",a, b);
len = len1>len2? len1: len2;
if(k < len-1)
k = len-1;
for(int j = k; j >= 0; --j)
printf("%d", m[j]);
i == nCases? printf("n"): printf("nn");
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
void Add(string a,string b,char sum[],int& count)
count = 0;
while(i>=0&&j>=0)
{
sum[count++] = temp%10+'0';
--i;
--j;
}
if(i>=0)
{
while(i>=0)
{
temp = a[i]-'0'+carryIn;
sum[count++] = temp%10+'0';
carryIn = temp/10;
--i;
}
}
if(j>=0)
{
while(j>=0)
{
temp = b[j]-'0'+carryIn;
sum[count++] = temp%10+'0';
carryIn = temp/10;
--j;
}
}
if(carryIn>0)
{
sum[count++] = '1';
}
}
void reversePrint(char arr[],int len)
for(int i=len-1;i>=0;--i)
{
cout<<arr[i];
}
cout<<endl;
}
int main()
{
string a,b;
memset(sum,'0',2000);
int nCount = 0;
int caseNum,curCase=0;
cin>>caseNum;
do
{
curCase++;
cin>>a>>b;
Add(a,b,sum,nCount);
cout<<"Case "<<curCase<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
reversePrint(sum,nCount);
if(curCase<caseNum)
{
cout<<endl;
}
}while(curCase<caseNum);
return 0;
}
C++代码2
#include <iostream>
#include <algorithm>
using namespace std;
int nCases;
int m[1001], n[1001];
char a[1001], b[1001];
int main()
{
scanf("%d", &nCases);
for(int i = 1; i <= nCases; ++i)
{
memset(m, 0, sizeof(m));
memset(n, 0, sizeof(n));
getchar();
scanf("%s %s", a, b);
int len1 = strlen(a);
int len2 = strlen(b);
{
int cnt = 0;
for(int j = len1-1; j >= 0; --j)
m[cnt++] = a[j] - '0';
cnt = 0;
for(int j = len2-1; j >= 0; --j)
n[cnt++] = b[j] - '0';
}
else
{
int cnt = 0;
for(int j = len1-1; j >= 0; --j)
n[cnt++] = a[j] - '0';
cnt = 0;
for(int j = len2-1; j >= 0; --j)
m[cnt++] = b[j] - '0';
}
int len = len1 > len2? len2: len1;
for(int j = 0; j < len; ++j)
{
m[j] += n[j];
if(m[j] >= 10)
k = j+1;
m[j+1] += (m[j]/10);
m[j] %= 10;
}
printf("Case %d:n", i);
printf("%s + %s = ",a, b);
len = len1>len2? len1: len2;
if(k < len-1)
k = len-1;
for(int j = k; j >= 0; --j)
printf("%d", m[j]);
i == nCases? printf("n"): printf("nn");
}
return 0;
}