A. 大整數加法 c語言 求代碼 要求如下
#include<stdio.h>
#include<string.h>
voidreverse(char*s)/*將字元串逆置*/
{
intlength;
inti=0;
chartemp;
length=strlen(s);
while(i<length-i-1)
{
temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
i++;
}
}
voidAddBigNum(char*s1,char*s2,char*result)
{
intlen1=strlen(s1);
intlen2=strlen(s2);
intacc=0,temp,i;/*acc為進位標記*/
if(s1==NULL||s2==NULL||result==NULL)
{
return;
}
reverse(s1);
reverse(s2);
for(i=0;i<len1&&i<len2;i++)
{
temp=s1[i]-'0'+s2[i]-'0'+acc;/*計算每位的實際和*/
result[i]=temp%10+'0';/*通過求余數來確定每位的最終值*/
if(temp>=10)/*通過這個if..else..條件來判斷是否有進位,並設置進位值*/
acc=1;
else
acc=0;
}
if(i<len1)/*兩個加數位數不同*/
{
for(;i<len1;i++)
{
temp=s1[i]-'0'+acc;/*依舊要考慮進位,比如9999+1的情況*/
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}
if(i<len2)
{
for(;i<len2;i++)
{
temp=s2[i]-'0'+acc;
result[i]=temp%10+'0';
if(temp>=10)
acc=1;
else
acc=0;
}
}
if(acc==1)/*考慮如:123+911=1034的情況,如果不增加這個條件會得到結果為034,進位被舍棄*/
result[i++]='1';
result[i]='