看板 C_and_CPP 關於我們 聯絡資訊
底下是一個簡單的輸出入控制的練習 我是個自學的新手 雖然基本的語法沒有問題 但還是有點小地方不太懂想請教m(_ _)m ============================================================================== 科目A的成績(data1) 跟科目B的成績(data2) 都是整數值 但取平均之後 有可能是小數 如果我一開始就宣告data1 和data2 是int 最後才取平均值是浮點數 (設定平均值是小數點一位) 則跑出來的平均值是零 無法顯示正確的答案 orz 可以請教一下是為什麼嗎||| 對應程式碼見下 int data1; int data2; printf("請輸入科目A的成績:"); scanf("%d",&data1); printf("請輸入科目B的成績:"); scanf("%d",&data2); printf("統計中.................\n"); printf(" 科目A的成績:%d\n", data1); printf(" 科目B的成績:%d\n", data2); printf("-----------------\n"); printf(" 總分:%d\n", data1+data2); printf(" 平均:%.1f\n", (data1+data2)/2); ============================================================================== 又如果我一開始就宣告data1 和data2 是float 那麼雖然可以很順利正確地跑出平均值的結果 但data1 和data2的位數 會由於預設的關係而是六位 (ex:85.000000 ) 如果要讓data1 和data2顯示出來的只是整數 沒有小數點後面的那堆0 就要使用.prec參數來控制 變得又有點麻煩||| 對應程式碼見下: float data1; float data2; printf("請輸入科目A的成績:"); scanf("%f",&data1); printf("請輸入科目B的成績:"); scanf("%f",&data2); printf("統計中.................\n"); printf(" 科目A的成績:%.0f\n", data1); printf(" 科目B的成績:%.0f\n", data2); printf("-----------------\n"); printf(" 總分:%.0f\n", data1+data2+data3); printf(" 平均:%.1f\n", (data1+data2+data3)/3); ============================================================================== 所以我想請問 有可以一開始就宣告data1 data2是int 然後又能使平均值是正確算出結果 的寫法嗎 感謝
NDark:使用過程cast成double (double)data1 09/11 11:16
bookticket:不好意思||| 可以請N版友說得再詳細一點嗎||| 09/11 11:26
※ 編輯: bookticket 來自: 140.119.143.103 (09/11 11:26)
s80773:printf("\t平均:%.1f\n",(float)(data1+data2)/2);可以顯示 09/11 11:28
bookticket:感謝s版友~~~m(_ _)m 09/11 11:33