free性欧美人与dog,成年免费视频黄网站zxgk,久热国产精品视频一区二区三区,.欧美精品一区二区三区,国产人与zoxxxx另类

怎么加減整數(shù)

導(dǎo)讀怎么加減整數(shù),先把整數(shù)通分化成分?jǐn)?shù)再相加減。舉例說明如下:1、加法:1+1/3整數(shù)1可以寫成任何分子分母相同的分?jǐn)?shù),分母0除外,由此可得:1+1/3=3/3+1/3=4/3。2、減法:1-1/11樣先把1通分成分母11的分?jǐn)?shù),即11/11,由此可得:1-1/11=11/11-1/11=10/11本文我們將從以下幾個(gè)部分來詳細(xì)介紹如何加減整數(shù):“堆起來”和“消下去”、計(jì)算三

先把整數(shù)通分化成分?jǐn)?shù)再相加減。 舉例說明如下: 1、加法:1+1/3 整數(shù)1可以寫成任何分子分母相同的分?jǐn)?shù),分母0除外,由此可得: 1+1/3=3/3+1/3=4/3。 2、減法:1-1/11 樣先把1通分成分母11的分?jǐn)?shù),即11/11,由此可得: 1-1/11=11/11-1/11=10/11

本文我們將從以下幾個(gè)部分來詳細(xì)介紹如何加減整數(shù):“堆起來”和“消下去”、計(jì)算三重負(fù)號(hào)的情況、計(jì)算雙重負(fù)號(hào)的情況、計(jì)算負(fù)數(shù)減負(fù)數(shù)(向下挖)的問題、計(jì)算單一減法的問題

所謂“整數(shù)”是對(duì)可正可負(fù)或是零的“數(shù)”(不是1/2、 2.7這樣的不完整的數(shù))的巧妙的叫法。(整數(shù)的例子有 3、 -12、 17、 0、 7000、 -582 等等,而非整數(shù)的例子有 4/5、 3.08、 -4.2、 -16/3等等)。加減法則如果全部寫出來的話,會(huì)比較復(fù)雜。但你只要記住,無論是正整數(shù)、負(fù)整數(shù)或正、負(fù)整數(shù)相加減,都牽扯到兩個(gè)問題:1、最終的值是堆起來,還是消下去? 2、結(jié)果是負(fù)的,還是正的?第一部分:“堆起來”和“消下去”

運(yùn)算法規(guī)則: 1.整數(shù)加法計(jì)算法則 相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)相加滿十,就向前一位進(jìn)一。 2.整數(shù)減法計(jì)算法則 相同數(shù)位對(duì)齊,從低位減起,哪一位上的數(shù)不夠減,就從它的前一位退一作十,和本位上的數(shù)合并在一起,再減。 3、整數(shù)乘法法則:

第1步:理解關(guān)鍵的概念。

整數(shù)加法是基本加法運(yùn)算的一種。加法即是將二個(gè)以上的整數(shù),合成一個(gè)數(shù),其結(jié)果稱為和。表達(dá)加法的符號(hào)為加號(hào)(+)。進(jìn)行加法時(shí)以加號(hào)將各項(xiàng)連接起來。把和放在等號(hào)(=)之后。例:1、2和4之和是7,就寫成:1+2+4=7。 整數(shù)減法法則分三種情形表

“堆起來”、“消下去”分別意味著什么?你可以把正整數(shù)想象為黑色的籌碼,負(fù)整數(shù)想為紅色的籌碼,然后假設(shè)黑色和紅色的籌碼可以互相抵消。

整數(shù)加減法是從最低位(個(gè)位)開始計(jì)算,一一對(duì)應(yīng)進(jìn)行加減。加法運(yùn)算中,如果某一數(shù)位之和超過10,則和的個(gè)位保留,十位進(jìn)入高一數(shù)位。減法運(yùn)算中,如果某一數(shù)位被減數(shù)小于減數(shù),則被減數(shù)向高一數(shù)位借1,變成兩位數(shù)減一位數(shù)。 分?jǐn)?shù)加減運(yùn)算中,

4 + 7即4個(gè)黑籌碼放在7個(gè)黑籌碼上。最后得到: 11 黑籌碼。 因此 4 + 7 堆起來變?yōu)?11。

