上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
gardenwo 稍嫌羞澀的路人
註冊時間: 2008-06-25 文章: 2
0.00 果凍幣
|
發表於: 2008-6-25, AM 11:31 星期三 文章主題: [C][入門]搞不太懂 %d 與 %0.0f 的差別 |
|
|
剛買了一本書學習C語言,在用DEV-C++學習。遇到裡面的練習題:要輸入5000以上的話,超過5000的部分打8折。輸入超過10000,除了前面打8折的部分,超過10000的部分再打7折……還寫的出來。
可是起先下面程式紅色的地方,我是用%d,執行程式以後都是出來0元。改用%0.0f以後才正常。
想請教%d不是應該可以顯示10進位整數?為何都是出來0元啊?是不是%d有什麼使用限制?表示一般的數字,是不是使用%f比較好啊?
不好意思,可能問的很笨。我才剛學,實在搞不太懂。
#include<stdio.h>
#include<stdlib.h>
int main(){
int a;
L1:printf("請輸入購買金額~\n");
scanf("%d",&a);
if (a<=5000) printf("你需付%d元!\n",a);
else {
if (a<=10000) printf("你需付%0.0f元!\n",(a-5000)*0.8+5000);
else printf("您需付%0.0f元!\n",(a-10000)*0.7+(5000*0.8 )+5000);
}
goto L1;
system("pause");
} |
|
回頂端 |
|
|
還是零分 散播福音的祭司
註冊時間: 2007-09-19 文章: 164
653.83 果凍幣
|
發表於: 2008-6-25, PM 2:20 星期三 文章主題: |
|
|
即使輸入的數字是整數
輸出的數字也是整數
但計算過程有用到小數
所以輸出的還是float資料型態(即使樣子是整數)
如果確定輸出的數還是個整數
例如輸入你說的10000
則可以這樣寫
代碼: | int main()
{
int a;
L1:
printf("請輸入購買金額~\n");
scanf("%d",&a);
if (a<=5000) printf("你需付%d元!\n",a);
else
{
if (a<=10000) printf("你需付%d元!\n",(int)((a-5000)*0.8+5000));
else printf("您需付%d元!\n",(int)((a-10000)*0.7+(5000*0.8 )+5000));
}
goto L1;
system("pause");
} |
這樣子輸出的9000還是int資料型態 |
|
回頂端 |
|
|
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2008-6-30, AM 10:22 星期一 文章主題: Re: [C][入門]搞不太懂 %d 與 %0.0f 的差別 |
|
|
%d <-- 用來輸出整數用的
%f <-- 用來輸出浮點數(就是有小數點的值)用的
另外只要有牽扯到浮點數的運算,運算結果都會變成浮點數.
至於為什麼 整數 和 浮點數 要用不同控制元去輸出,是因為在電腦裡面的存取格式不一樣.
詳細請參考 計算機概論 (偷懶 XD _________________ 已經畢業了!! |
|
回頂端 |
|
|
|