首页 > 代码库 > POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误

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]=‘\0‘;			}			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]!=‘\0‘)						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]=‘\0‘;			}			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]!=‘\0‘)						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\n",a);	}	return 0;}