整數(shù)、小數(shù)和分?jǐn)?shù)加減法的相同點(diǎn),就是把相同的計(jì)數(shù)單位的數(shù)相加或相減. 整數(shù)加、減計(jì)算法則: 1)要把相同數(shù)位對(duì)齊,再把相同計(jì)數(shù)單位上的數(shù)相加或相減; 2)哪一位滿十就向前一位進(jìn)。 2、小數(shù)加、減法的計(jì)算法則: 1)計(jì)算小數(shù)加、減法,先把

-4 + (-7) 即4個(gè)紅色籌碼堆在7個(gè)紅色籌碼上面。最終得到:11 紅色籌碼。 因此 -4 + -7 堆起來是-11。

先把百分?jǐn)?shù)化成小數(shù),在跟整數(shù)相加減。如:78%+54=0.78+54=54.78 5-15%=5-0.15=4.85

4 + (-7) 即4個(gè)黑色籌碼堆在7個(gè)紅色籌碼上面。4個(gè)黑色籌碼和4個(gè)紅色籌碼抵消,得到 3 個(gè)剩下的紅籌碼。因此4 + -7 消下去變?yōu)?3。

可以用數(shù)組制作。 都知道int,float,double的精度和可使用的范圍都是有限的,對(duì)于大數(shù)相減,總是會(huì)產(chǎn)生溢出的情況。 所以對(duì)于大數(shù)相減,認(rèn)為可以用數(shù)組來做。比如,定義一個(gè)數(shù)組a[100];a[1]用來保存?zhèn)€位數(shù),a[2]用來保存十位數(shù),等等。 如果a[i]

-4 + 7 即4個(gè)紅色籌碼堆在7個(gè)黑色籌碼上面。4個(gè)紅色籌碼和4個(gè)黑色籌碼抵消,得到 3 個(gè)剩下的黑籌碼。 因此 -4 + 7 消下去是3。

這對(duì)于初學(xué)者還真不簡(jiǎn)單;要產(chǎn)生真正的隨機(jī)數(shù),必須用時(shí)間函數(shù)初始化隨機(jī)種子,還有相應(yīng)提示等。你參考下下面的代碼: #include#include#includeint main(){ int i,a[20],answer,score=0; srand(time(NULL)); for(i=0;i

第2步:根據(jù)題意,把籌碼堆起來,或消下去。

代碼 #include int main() { int a,b; scanf("%d %d",&a,&b); printf("%dt",a + b); printf("%dt",a - b); printf("%dt",a * b); printf("%dt",a / b); return 0; } 運(yùn)行截圖 分析C語言中的加減乘除和數(shù)學(xué)中的加減乘除一樣,不同在于符號(hào)的

4、 7、 -4、 -7四個(gè)數(shù)字無論怎么加減組合,都符合上面四種情況之一。每種情況都要用不同方法。

代碼 #include int main() { int a,b; scanf("%d %d",&a,&b); printf("%dt",a + b); printf("%dt",a - b); printf("%dt",a * b); printf("%dt",a / b); return 0; } 運(yùn)行截圖 分析C語言中的加減乘除和數(shù)學(xué)中的加減乘除一樣,不同在于符號(hào)的

第二部分:計(jì)算三重負(fù)號(hào)的情況

首先根據(jù)小數(shù)后的位數(shù)在整數(shù)后加小數(shù)點(diǎn)以及相應(yīng)的補(bǔ)0。 然后根據(jù)減法法則進(jìn)行相減借位計(jì)算,最后算出正確答案即可。 舉個(gè)例子: 10 ? 7.25 = 2.75 擴(kuò)展資料豎式其他運(yùn)算 乘法豎式計(jì)算要注意四個(gè)問題: 1、兩個(gè)數(shù)的最后一位要對(duì)齊。 2、盡

第1步:看看哪些是“三重負(fù)號(hào)”的情況。

#include #include #include #define N 100 int main(int argc, char const *argv[]) { char arr[N] = {}; gets(arr); char brr[N] = {}; gets(brr); int len1,len2,i = 0,j = 0; len1 = strlen(arr); len2 = strlen(brr); int len = len1>len2?

比如"-4 - - 7"。

