超大数相加
这里超大数表示已经超出int、long、long long 范围的数字,所以不能简单的相加。此时就要用字符串,把输入的内容储存在字符串中,通过字符与数字之间的关系计算结果。
思路:
1.输入xxxx+xxxxxx,已‘+’分割成两个子串。
2.逆序两个子串,末位变成首位对齐,按位相加,大于10则向后位进一。
3.需要考虑到两个数长度不同的情况。
4.再把最后的结果逆序输出,就得到了最终正向相加的结果
代码如下:
#include <stdio.h>
#include <string.h>
void reverse(char *s,int len);
char * addLargeNumber(char *s1,char *s2);
int main(int argc, char const *argv[])
{
char str[100];
int len[10];//截取的每个子串的长度
scanf("%s",str);
char *sep = "+-*/";
char *p = strtok(str,sep);
char *s = p;
char *k = p;
len[0] = strlen(p);
reverse(p, len[0]);
puts(p);
while(1)
{
s = strtok(NULL, sep);
if (s == NULL)
{
break;
}
len[1] = strlen(s);
reverse(s,len[1]);
puts(s);
k = s;//
}
printf("access to addLargeNumber\n");
p = addLargeNumber(p,k);
len[2] = strlen(p);
reverse(p

这篇博客介绍如何在C语言中处理超大数相加的问题,由于超过int、long、long long类型的数字范围,因此采用字符串进行计算。通过将输入的数字字符串逆序,对齐后逐位相加,遇到进位则向后位累加。同时,考虑了两个数长度不同的情况。最终,将计算结果逆序输出得到正向相加的和。
最低0.47元/天 解锁文章
326

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



