1樓:匿名使用者
#include
#include
#include
#include
#include
#define m 40
/*定義堆疊*/
typedef structstack;
/*初始化堆疊*/
initstack(stack *s)
/*判斷棧是否為空*/
int stempty(stack *s)
else }
/*入棧操作*/
stpush(stack *s,double x)
else }
/*出棧操作*/
double stpop(stack *s)
else
return t;
} /*獲取棧頂元素*/
double stgettop(stack *s)
else
return t;
} /*將數字字元轉換成整形*/
int chrtransferint(char c)
return n;
} /*獲取兩個操作符之間數字字元的個數,返回的是最後一個數字字元的位置*/
int getnumsize(char str,int n1)
return n2;
} /*判斷上個函式中獲得的數字字串中是否包含小數點,並返回它的位置,不包含,返回-1*/
int isincludepoint(char str,int n1,int n2) }
return n3;
} /*將數字字元轉換成數值*/
double transfer(char str,int n1,int n2,int n3) }
else
for(i=n3+1;i<=n2;i++) }
return data;
} /*主程式*/
main()
while(i else if(isdigit(c)) else if(c=='+') else if(c=='-') else if(c=='*') else } else if(c=='/') else } else if(c==')') else if(p==3) } if(stgettop(so)==4) /*然後判斷so棧頂是否為'*'或者'/'*/ else if(stgettop(so)==5) i++; } else if(c=='=') else if(p==3) } i++; } }if(!stempty(so)||stempty(sd)) else printf("%f\n",end); 2樓:匿名使用者 /*加法*/ int addmbint1(mbigint* dst, mbigint* src1, mbigint* src2) //較小數位的整數的長度 len = (src1->length>src2->length)? src2->length: src1->length; for(i = 0; i < len; i++) //對兩個大整數的數位相同部分進行計算 //對第一個大整數數位多出部分進行計算 if(src1->length > src2->length) if(mark != 0) dstlen = src1->length + 1; }//對第二個大整數數位多出部分進行計算 else if(src1->length < src2->length) if(mark != 0) dstlen = src2->length + 1; }dst->sign = sign; //符號的更改 dst->length = dstlen; // 長度設定 return 1; }int extendmbint(mbigint *mbi,long int size) if((pt = (un_short *)realloc(mbi->pbigint,sizeof(un_short)*newalloc)) == null) return faile_memory_bint; mbi->pbigint = pt; for(i = mbi->alloclen; i < newalloc; ++i) /* 對新的元素置0*/ mbi->alloclen= newalloc; }return return_ok_bint; }/*符號相反的加法--減法*/ int addmbint2(mbigint* dst, mbigint* src1, mbigint* src2) int re = comparembint(src1,src2); //對兩個大整數進行無符號比較 if(re == 0) //兩個大整數大小相等,進行加法運算後位0 if(re == -1)//無符號比較,大整數src2比大整數src1大 for(i = 0;i< len1; i++)//對兩整數相同長度部分進行計算 while(i < len)//對數位較大部分的計算 else }dst->length = len; //長度設定 dst->sign = sign; //符號位設定 trimmbint(dst); //對結果去掉前面的0 return 1;} 3樓:匿名使用者 main() void chang(int x,int p); while(top) 選擇排序 #include"stdio.h" void selectsort(int s,int n)另外,虛機團上產品**,超級便宜 4樓:匿名使用者 可以參考c++寫的一個超大整數的運算 5樓:匿名使用者 long int len = 0; //兩個大整數的長度最大值long int dstlen = 0; //目標陣列分配的最大值un_short mark = 0;//進位標誌unsigned int result;//陣列對應元素相加結果long sign = src1->sign;//整數的符號int i = 0; 6樓: 用c實現不能用c++? 用鏈棧實現是指用鏈棧實現加減還是這個整數? 怎樣用c語言做超大整數的加減運算? 7樓:匿名使用者 用高精度演算法來實現,即用陣列或指標來儲存數字,例如a〔20〕來儲存a ,用b〔20〕來儲存b,這樣a 和b就可以是很大的數,再用一個c〔21〕來儲存結果,為什麼c要21呢,你知道,加法是要近位的,呵呵。這裡給出相加的偽**,d =0/*用來儲存近位*/,for i=0到19if d 不等於0 c〔i+1〕=d ,再逆的輸出c就可以了!程式設計要學會思考,現在你可以試試編下高精度乘法,例如可以輸出100的階乘! 8樓:匿名使用者 可以用陣列製作。 都知道int,float,double的精度和可使用的範圍都是有限的,對於大數相減,總是會產生溢位的情況。 所以對於大數相減,認為可以用陣列來做。比如,定義一個陣列a[100];a[1]用來儲存個位數,a[2]用來儲存十位數,等等。 如果a[i]的值大於或等於10,就讓a[i+1]++,a[i]-10就行了。 在列印的時候就用一個for語句,再調一下輸出格式就可以了。 9樓:匿名使用者 可以用兩個整數來表示一個整數,一個高位,一個低位 c語言中怎麼實現兩個超大整數的相加減乘除 10樓:奧妙的數學開拓 在本題中要實現兩個超大整數的計算,主要是靠快速算式,改變運算的傳統過程,準確無誤的求出結果。例如(1)9988+8899=10000-12+8899=18899-12=18887;(2)980886-88906=980886-90000-6+1100=890880+1100=891980;(3)999786x99999=999786x100000-999786=99978600000-1000000+214=99977600214;(4)8950700÷50000=8950700÷100000x2=89.507x2=179. 014。 11樓:匿名使用者 c語言加減乘除超大數 12樓: 可以將它們化為十六進位制來計算。 怎樣用c語言做超大整數的減法運算? 13樓:全瑞繡 設計一個比較長的陣列來記錄各位數值,計算就行。 示例:const int maxl = 512; //_num表示各位數值,_len表示數值長度,_num[i]表示該位是10^i的位置 struct hugenumber; //實現這個函式,就有減法了,具體就參照小學數學的減法寫個借位減法就行了 超級大的整數的加減用c語言怎麼寫?
20 14樓: 可以用陣列製作。 都知道int,float,double的精度和可使用的範圍都是有限的,對於大數相減,總是會產生溢位的情況。 所以對於大數相減,認為可以用陣列來做。比如,定義一個陣列a[100];a[1]用來儲存個位數,a[2]用來儲存十位數,等等。 如果a[i]的值大於或等於10,就讓a[i+1]++,a[i]-10就行了。 在列印的時候就用一個for語句,再調一下輸出格式就可以了。 要求用c語言編寫程式實現大整數的四則運算(加、減、乘、除)
20 15樓:匿名使用者 如果只是實現(加、減、乘、除)那麼,直接用文字檔案儲存就好,雖然效率略低,但可以保證精確度。 直接按照小學教的加減乘除原理,逐位進行計算,保證無線精確(記憶體不夠大、cpu不夠快不算)。 這個我就能做。 16樓:匿名使用者 學習c語言就去敗筆網路安全小組 17樓:豬頭或火寶寶 俺用c語言編的,但是用棧實現的!!! 18樓:鬼angel鬼 很感興趣 可是不會 支援你 用c語言實現大整形運算,64位長整型的加減法,輸入限制為64位長度整數 19樓:匿名使用者 #include #include #define n 1005 int main() j=0; for(i=len2-1; i>=0; i--)for(i=0; i=10) //大於10進位}if(num2[max]==1) printf("%d",num2[max]); for(i=max-1; i>=0; i--) //這樣就把大整數的每一位算出來了,順序輸出就好 printf("%d",num2[i]); printf("\n"); }return 0;} include void main include void main float a,b,h 梯形的上底 下底和高 printf 請依次輸入梯形的上底 下底和高 scanf f f f a,b,h printf 梯形的面積 f a b h 2 擴充套件資料 c語言特有特點 1.c語言是一個有結構化... 可能你想問的是輸出a到b之間的質數吧。下面是我編的 有什麼不足的地方你再改正一下吧。include int fun int x 宣告函式 判斷是否是質數 void main for i a 1 i if j printf a,b之間沒有質數。n 如果j 0,說明沒有數輸出 else printf n... include int main c語言中的加減乘除和數學中的加減乘除一樣,不同在於回符號的答表示問題,乘號需要用 表示。除號需要用 表示。新手學習c語言,很容易把除號和取餘好混淆,強調一下,取餘號是 百分號就是取餘的意思。因此在輸入兩個整數以後,按照數學方法就可以直接輸出結果,整數的輸入用scan...用C語言編寫求梯形面積的程式, 求助 用C語言編寫求梯形面積公式的簡易計算器
C語言作業求助 計算a,b是鍵盤輸入的正整數。且在輸入時能保證1ab
輸入兩個整數,進行加減乘除四則運算的c語言程式怎麼寫啊,拜託