如何用位運(yùn)算實(shí)現(xiàn)整數(shù)的加減法 位運(yùn)算的思想可以應(yīng)用到很多地方,這里簡(jiǎn)單的總結(jié)一下用位運(yùn)算來實(shí)現(xiàn)整數(shù)的四則運(yùn)算。 1.整數(shù)加法 [cpp] view plain copy 在CODE上查看代碼片派生到我的代碼片 int Add(int a,int b) { for(int i = 1; i; i

第2步:把減法看成加一個(gè)負(fù)數(shù)。

#include #include #include char a[1000],b[1000]; int c[1001]; int x,y,i,j,k; int blen=0; int alen=0; char flag = '+';//用于減法標(biāo)記負(fù)數(shù) int Subtract(char *a, char *b, int len) { //為了避免代碼重復(fù),將共同的計(jì)算抽出寫成函數(shù) int

這里減去-7可以看做加上7 。因此-4 - (-7)就是 -4 + (+7) 。注意4還是負(fù)數(shù),這里有個(gè)口訣:保變變,即保住-4,后面-號(hào)變?yōu)?,然后-7變?yōu)? 。然后加起來就得到答案了。

1.整數(shù)加法計(jì)算法則:相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)相加滿十,就向前一位進(jìn)一. 2.整數(shù)減法計(jì)算法則:相同數(shù)位對(duì)齊,從低位減起,哪一位上的數(shù)不夠減,就從它的前一位退一作十,和本位上的數(shù)合并在一起,再減.

第3步:把值消掉。

計(jì)算整數(shù)的加減法時(shí)要注意:相同數(shù)位對(duì)齊,從個(gè)位算起。計(jì)算加法時(shí),哪能一位上的數(shù)滿十,就要向前一位進(jìn)一。計(jì)算減法時(shí),哪一位上的數(shù)不夠減,就要向前一位退一作十再計(jì)算。

把紅色籌碼和黑色籌碼消掉,最后剩下一種顏色的籌碼。

用rand()產(chǎn)生隨機(jī)數(shù),rand()會(huì)產(chǎn)生從0到一個(gè)很大的數(shù),我記不清了,反正很大。如果想出現(xiàn)100以內(nèi)的,就用rand()%100。你可以定義三個(gè)int型整數(shù),兩個(gè)表示加或者減的對(duì)象,另一個(gè)標(biāo)示加或者減,因?yàn)橹灰霈F(xiàn)兩種情況之一,所以可以用rand()%2,這

第4步:決定答案符號(hào)。

如果你說的是筆算 當(dāng)然得按位算減法了。 每個(gè)數(shù)位上的數(shù)字都有不同的權(quán)比如十位的權(quán)是10,而個(gè)位是1 如果直接做減法就錯(cuò)了。 如果你問的是計(jì)算機(jī)系統(tǒng)位對(duì)齊,尋址減法要求的數(shù)據(jù)必須是被減數(shù)的存儲(chǔ)大校 不然SUB指令無法為計(jì)算器數(shù)據(jù)線設(shè)置輸入電

如果黑色籌碼較多,則得到答案是正數(shù),如果紅的多,則答案是負(fù)數(shù)。

運(yùn)算法規(guī)則: 1.整數(shù)加法計(jì)算法則 相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)相加滿十,就向前一位進(jìn)一。 2.整數(shù)減法計(jì)算法則 相同數(shù)位對(duì)齊,從低位減起,哪一位上的數(shù)不夠減,就從它的前一位退一作十,和本位上的數(shù)合并在一起,再減。 3、整數(shù)乘法法則:

例如: -4 - (-7) 變?yōu)?-4 + (+7) ,即相當(dāng)于(-4) + 7,得到3。

減法是四則運(yùn)算之一,從一個(gè)數(shù)量中減去另一個(gè)數(shù)量的運(yùn)算叫做減法; 已知兩個(gè)加數(shù)的和與其中一個(gè)加數(shù),求另一個(gè)加數(shù)的運(yùn)算叫做減法。 表示減法的符號(hào)是“-”,讀作減號(hào)。用來計(jì)算減量。 借位計(jì)算 減法不一定要硬算,也可以簡(jiǎn)算。這個(gè)方法適用于學(xué)前

例如: -12 - (-2) 變?yōu)?-12 + +2 ,即相當(dāng)于-12 + 2,得到-10。

運(yùn)算法則 1.整數(shù)加法計(jì)算法則: 相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)相加滿十,就向前一位進(jìn)一. 2.整數(shù)減法計(jì)算法則: 相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)不夠減,就從它的前一位退一作十,和本位上的數(shù)合并在一起,再減. 3.整數(shù)乘法計(jì)算法則:

第三部分:計(jì)算雙重負(fù)號(hào)的情況

