ACM 1002:A + B Problem II C语言源码

704 阅读3分钟

下面内容是关于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;
}