题目大意:
给出一组大数,相加
解题思路:
无
代码如下:
#include <stdio.h>
#include <string.h>
void fanzhuan(char s[110])
{
int i, j;
char temp;
for(i=0, j=strlen(s)-1; i<j; i++, j--)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
int main(void)
{
int t, i, j,temp,l;
int n;
char s[110], sum[110];
scanf("%d", &t);
while(t--)
{
memset(sum, '0', sizeof(s));
sum[109]='\0';
while(scanf("%s", s)!=EOF)
{
temp=0;
l=strlen(s);
if(l==1 && s[0]=='0')break;
fanzhuan(s);
for(i=0; i<l; i++)
{
n=sum[i]+s[i]-2*'0'+temp;
temp=n/10;
sum[i]=n%10+'0';
}
for(i=l; i<110; i++)
{
if(temp==0)
{
break;
}
n=sum[i]+temp-'0';
temp=n/10;
sum[i]=n%10+'0';
}
}
for(i=108;; i--)
{
if(sum[i]=='0')
sum[i]='\0';
else break;
}
fanzhuan(sum);
printf("%s\n", sum);
if(t)printf("\n");
}
return 0;
}
本文介绍了一种处理大数相加的算法实现方法。通过字符串反转和逐位相加的方式,有效地解决了传统整型变量无法承载过大数值的问题。文章提供了完整的C语言代码示例,包括输入处理、大数相加逻辑及输出结果。
1122

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



