POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误

------------------------------------------------------------

以此题警告自己:


总结,

1.在数组的使用时,一定别忘了初始化

2.在两种情况复制代码时,一定要小心,注意修改变量名,一不留神就会带来不可估量的后果,一定要仔细挨着一个一个变量的修改,别跳着看着哪个变量就改哪一个变量!

(这个题目中,就是复制了一下,代码,ca,我找了一下午的错。。。。还好终于找到了,一个字母的错,)


-----------------------------------------------------------

//正确,已改正

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char a[1000];
char b[1000];
int main()
{
	int n;
	int i;
	int j;
	int co;
	int la,lb,lc;
	cin>>n;
	while(n--)
	{
		memset(a,0,sizeof(a));//此处注意初始化!!!
		memset(b,0,sizeof(b));//此处注意初始化!!!
		
		cin>>a;
		
		cin>>b;
		
		co=0;
		la=strlen(a);
		lb=strlen(b);
		if(la>lb)
		{
			for(i=0;i<lb;i++)
			{
				a[i]='0'+(a[i]-'0')+(b[i]-'0')+co;
				if(a[i]>'9')
				{
					a[i]=a[i]-10;
					co=1;
				}
				else
					co=0;
			}
			for(i=lb;i<la;i++)
			{
				a[i]=a[i]+co;
				if(a[i]>'9')
				{
					a[i]=a[i]-10;
					co=1;
				}
				else
					co=0;
			}
			a[la]='0'+co;
			la=strlen(a);
			
			for(i=la-1;i>=0;i--)
			{
				if(a[i]!='0')
					break;
				a[i]='';
			}
			if(i==-1) cout<<0<<endl;//此题可以不必考虑0的情况,也可通过//  -----------(另外  此处 输出的整数 0 也可以是 字符  '0'  )
			else
			{
				for(i=0;i<la;i++)
				{
					if(a[i]!='0')
						break;
				}
				
				for(;a[i];i++)
				{
					if(a[i]!='')
						cout<<a[i]-'0';//  -----------(  另外  此处 输出的整数  a[i]-'0'   也可以是 直接输出 字符   a[i]     )
				}
				cout<<endl;
			}
		}
		else
		{
			for(i=0;i<la;i++)
			{
				b[i]='0'+(b[i]-'0')+(a[i]-'0')+co;
				if(b[i]>'9')
				{
					b[i]=b[i]-10;
					co=1;
				}
				else
					co=0;
			}
			for(i=la;i<lb;i++)
			{
				b[i]=b[i]+co;
				if(b[i]>'9')//  ////  就在这!!!错了一个字母,正确应该是b[i],原来是a[i] ,所以错了  !!是 复制的时候 没有 完全把 变量名 改完 ,。
				{
					b[i]=b[i]-10;
					co=1;
				}
				else
					co=0;
			}
			b[lb]='0'+co;
			lb=strlen(b);
			
			for(i=lb-1;i>=0;i--)
			{
				if(b[i]!='0')
					break;
				b[i]='';
			}
			if(i==-1) cout<<0<<endl;//此题可以不必考虑0的情况,也可通过//  -----------(另外  此处 输出的整数 0 也可以是 字符  '0'  )
			else
			{
				for(i=0;i<lb;i++)
				{
					if(b[i]!='0')
						break;
				} 
				for(;b[i];i++)
				{
					if(b[i]!='')
						cout<<b[i]-'0';//  -----------(  另外  此处 输出的整数  a[i]-'0'   也可以是 直接输出 字符   a[i]     )
				}
				cout<<endl;
			} 
		}    
     }
	 return 0; 
}




---------------------------------------------------------

此题目 不包括 

002    1

的情况,

就是 没有 前置 0 的情况 ,因此可以不必考虑 


---------------------------------------------------------

//以下代码为 网上代码,函数有待研究

-------------------------------------

//函数有待研究


#include<iostream>
#include<algorithm>
using namespace std;

int main(void)
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int a,b;
		char s1[13],s2[13];
		scanf("%d%d",&a,&b);
		sprintf(s1,"%d",a);
		sprintf(s2,"%d",b);
		reverse(s1,s1+strlen(s1));
		reverse(s2,s2+strlen(s2));
		sscanf(s1,"%d",&a);
		sscanf(s2,"%d",&b);
		sprintf(s1,"%d",a+b);
		reverse(s1,s1+strlen(s1));
		sscanf(s1,"%d",&a);
		printf("%d
",a);
	}
	return 0;
}




原文地址:https://www.cnblogs.com/gongpixin/p/4477486.html