程式設計求和只顯示前一個數字,是什麼原因?沒有如果788008262017-10-27 13:13:36

這問題太簡單,不知道的就別學程式設計了。

程式設計求和只顯示前一個數字,是什麼原因?Python樂園2017-10-27 11:53:58

可以透過輸出格式說明符來指定精確到小數點後幾位。比如:printf(“%2。3f\n”, 3。1415926) // 輸出_ 3。142 (其中_ 代表空格)上面的輸出格式說明符%2。3f 中各部分意思如下:2—— 表示整數部分以固定2位寬度輸出。如果資料的位數小於2,則左端補以空格,若大於2,則按實際位數輸出。。3——(3的前面有個小數點)表示輸出精確到小數點後3位。如果實際數字不足3位,則在末尾補0,若大於3位,則按四捨五入取前三位。

C語言裡面沒有分數,1/3會被當作是1除以3來計算,結果是一個小數。要輸出1/3,必須是像字串一樣的輸出:printf(“1/3”);也可以這樣:int a = 1, b = 3; printf(“%d/%d”, a, b);N個分數相加的結果還是會被當作小數處理,必須你自己設計算法讓它成為a/b的形式

追問

但是我這邊使用float或者double貌似就直接取整了,(其中 有整數型變數,)比如計算s=1+1/(1+2)+1/(1+2+3)+……。。。。+1/(1+2+3+……+n)。分母是整形,然後我分部算,分部加,第二項1/(1+2)輸出的結果是0。0000。而不是0。33333。為什麼?

追答

一個整數預設就是int型別。雖然s是double,但是右邊的1,2,3。。。。。n都是整數,所以做除法運算的時候已經丟掉小數部分了。你可以寫成s=1。0 + 1。0/(1+2)+1。0/(1+2+3)……。。。。。

#includevoid main(){ int n,a,b,c;scanf(“%d”,&n);a=n; c=a%10; a/=10; b=a%10; a/=10; a%=10;printf(“%d的個位為%d,十位為%d,百位為%d。\n”,n,c,b,a);}

程式設計求和只顯示前一個數字,是什麼原因?