高精度的基础题吧,但是这里发现一个很奇怪的问题,memset初始化的问题, memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c));
这里我加了初始化之后就没有问题了,但是a和b这两个数组是直接赋值的,为什么我不对他们俩个初始化之后会出现这样的问题,有点每台弄明白,注意不加初始化的代码是有用例不能通过的,但是这个问题我确实没有想明白为什么,跟这节课的一个错题非常像,估计是同一个问题,解决之后再来更新这个文章吧。那道题是hj36,字符串加密。
#include<stdio.h> #include<string.h> char sa[10005],sb[10005]; int a[10005],b[10005],c[10005]; int main(){ while(scanf("%s %s",sa,sb)!=EOF){ int lena=strlen(sa); int lenb=strlen(sb); //数字反转过来 for(int i=0;i<lena;i++){ a[i]=sa[lena-i-1]-'0'; } for(int i=0;i<lenb;i++){ b[i]=sb[lenb-i-1]-'0'; } int len=lena>lenb?lena:lenb; for(int i=0;i<len;i++){ c[i]=a[i]+b[i]+c[i]; if(c[i]>=10){ c[i]=c[i]%10; c[i+1]=1; } } if(c[len]==1){ len++; } for(int i=len-1;i>=0;i--){ printf("%d",c[i]); } printf("\n"); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); } }