高精度的基础题吧,但是这里发现一个很奇怪的问题,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));
}
}
京公网安备 11010502036488号