運(yùn)算法規(guī)則: 1. 整數(shù)加法計(jì)算法則: 相同數(shù)位對(duì)齊,從低位加起,哪一位上的數(shù)相加滿十,就向前一位進(jìn)一。 2. 整數(shù)減法計(jì)算法則: 相同數(shù)位對(duì)齊,從低位減起,哪一位上的數(shù)不夠減,就從它的前一位退一作十,和本位上的數(shù)合并在一起,再減。

第1步:看看有什么問題符合 "4 - (-7)"的情況。

#include int main(){ int a, b; scanf("%d %d", &a, &b); printf("%d + %d = %dn", a, b, a + b); printf("%d - %d = %dn", a, b, a - b); printf("%d * %d = %dn", a, b, a * b); printf("%d / %d = %dn", a, b, a / b); return 0;}

這種情況我們稱之為雙重負(fù)號(hào)。

當(dāng)然可以 int a[10]; int *p =&a[5]; p += 3; // p就指向了a[8] p -= 3; // p就又指向了a[5]

第2步:

把雙重負(fù)號(hào)變?yōu)殡p重正號(hào)

整數(shù)加減法的計(jì)算方法,需要注意什么。計(jì)算一位小數(shù)加減法時(shí)要注意什 整數(shù)加減法應(yīng)注意:相同數(shù)位對(duì)齊 小數(shù)加減法應(yīng)注意:小數(shù)點(diǎn)對(duì)齊 分?jǐn)?shù)加減法應(yīng)注意:分母不同時(shí) 要先通分 再計(jì)算

。

我們把4 - (-7) 變?yōu)?4 + (+7)。

用rand()產(chǎn)生隨機(jī)數(shù),rand()會(huì)產(chǎn)生從0到一個(gè)很大的數(shù),我記不清了,反正很大。如果想出現(xiàn)100以內(nèi)的,就用rand()%100。你可以定義三個(gè)int型整數(shù),兩個(gè)表示加或者減的對(duì)象,另一個(gè)標(biāo)示加或者減,因?yàn)橹灰霈F(xiàn)兩種情況之一,所以可以用rand()%2,這

第3步:

將值堆起來。

先乘除,后加減,有括號(hào)的先算括號(hào)里的. 整數(shù)加、減計(jì)算法則: 1)要把相同數(shù)位對(duì)齊,再把相同計(jì)數(shù)單位上的數(shù)相加或相減; 2)哪一位滿十就向前一位進(jìn)。 2、小數(shù)加、減法的計(jì)算法則: 1)計(jì)算小數(shù)加、減法,先把各數(shù)的小數(shù)點(diǎn)對(duì)齊(也就是把相同數(shù)

把所有籌碼(這里已經(jīng)全部變?yōu)楹谏耍┖喜⑵饋? 。

第4步:

得到答案是正數(shù)。

例如 4 - (-7) 變?yōu)?4 + (+7)或者直接寫 4 + 7等于11。

例如 15 - (-3) 變?yōu)?15 + (+3) 或者直接寫15 + 3 等于18。

第5步:檢查一下。

如果首數(shù)字是負(fù)數(shù),則你可能寫錯(cuò)符號(hào),或該題符合“三重負(fù)號(hào)”的情況,不符合本情況。

第四部分:計(jì)算負(fù)數(shù)減負(fù)數(shù)(向下挖)的問題

第1步:

看看題目是否符合"-4 - 7。

"

這里就不是 "雙重負(fù)號(hào)" 了,因?yàn)樨?fù)號(hào)不在一起。

這里可以看成“挖地”的步驟,這樣可以讓你更容易想象點(diǎn)。從水平面開始挖,往下挖 4 英尺 (即-4),然后挖 7 英尺 (即再減7)。最終答案:你往下挖了11 英尺 ,因此 -4 - 7 = -11。

第2步:

不要消成"加加"。

第3步:

可以把減一個(gè)數(shù)變成加個(gè)負(fù)數(shù)。

比如 -4 - 7 變?yōu)?4 + (-7)。

第4步:

把值“堆起來”。

把所有的籌碼堆起來(此時(shí)應(yīng)該都是紅的),變成一整堆籌碼。

第5步:

把答案改成負(fù)數(shù)。

例如: -18 - 5 變?yōu)?-18 + (-5),得到 -23。

例如: -4 - 7 變?yōu)?-4 + (-7), 得到-11。

第五部分:計(jì)算單一減法的問題

第1步:

