大數加減乘除

2021-10-07 20:19:32 字數 1485 閱讀 8837

對於大數的加減乘除都要先把輸入的大數字串轉成倒序的陣列,再進行運算。

字串的處理:

scanf("%s%s",a1,b1);

len=0;

for(int i=strlen(a1)-1;i>=0;i--)

len=0;

for(int i=strlen(b1)-1;i>=0;i--)

len=max(strlen(a1),strlen(b1));

大數加法

從低位到高位對每一位計算,(兩者相加+進製)%10為該位的值,(兩者相加+進製)/10為下一步的進製。

【注意】所有位數加完之後要注意還有沒有進製。

void add()

} while(clen>1&&c[clen-1]==0)

}

大數乘法

從低位到高位對每一位計算,(兩者相乘+進製)%10為該位的值,(兩者相乘+進製)/10為下一步的進製。

【注意】所有位數乘完之後要注意還有沒有進製,並且進製可能不只一位數。

void mul(int b)

else

} while(clen>1&&c[clen-1]==0)

}

完整程式:

#include#include#includeusing namespace std;

char a1[10000],b1[10000];

int a[10000],b[10000],c[100000],len,clen;

void add()

}void mul(int b)

}int main()

len=0;

for(int i=strlen(b1)-1;i>=0;i--)

len=max(strlen(a1),strlen(b1));

add();

printf("a+b=");

for(int i=clen-1;i>=0;i--)

printf("%d",c[i]);

printf("\n");

sub();

printf("a-b=");

for(int i=clen-1;i>=0;i--)

printf("%d",c[i]);

printf("\n");

mul(12);

printf("a*12=");

for(int i=clen-1;i>=0;i--)

printf("%d",c[i]);

printf("\n");

div(12);

printf("a/12=");

for(int i=clen-1;i>=0;i--)

printf("%d",c[i]);

printf("\n");

}

大數加減乘除

include include include include includeusing namespace std compare比較函式 相等返回0,大於返回1,小於返回 1 int compare string str1,string str2 if cf 0 str char cf 0 st...

大數的加減乘除

當數的位數非常大而常規的資料型別不足以儲存的時候,可以考慮使用大數。即用乙個長的陣列來儲存相應的位數,如int a 100 a的每一位儲存一位數字或幾位數字,根據常規的加減乘除運算對陣列進行操作。使用string型別對陣列進行操作,雖然比用整型簡便,但可 能增加了執行時間。pku1001 expon...

大數運算(加減乘除)

加法 void add char a,char b,char d for i len i 1 i if c i 48 len else break for i 0 i len i d i c len i view code 減法1 d2 d1,如果需要比較大小自己加乙個不麻煩。void dec ch...