解题感悟:
- char类型只可保存小于128的数,超出的话会溢出,所以每读入一个大数,加完后需要马上进位,否则数目一多,很大可能会溢出,这时就只能 WA 了 (说多了都是泪啊/(ㄒoㄒ)/~~);
- 注意特殊数据 ,例如 0000 00001;
#include<stdio.h>
#include<string.h>
#define MAXN 105
char bigint[MAXN],sum[MAXN];
int main(void){
memset(bigint,0,sizeof(char)*MAXN);
memset(sum,'0',sizeof(char)*MAXN);
sum[MAXN]='\0';
int i,k,len;
while(scanf("%s",bigint) ){
len=strlen(bigint);
if(len==1 && bigint[0] == '0')
break;
for(i=len-1,k=MAXN-1;i>=0;--i,--k)
sum[k] += bigint[i]-'0';
for(i=MAXN-1;i>0;--i){
int temp=sum[i]-'0';
sum[i-1] += temp / 10;
sum[i] = temp % 10 +'0';
}
}
for(i=0;i<MAXN;++i)
if(sum[i]!='0' || i == MAXN - 1)
break;
puts(sum+i);
return 0;
}
本文探讨了在编程中使用char类型处理大数相加时遇到的溢出问题,提供了有效解决方法,并强调了对特殊数据的处理。通过实例展示了如何正确地进行大数相加操作,避免了因溢出导致的程序错误。
219

被折叠的 条评论
为什么被折叠?



