C語言實現大整數運算

2021-06-26 06:40:03 字數 1633 閱讀 1118

我們知道,c語言中的整型有short、int、long。ansi c標準定義的整數型別範圍為: 型別

位元數取值範圍

unsigned short int

160至65535(0至2^16-1)

signed short int

16-32768至32767(-2^15至2^15-1)

unsigned int

160至65535(0至2^16-1)

signed int

16-32768至32767(-2^15至2^15-1)

unsigned long

320至4294967295(0至2^32-1)

signed long

32-2147483648至2147483647

(-2^31至2^31-1)

在c程式設計中,無法用兩個很大的整數進行相加、相乘操作,否則會出現資料溢位。未解決這一困局,可用字串來模擬大整數運算。

#include #include #define n 10000

void convert(char *, int);

void addzero(char *, int, int);

int main()

, zflag=0;

char a[n], b[n];

printf("input:\n");

gets(a);

gets(b);

alen = strlen(a);

blen = strlen(b);

convert(a, alen);

convert(b, blen);

if (alen > blen)

else

for (i=0; i9)

printf("result:\n");

i = 0;

while(1)

if (c[i++])

break;

else

zflag++;

for (i=zflag; i=0; i--)

*(p+i+(len2-len1)) = *(p+i);

for (i=0; i

#include #include #define n 100

void multiply(char [n], char [n]);

int main()

void multiply(char a[n], char b[n])

, cflag;

alen = strlen(a);

blen = strlen(b);

for (i=0; i=0; i--)

for (j=blen-1; j>=0; j--)

c[i+j+1] = a[i]*b[j];

for (k=1; k=10)

cflag = c[k]/10;

c[k-1] += cflag;

c[k] = c[k];

}for (i=0; 1; i++)

if (c[i])

break;

while(i < alen+blen)

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

printf("\n");

}

C語言實現矩陣運算

最近在學習機械人運動控制學,用到了矩陣運算,並用c語言實現之 首先宣告該 在ubuntu18.04下執行通過,如若在windows下執行失敗請考慮編譯器版本問題 乙個矩陣最基本的有行數line,列數row和 行數乘以列數個資料 row line 所以用乙個最基本的結構體變數來表示乙個矩陣 矩陣的結構...

C 大整數運算

大數的四則運算 在程式設計中,會遇到一些大整數的運算,這時候即使是long long型別也無法表示大整數。這個時候就可以用結構體來實現大整數的儲存,計算等操作。定義乙個結構體來表示 include include using namespace std struct bign 一般需要用字串讀入大整...

用C語言實現Warshall運算

用c語言實現warshall運算 1.先定義兩個整形變數m n。用scanf輸入,m代表陣列的行,n代表陣列的列。然後定義陣列a m n 2.用兩個for迴圈對陣列進行輸入.寫乙個while迴圈迴圈條件為判斷i是否小於矩陣的列。3.用兩個for迴圈對矩陣每個元素進行判斷,判斷是否等於1,如果等於1,...