看看算式是否符合"4 - 7" 或 "7 - 4"這樣的形式。

第2步:

把減法看成加個(gè)負(fù)數(shù)。

因此 4 - 7 變?yōu)?4 + -7。

第3步:

消掉值。

把紅色籌碼和黑色籌碼消掉,直到你只剩下一個(gè)顏色。

第4步:

確定答案是正的還是負(fù)的。

如果之前黑色籌碼較多,則答案是正的;如果紅的較多,則答案是負(fù)的。

例如: 6 - 19 變?yōu)? + (-19) 即-13。

例如: 12 - 30變?yōu)?2 + (-30), 即-18。

第5步:如果第一個(gè)數(shù)大于第二個(gè)數(shù),如"7 - 4",則可以按一般減法處理: 7 - 4 = 3。

你也可以寫成7 + (-4),不過也是沒必要的。

例如: 38 - 15 可以直接運(yùn)算,也可以變?yōu)?8 + (-15)。 無論用哪種方式,都得到23。

小提示

加法還是加法,只有減法需要倒過來。

-4 + (-7) "堆起來變?yōu)? -11。這里的堆起來意思是把絕對(duì)值加起來。比如-4+(-7)= -11,我們直到-11 實(shí)際上比-4 、 -7 要小,但是我們?yōu)榱艘屇愀孟胂?,所以就說成是一大堆紅色籌碼。因此我們說 -4 + (-7) 是堆起來的過程。

可以用下面的表格:

4 和 7加減運(yùn)算可能得到的答案得到 11得到 -11得到 -3得到 34 + 7-4 + (-7)4 + (-7)-4 + 74 - (-7)-4 - 74 - 7-4 - (-7)7 - (-4)-7 - 4-7 - (-4)7 - 4

擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。

輸入兩個(gè)整數(shù),進(jìn)行加減乘除四則運(yùn)算的c語言程序怎么寫啊,拜托了~

代碼

#include

int main()

{

int a,b;

scanf("%d %d",&a,&b);

printf("%dt",a + b);

printf("%dt",a - b);

printf("%dt",a * b);

printf("%dt",a / b);

return 0;

}

運(yùn)行截圖

分析

C語言中的加減乘除和數(shù)學(xué)中的加減乘除一樣,不同在于符號(hào)的表示問題,乘號(hào)需要用“*”表示。除號(hào)需要用“/”表示。新手學(xué)習(xí)C語言,很容易把除號(hào)和取余好混淆,強(qiáng)調(diào)一下,取余號(hào)是“%”,百分號(hào)就是取余的意思。因此在輸入兩個(gè)整數(shù)以后,按照數(shù)學(xué)方法就可以直接輸出結(jié)果,整數(shù)的輸入用scanf()函數(shù)。

整數(shù)減小數(shù)如何列豎式

首先根據(jù)小數(shù)后的位數(shù)在整數(shù)后加小數(shù)點(diǎn)以及相應(yīng)的補(bǔ)0。

然后根據(jù)減法法則進(jìn)行相減借位計(jì)算,最后算出正確答案即可。

舉個(gè)例子:

10???7.25?=?2.75

擴(kuò)展資料

豎式其他運(yùn)算

乘法豎式計(jì)算要注意四個(gè)問題:

1、兩個(gè)數(shù)的最后一位要對(duì)齊。

2、盡量把數(shù)字多的數(shù)寫在上面,數(shù)字少的數(shù)寫在下面,以減少乘的次數(shù)。

3、如果兩個(gè)數(shù)的末尾有“0”,寫豎式時(shí)可以只將“0”前面的數(shù)的最后一位對(duì)齊,最后在豎式積的后面添上兩個(gè)數(shù)共有的“0”的個(gè)數(shù)。

4、小數(shù)乘法要根據(jù)小數(shù)的倍數(shù)確定積的小數(shù)點(diǎn)的位置。

除法豎式注意事項(xiàng):

1、列豎式時(shí),商的個(gè)位要與被除數(shù)的個(gè)位對(duì)齊。

2、商和除數(shù)的積寫到被除數(shù)的下面。

3、最后在積的下面畫橫線。

4、橫線下寫上被除數(shù)與商和除數(shù)的積的差。

C語言中怎么實(shí)現(xiàn)兩個(gè)超大整數(shù)的相加減乘除

#include

#include

#include

#define N 100

int main(int argc, char const *argv[])

