具体代码如下 先放上错误代码(只适合位数对齐的)
#include
#include
#define N 500
int main(void)
{
char s1[N],s2[N];
int cp=0,x,k;
int R[N];
gets(s1);
gets(s2);
//放上循环变量 i(跑s1),j(跑s2), k(给R里面存值)
int i=strlen(s1)-1;
int j=strlen(s2)-1;
k=N-1;
while (i>-1&&j>-1)//数组没完就进循环
{
x=(s1[i--]-'0')+(s2[j--]-'0')+cp;
R[k--]=x%10;
cp=x/10;
}
if(cp)//要是cp还有值 就把进位加上去
R[k--]=cp;
for(i=k+1;i printf("%d",R[i]); return 0; } 下面附上正确代码: #include #include #define N 500 int main(void) { char s1[N],s2[N]; int cp=0,x,k; int R[N]; gets(s1); gets(s2); //放上循环变量 i(跑s1),j(跑s2), k(给R里面存值) int i=strlen(s1)-1; int j=strlen(s2)-1; k=N-1; while (i>-1||j>-1)//只要有一个数组没完就进循环 { if(i>-1&&j>-1) //两个都没完 x=(s1[i--]-'0')+(s2[j--]-'0')+cp; else if(j>-1&&i<0)//s1完了 s2没完 x=s2[j--]-'0'+cp;//处理s2 else x=s1[i--]-'0'+cp;//处理s1 R[k--]=x%10; cp=x/10; } if(cp)//要是cp还有值 就把进位加上去 R[k--]=cp; //为什么没有让cp=cp/10;呢?? //因为加法最多进位一位所以不需要哦。 //昨天的乘法有可能进两位(100)所以要加上 for(i=k+1;i printf("%d",R[i]); return 0; } (代码是经过运行测试可以执行出结果的!!!) 谢谢大家支持,我会尽快更新的,大家和我一起努力哦. 我是小纸人. 具体代码如下 先放上错误代码(只适合位数对齐的) #include #include #define N 500 int main(void) { char s1[N],s2[N]; int cp=0,x,k; int R[N]; gets(s1); gets(s2); //放上循环变量 i(跑s1),j(跑s2), k(给R里面存值) int i=strlen(s1)-1; int j=strlen(s2)-1; k=N-1; while (i>-1&&j>-1)//数组没完就进循环 { x=(s1[i--]-'0')+(s2[j--]-'0')+cp; R[k--]=x%10; cp=x/10; } if(cp)//要是cp还有值 就把进位加上去 R[k--]=cp; for(i=k+1;i printf("%d",R[i]); return 0; } 下面附上正确代码: #include #include #define N 500 int main(void) { char s1[N],s2[N]; int cp=0,x,k; int R[N]; gets(s1); gets(s2); //放上循环变量 i(跑s1),j(跑s2), k(给R里面存值) int i=strlen(s1)-1; int j=strlen(s2)-1; k=N-1; while (i>-1||j>-1)//只要有一个数组没完就进循环 { if(i>-1&&j>-1) //两个都没完 x=(s1[i--]-'0')+(s2[j--]-'0')+cp; else if(j>-1&&i<0)//s1完了 s2没完 x=s2[j--]-'0'+cp;//处理s2 else x=s1[i--]-'0'+cp;//处理s1 R[k--]=x%10; cp=x/10; } if(cp)//要是cp还有值 就把进位加上去 R[k--]=cp; //为什么没有让cp=cp/10;呢?? //因为加法最多进位一位所以不需要哦。 //昨天的乘法有可能进两位(100)所以要加上 for(i=k+1;i printf("%d",R[i]); return 0; } (代码是经过运行测试可以执行出结果的!!!) 谢谢大家支持,我会尽快更新的,大家和我一起努力哦. 我是小纸人.