char与int的转化整体可以用atoi,局部的话可以自己转化一下
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
char str1[10001] = {0};
char str2[10001] = {0};
int sum[10001] = {0};
int chartoint(char a)
{
return (int)(a-'0');
}
int main()
{
int i,j,k;//分别表示字符串1字符串2和新的字符串的下标
int m = 0;//进位
gets(str1);
gets(str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
i = len1-1;
j = len2-1;
k = 0;
while(i>=0 && j>=0)
{
//直接使用(int)强转不能得到想要的数值
//sum[k++] = ((int)str1[i] + (int)str2[j] + m)%10;
sum[k++] = (chartoint(str1[i]) + chartoint(str2[j]) + m)%10;
//m = ((int)str1[i] + (int)str2[j] + m)/10;
m = (chartoint(str1[i]) + chartoint(str2[j]) + m)/10;
i--;
j--;
}
if(i == -1 && j == -1)
{
if(m != 0)
{
sum[k++] = m;
}
}
else if(i == -1)
{
while(j >= 0)
{
sum[k++] = (chartoint(str2[j]) + m)%10;
m = (chartoint(str2[j]) + m)/10;
j--;
}
if(m != 0)
{
sum[k++] = m;
}
}
else
{
while(i >= 0)
{
sum[k++] = (chartoint(str1[i]) + m)%10;
m = (chartoint(str1[i]) + m)/10;
i--;
}
if(m != 0)
{
sum[k++] = m;
}
}
//偷懒直接一位一位输出
for(i=k-1; i>=0; i--)
{
printf("%d",sum[i]);
}
printf("\n");
return 0;
}