{

char arr[N] = {};

gets(arr);

char brr[N] = {};

gets(brr);

int len1,len2,i = 0,j = 0;

len1 = strlen(arr);

len2 = strlen(brr);

int len = len1>len2?len1:len2;?

/*? c99之后數(shù)組初始化支持整型表達(dá)式,稱為可變長數(shù)組,但按照c89的標(biāo)準(zhǔn)是不對(duì)的

int num1[len]; //將字符串轉(zhuǎn)換成翻轉(zhuǎn)的整型數(shù)組

int num2[len];

*/

int* num1 = (int*)malloc(len*sizeof(int));

int* num2 = (int*)malloc(len*sizeof(int));

for (i = 0; i < len; i++)

{

num1[i] = i

}

for (j = 0; j < len; j++)

{

num2[j] = j

}

//int sum[len]; //定義和數(shù)組?

int* sum = (int*)malloc(len*sizeof(int));

int flag=0; //設(shè)進(jìn)位符

for (i = 0; i < len; i++)

{

sum[len-1-i] = (num1[i]+num2[i]+flag)%10;

flag = (num1[i]+num2[i]+flag)/10;

}

if (flag == 1) printf("1");? ?//如果最高位有進(jìn)位 則輸出一個(gè)1?

for (i = 0; i < len; i++)

{

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

}

printf("n");

free(num1);

free(num2);

free(sum);

num1 = NULL;

num2 = NULL;

sum = NULL;

return 0;

}

擴(kuò)展資料:

gets()函數(shù)用法

gets是從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù)。

函數(shù)原型:char*gets(char*str);

功能為:從stdin流中讀取字符串,直至接受到換行符或EOF時(shí)停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。

注意:不會(huì)判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時(shí)不發(fā)生溢出。使用時(shí)需要包含stdio.h頭文件

參數(shù)

str為字符串指針,用來存放讀取到的數(shù)據(jù)。

返回值

讀入成功,返回與參數(shù)buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發(fā)生錯(cuò)誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數(shù)檢查是發(fā)生錯(cuò)誤還是遇到EOF。

如何用位運(yùn)算實(shí)現(xiàn)整數(shù)的加減法

如何用位運(yùn)算實(shí)現(xiàn)整數(shù)的加減法

位運(yùn)算的思想可以應(yīng)用到很多地方,這里簡(jiǎn)單的總結(jié)一下用位運(yùn)算來實(shí)現(xiàn)整數(shù)的四則運(yùn)算。

1.整數(shù)加法

[cpp] view plain copy 在CODE上查看代碼片派生到我的代碼片

int Add(int a,int b)

{

for(int i = 1; i; i <<= 1)

if(b & i)

for(int j = i; j; j <<= 1)

if(a & j) a &= ~j;

else {a |= j; break;}

return a ;

}

我的思路主要是利用a+1的位運(yùn)算就是最左端(從第0位開始向左)連續(xù)的1變?yōu)?,原先a中為0的位置最低那一位變?yōu)?。

在不同的位上加1,那就是從相應(yīng)的位開始向左計(jì)算,右邊不變。

下面還有一個(gè)網(wǎng)上的思路,我覺得這個(gè)更好:

[cpp] view plain copy 在CODE上查看代碼片派生到我的代碼片

int Add(int a,int b)

{

if(b == 0) return a;//沒有進(jìn)位的時(shí)候完成運(yùn)算

int sum,carry;

sum = a ^ b;//完成第一步?jīng)]有進(jìn)位的加法運(yùn)算

carry=(a & b) << 1;//完成第二步進(jìn)位并且左移運(yùn)算

return Add(sum,carry);//進(jìn)行遞歸,相加

}

C語言 大整數(shù)加減法

#include

#include

#include

char a[1000],b[1000];

int c[1001];

int x,y,i,j,k;

int blen=0;

int alen=0;

char flag = '+';//用于減法標(biāo)記負(fù)數(shù)

int Subtract(char *a, char *b, int len) { //為了避免代碼重復(fù),將共同的計(jì)算抽出寫成函數(shù)

int i;

for (i=len-1; i>=0; i--) {

if (a[i] < b[i]) {

c[i] = a[i] + 10 - b[i];

b[i-1]++;

} else {

c[i] = a[i] - b[i];

}

}

return 0;

}

