1樓:網友
用double型的數就可以啊。
c語言中,%只能用於整數運算的運算子?
2樓:惠企百科
c語言中,%只能用於整數運算的運算子,%是求餘運算子,只能適用於整數與整數運算,如果用於非整數運算,程式會報錯導致無法執行。
a選項錯誤,是因為在c語言中,語句之間的分割要用英文狀態下的分號去分割,即「;」而不是冒號。
d選項正確,是因為%是除法取餘運算,適用於整數與整數運算。否則,不同的編譯器會得不同結果。作為雙目運算子,左右運算元可以是數值,也可以是表示式,但是左右兩邊的運算元必須是整數。
c語言中,%只能用於整數運算的運算子?
3樓:解韻昔夏萱
在c程式中,語句之間必須要用分號「;」分隔。
而printf("%d",a);中第乙個%為字元,第二與d結合不是運算子,%當運算子時就是取餘運算。
4樓:鏡奇買以南
在c的輸出語句中%這個是個輸出資料型別表示符號,不是運算子號,在c中%在運算式子中只能取模整數型別的資料型別,a:c語言中語句結束才是用;符號,而不是:符號,這個:
只用在swtich或是相同型別的語句採用:
5樓:赧衣牟若彤
a:語句必須以分號結束,但語句之間還可以用大括號。
d:單獨的乙個%,是取餘運算子,取餘要在整數之間進行。%和d,f,c之類的連用,應該看作乙個整體!不能單獨看成乙個運算子!!!
6樓:守軒桓山雁
你a打錯了吧??分號也不是冒號啊。。。你說的printf("%d")這的%也不是運算子啊。。。當運算子時就是取餘運算子。。。兩邊必須是整型資料。。。
7樓:秒懂百科
運算子:用於c語言中執行程式**運算。
c語言中,哪些運算子必須是整型數的呢?
8樓:網友
在c語言中,運算物件必須是整型數的運算子是:
求餘運算子%
位運算子~、&
具體原因是:
【c++】大整數除法的演算法
9樓:網友
你首先需要實現大整數的減法。這個從低到高位減即可。
還需要實現大整數乘以乙個個位數的演算法。從低位向高位乘即可。
10樓:等待的幸福快樂
第一種方法是求倒數,根據牛頓迭代法,設序列,遞推公式為x(n+1)=2x(n)-ax(n)²,a為常數且為正,則當x0∈(0,1]時有lim(xn)=1/a,且精度隨著迭代次數指數增長。故方法一為根據遞推公式求除數的倒數(因為被除數大於1,倒數一定小於1,可以用定點數表示),然後乘以被除數即得到原來的商。迭代次數為logn,每次迭代中需要進行一次移位和兩次大整數乘法,定點數乘法還要額外加一次移位,總時間複雜度為o(logn * n + nlogn + nlogn)) o(nlog²n);
第二種方法是第一種方法的改進版,設被除數為a,除數為b,則寫成分式為a/b,分式具有分子分母同時乘以非零數值不變的性質,首先將分子分母乘以一常數x,使得bx∈(0,1],然後將分子分母同時乘以(2-分母),不斷進行迭代直至分母足夠接近1,此時分子即是所求的商。與方法一相比,方法二不需要估算x0,每次迭代仍然需要兩次乘法兩次移位,因此時間複雜度仍然是 o(nlog²n)。部分amd處理器的浮點除法採用此方法進行;
第三種方法即是常用的試商法。分為按位試商和按雙字試商兩種。按位試商只要逐一移位比較即可,時間複雜度o(n²)。
按雙字試商則由於試商存在誤差,必須在試商之後用試商乘以除數與被除數作比較,由於是雙字乘以大整數時間為線性,總體時間複雜度為o(n+(n-1)+(n-2)+(n-3)+.1)=o(n(n+1)/2)=o(n²)。總之試商法的時間複雜度是o(n²)。
那麼問題來了,方法一和方法二的共同特點是,每次迭代都必須進行兩次至少n位的乘法,因此浪費了大量時間。實測即使是數萬位數的除法(尤其是被除數遠遠長於除數的情況下,為了降低定點數誤差就必須將被除數和除數左移位相當長的距離)方法二的時間依然是方法三的時間的數十倍甚至上百倍。而且方法三可以同時獲得商和餘數,方法一和方法二都做不到。
怎麼用c語言編寫乙個大整數的四則運算器,求解??(急!!)
11樓:網友
給你完整**沒意思了,呵呵,給你思路。
加法。兩個加數長度。
la=strlen(a);lb=strlen(b);
lc=la>lb?la:lb; /最長的那個。
反序兩個加數。
strrev(a);strrev(b);
要是字串的話,需要轉換為int型的陣列,ab陣列一樣。
for(i=0;a[i];ia++)
a[i]-=48;
處理第一位,也就是個位。
c[0]=a[0]+b[0];
處理中間各位。
for(i=1;i9)
最後轉換回字串。
for(i=0;ic[i]+=48;
c[lc]='0'; 注意要加上字串結束符,要不然不是字串,呵呵。
反序就是結果了。
strrev(c);
c字串就是結果。
減法,前面差不多,只是處理中間和後面的稍微有點區別,首先,要判斷結果是否為負數,這個要只乙個標誌位。
if(strcmp(
flag=1;
else求長度和反序是必須的,轉換為int型也是一樣的。
處理個位,也一樣。
中間各位。for(i=1;i處理高位的那些0
while(c[lc-1])
lc--;轉換為char字串。
for(i=0;ic[i]+=48;
最後是標誌正負號的。
if(!flag)
c[lc]='0';
strrev(c);
乘法,兩個演算法。
乙個是被乘數連續加,並且乘數每次減去1,知道乘數為零,注意的是加的次數要剛好是乘數的個數。
這個呼叫加法和減法就可以,用for迴圈,呵呵。
**也不算難,要是寫不出來,就不要學c了。
另乙個是小學的豎式。如。
x 12也就是計算中間的個位和多位的乘法,最後對好位置加起來就可以。
**也不是很難,最好做乙個一位和多位的乘法子函式,呼叫,呵呵。
除法,道理我只知道一種,就是迴圈減法,直到被除數小於除數為止,這個應該也不難。
記錄減得次數就是要得到的資料,還有乙個就是餘數,就是判斷小於除數的那個資料。
12樓:網友
具體實現演算法如下:
測試結果如下:
13樓:網友
參考小學的加法。
低位相加,逢十進一。
用字串儲存大數,然後從字串的末尾開始一位一位的處理。
14樓:軍臨天下
這個可以一位一位的處理。。
c語言中最大的整型數和最小的整型數是什麼?
15樓:網友
c語言中最大的無符號整型常數為65535,最小的無符號整型常數為0。最大的有符號整型常數為32767,最小的有符號整型常數為-32768。
在c編譯系統中,基本整型的長度也為16位,因此表示的數的範圍也是有限定的。十進位無符號整常數的範圍為0~65535,有符號數為-32768~+32767。如果使用的數超過了上述範圍,就必須用長整型數來表示。
長整型數是用字尾「l」或「l」來表示的。
16樓:網友
基本整形佔4個位元組,長度為32位。所以表示範圍為負2的15次方到2的15次方減1.
表示範圍是指能夠表達最小數到最大數。
17樓:修者世界
c語言中,一般而言整型數是雙位元組,所以:
有符號型:最大 32767,最小 -32768無符號型:最大 65535,最小 0
但對於c++,面對32位機時,整型數變成了雙字,所以:
有符號型:最大 2147483647,最小 -2147483648無符號型:最大 4294967295,最小 0
18樓:源語夢
得看具體作業系統。
32位系統,範圍為 -2^15 到 2^15-1 之間。
19樓:網友
這個是與編譯系統有關的,在vc上,一般加入#include
然後可以用int_max int_min分別輸出最大和最小值。
在c語言程式設計中,如何避免整數運算溢位問題
c語言編譯時不會檢查資料溢位問題,需要程式設計者自行注意資料溢位問題。而且據我的經驗資料溢位問題會頻繁出現在初學習當中,程式寫多了就很少出現這樣的問題了。如何找到在c程式 全部 整數溢位 因為輸入float時,系統也會把float變成整型,所以只需要處理非數值型就可以了,程式如下。void main...
C 過載 運算子的問題,c 運算子過載問題
只拿了你有疑問的兩個函式出來討論,看是否明白 time time operator 這是字首 return this time time operator int 這是字尾 return temp time operator 這表示前 即 time1 呼叫該函式 time operator int ...
整數加法減法的運算定律,整數加法的運算定律在小數加減法中同樣適用
1111143333333333333 運演算法則 1.整數加法計演算法則 相同數位對齊,從低位加起,哪一位上的數相加滿十,就向前一位進一.2.整數減法計演算法則 相同數位對齊,從低位加起,哪一位上的數不夠減,就從它的前一位退一作十,和本位上的數合併在一起,再減.3.整數乘法計演算法則 先用一個因數...