1樓:匿名使用者
int的範圍太小了,如果某個數的n次方就大於int的範圍,那麼這個數就會溢位,導致sum的值不正確了。
這裡需要輸出的是最後乙個數字而已。可以優化處理的。
#include
int main()
int a,b,n,sum=1;
a=a%10;
for(int i=0;isum=(sum*a)%10;
printf("%d",sum);
return 0;
例如13的4次方,其實就是最後乙個的4次方就可以了。
也就可以換算成3的4次方的最後一位。
sum= 1*3 %10 = 3
sum = 3*3 %10 =9
sum = 9*3 %10 = 7
sum = 7 * 3 %10 = 1
c語言題目 b=3 ; b=(++b)+(++b)+(++b); 輸出最終b=? 答案是16 具體怎麼算的?我怎麼算到...
2樓:福星星廉河
計算b=(++b)+(b)+(b);時第一步:計算第乙個(++b)這點誰都不會錯;此時b=4;
第二步:計算第二個(++b)這點也沒有問題吧,此時b=5;
第三步:計算(++b)+(b)將5代入,(+b)+(b)=10;這點容易想不通,為什麼不是5+4呢?因為變數只有乙個儲存單元,中間結果被覆蓋掉了。
第四步:之後的運算應該不是問題了吧……
程式是先執行了b=(++b)+(b);這兒等號賦值語句執行前,a已經完成了兩次自加a的值為5,所以加了之後b=10;然後b=b+(+b);b自加變成6,所以b=10+6=16;
3樓:利寄南賴禾
我覺得計算結果應該為18才對啊。
首先,b初始值為3,三個前加後為6,6+6+6=18編譯器執行後的結果也是18
注意一點,前加的優先順序高於加號。
4樓:緱雅靜劉佳
a=a+++b+++c;
到了這裡。實際上根據優先順序就是a=
a++)b++)c
a++的值是1,a的值變成了2
b++的值是1,b的值變成了2
c還是1然後吧等式的結果賦給a,所以a就是3了。
執行完**的結果就是a=
3b=2c=1
5樓:張廖懷蓮戴富
這個是運算堆疊的問題導致的。
首先計算機會按照運算子號從左往右開始壓棧。(也就是那兩個加號)第乙個+進棧,隨後和它相關的兩個數字也會進棧。((b)(+b)),這樣就會有+
+b)(+b)的堆疊結果。也就是「+」5」「5」的堆疊結果。然後第二個+進棧,變數進棧。+「6」。
所以上邊的式子在計算機中執行的時候是:
5+5+6。所以才會有16的結果。
6樓:亢梅風恭仙
只能說是編譯器的原因,你試試:
b=3;b=(++b)+(b);
估計答案是10.
的優先順序比+高,所以先做2次++,b變成了5,再做b=5+5=10;
但是你寫b=(++b)+(b)+(b);答案是16說明編譯器先把(++b)+(b)=10,算了出來,再做了b=10+(+b)=16
其實不考慮編譯器,我覺得正確答案應該是18,所以先做3次++,b變成了6,再做b=6+6+6=18;
a=b=c=1;++a||++b&&++c;執行後輸出a,b,c各是多少
7樓:匡新蘭革裳
a\b\c初是1
後面的邏輯表示式本來是先算&&再算||
但是最終還是算||,中當左邊表示式為真時就不會計算右邊表示式所以只運算++a,所以結果是a=2,b=1,c=1
8樓:望梓維沙儀
1a=b=c=1;++a||+b&&+c;執行後輸出a,b,c分別是211。
2++a||+b&&+c;這個語句只會執行++a,++b&&+c不會執行。c語言在做||運算時,如果第乙個運算元++a為真(非零),直接返回真,而不計算第二個運算元++b&&+c。
輸入整數a,b,c,當a為1時輸出b和c的和
9樓:俎思菱牽同
是旦蘆正數吧。
a+b+c)(1/a+1/b+1/c)
a+b+c)/a+(a+b+c)/b+(a+b+c)/c3+(a/b+b/a)+(a/c+c/a)+(b/c+c/b)由均值不等式。
a/b+b/a>=2根號(a/b*b/a)=2同理a/c+c/a>=2
b/賣山c+c/b>=2
所以原式》=3+2+2+2
若且唯若a=b=c時等號成立。
所中遲中以(a+b+c)(1/a+1/b+1/c)>=9
c語言a的輸出結果為什麼是 1,b的最後輸出結果為什麼是
資料在計算機中都是以補碼儲存的,a的補碼為0xffff,b的補碼為0xfffe。我這為寫著方便,用十六進位制寫,沒用二進位制寫,要不16個1看著都暈。d是按有符號整型輸出,此時認為a是個負數,根據0xffff來求該負數絕對值的原碼,為0x0001,輸出即為 1。u是按無符號型資料輸出,此時將b看作正...
c語言 輸入正整數a,b,c,輸出a b的小數形式,保留小數
include int main include 最大的精度 define max length 120 計算商 int getfactor int a,int b 計算餘數 int getremainder int a,int b 是否整除 bool isaliquot int a,int b r...
c語言怎麼去掉輸出的,c語言怎麼去掉輸出的
把 printf d n 10 換成 if n 10 0 printf d n 10 c語言,將double資料輸出時,如何去掉小數位多餘的0?printf g n a 這樣試一下,是不是你想要的 double a 1.001 printf lf a 會輸出1.001000,怎樣才能輸出1.001 ...