int Subtraction(){

for (i=0;i<100;i++)

{

scanf("%c",&b[i]);

if(b[i]=='\n')

break;

blen++;

}

printf("=");

if(alen>blen)

{

x=(alen-blen);

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

{

alen--;

b[alen]=b[i];

}

for (i=0;i b[i]='0';

alen=blen+x;

blen=alen;

} else if (blen > alen) {

x=(blen-alen);

for(i=alen-1;i>=0;i--)

{

blen--;

a[blen]=a[i];

}

for (i=0;i a[i]='0';

blen=alen+x;

alen=blen;

}

for (i=alen-1;i>=0;i--) {

a[i]=a[i]-'0';

b[i]=b[i]-'0';

}

if (strcmp(a, b) > 0) {

Subtract(a, b, alen);

}else {

flag = '-';

Subtract(b, a, alen);

}

return 0;

}

int Addition(){

for (i=0;i<100;i++)

{ scanf("%c",&b[i]);

if(b[i]=='\n')

break;

blen++;

}

printf("=");

if(alen>blen)

{

x=(alen-blen);

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

{

alen--;

b[alen]=b[i];

}

for (i=0;i b[i]='0';

alen=blen+x;

} else if (blen > alen) {

x=(blen-alen);

for(i=alen-1;i>=0;i--)

{

blen--;

a[blen]=a[i];

}

for (i=0;i a[i]='0';

blen=alen+x;

alen=blen;

}

for (i=alen-1;i>=0;i--) {

a[i]=a[i]-'0';

b[i]=b[i]-'0';

if(c[i+1]+a[i]+b[i]>=10)

{

c[i]=(c[i+1]+a[i]+b[i])/10;

c[i+1] = (c[i+1]+a[i]+b[i])%10;

}

else

{

c[i+1]+=(a[i]+b[i]);

}

}

return 0;

}

int main()

{

for (i=0;i<100;i++)

a[i]=0;

for (i=0;i<100;i++)

b[i]=0;

for (i=0;i<101;i++)

c[i]=0;

for (i=0;i<100;i++)

{

scanf("%c",&a[i]);

if(a[i]=='+')

{

Addition();

goto output1;

}

if(a[i]=='-')

{

Subtraction();

goto output2;

}

alen++;

}

output1:

{

for (i=0;i<=alen;i++)

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

return 0;

}

output2:

{

printf("%c", flag);

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

return 0;

}

}

代碼運(yùn)行結(jié)果:

123456789-12345

=+123444444

Terminated with return code 0

Press any key to continue ...

123456+111111

=0234567

Terminated with return code 0

Press any key to continue ...

1000000-1

=+0999999

Terminated with return code 0

Press any key to continue ...

1-1000000

=-0999999

Terminated with return code 0

Press any key to continue ...

//對(duì)你的代碼作了! 希望有助于你的學(xué)習(xí)。

為你推薦
資訊專欄
熱門視頻
相關(guān)推薦
怎么將克轉(zhuǎn)換為千克 怎么提高會(huì)議效率 怎么用中文說我愛你 怎么自學(xué)原聲吉他速成指南 怎么認(rèn)清自己的長處和弱點(diǎn) 怎么寫一封投訴信給公司 怎么判斷伴侶是否精神出軌 怎么成為一位好父親 怎么判斷某人是否懷孕 怎么成為一名助產(chǎn)士 怎么殺光家里的跳蚤 怎么享受獨(dú)自在家的時(shí)光 怎么制作母親節(jié)禮物 怎么保持孕期健康 怎么節(jié)省婚禮的開支 怎么觀看內(nèi)容而不被發(fā)現(xiàn) 怎么防止懷孕 怎么面對(duì)配偶離世后的生活 怎么讓你的堂表親喜歡你 怎么慶祝父親節(jié) 怎么做代數(shù)題 怎么阻止電子郵件 怎么計(jì)算波長 怎么繪制餅圖 怎么求積分 怎么把二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù) 怎么增強(qiáng)記憶力 怎么分離沙和鹽 怎么介紹自己并使人印象深刻 怎么進(jìn)行犯罪背景調(diào)查 怎么計(jì)算圓柱體體積 怎么用韓語道謝 怎么求三角形的第三個(gè)角 怎么成為專業(yè)組織者 怎么在大學(xué)里結(jié)交朋友 怎么寫好新聞圖片標(biāo)題 怎么說服別人一件事 怎么計(jì)算一個(gè)物體的面積 怎么用法語說“早上好” 怎么擦亮皮鞋
Top