/*思想是新建两个字符串指针分别指向两串字符串的末尾数据,然后开始往前加*/
直接上程序:
/*大数相加*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void add(char a[],char b[])
{
int len_a = strlen(a);
int len_b = strlen(b);
char* p = a + len_a - 1;
char* q = b + len_b - 1;
int len = 0;
int flag = 0;
int temp = 0;
char * c = NULL; //建立新的字符串存储数据
int num = 0;
if (len_a > len_b)
{
c = (char*)malloc(len_a+1); //分配空间
}
else
{
c = (char*)malloc(len_b+1);
}
while(p >= a || q >= b)
{
temp = 0;
if (p >= a)
{
temp += *p - '0';
p--;
}
if (q >= b)
{
temp += *q - '0';
q--;
}
if (flag != 0)
{
temp++;
}
if (temp >= 10)
{
flag++;
temp %= 10;
}
else
{
flag = 0;
}
*c++ = temp+'0';
num++;
}
if (flag != 0)
{
*c++ = '1';
num++;
}
while (num>=0)
{
c--;
printf("%c",*c);
num--;
}
c++;
free(c);
}
int main(void)
{
char a[80];
char b[80];
memset(a,0,80);
memset(b,0,80);
printf("input a:");
scanf("%s",a);
printf("input b:");
scanf("%s",b);
add(a,b);
return 0;
}