请各位大神,大牛看看。帮我解下疑,谢谢了。
一下为求两个20~30位数相加的程序,请各位大神指点,我哪错了,谢谢。#include <stdio.h>
#include <string.h>
void main()
{
char a[30],b[30],c[30];
int i,n,m,temp;
printf("please\n");
gets(a);
gets(b);
n=strlen(a);
m=strlen(b);
if(n>m) //a,b数组哪个元素多,输出数组就与哪个数组元素个数相同。
{
for (i=0;i<n;i++) //将数组中的数进行倒置,即高位放在后面,低位在前面,以便相加。
c[i]=a[n-i-1];
for (temp=0,i=0;i<n;i++) //将各个位上的数进行相加
{
c[i]+=b[i]+temp;
temp=0;
if(c[i]>9)
{ //若大于十,前一位就加1
c[i]=c[i]-10;
temp=1;
}
}
for (i=--n;i>=0;i--) //对数进行输出,高位在前,低位在后。
printf("%d",c[i]);
printf("\n");
}
else
{
for (i=0;i<m;i++) //将数组中的数进行倒置,即高位放在后面,低位在前面,以便相加。
c[i]=b[m-i-1];
for (temp=0,i=0;i<m;i++)//将各个位上的数进行相加
{
c[i]+=a[i]+temp;
temp=0;
if(c[i]>9)
{ //将各个位上的数进行相加
c[i]=c[i]-10;
temp=1;
}
}
for (i=--m;i>=0;i--) //对数进行输出,高位在前,低位在后。
printf("%d",c[i]);
printf("\n");
}
}