char* addBigInt(char* num1,char* num2)
{
int c = 0;//進位,開始最低進位爲0
int i = strlen(num1)-1;
int j = strlen(num2)-1;
int maxLength = strlen(num1) >= strlen(num2)?(strlen(num1)+1):(strlen(num2)+1);//得到兩個數中較大數的位數
char* rst = (char*)malloc(maxLength+1);//保存結果
int k;
if (rst==NULL)
{
printf("malloc eror!\n");
}
rst[maxLength] = '\0';//字符串最後一位爲'\0'
k = strlen(rst)-1; //指向結果數組的最低位
while ((i>=0)&&(j>=0))
{
rst[k] = ((num1[i]-'0') + (num2[j]-'0')+c)%10+'\0';
c = ( (num1[i]-'0') + (num2[j]-'0')+ c)/10;
--i;
--j;
--k;
}
while (i>=0)
{
rst[k] = ((num1[i]-'0')+c)%10+'0';
c = ((num1[i]-'0')+c)/10;
--i;
--k;
}
while (j>=0)
{
rst[k] = ((num2[j]-'0')+c)%10+'0';
c = ((num2[j]-'0')+c)/10;
--j;
--k;
}
rst[0] = c+'0';
if (rst[0]!='0')
{
return rst;
}
else
{
return rst+1;
}
}
編程實現任意長度的兩個正整數相加 代碼實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.