DTOJ 2703:兩個數的餘數和商 解題報告 ——翱翔的逗比w ...
DTOJ 2703:兩個數的餘數和商 解題報告
- 2017.11.10 第一版 ——由翱翔的逗比w原創,引用《C++ Primer Plus(第6版)中文版》
題目信息:
題目描述
給你a和b,求他們的餘數和非整數商。保留兩位小數。
輸出
餘數和商
樣例輸入
5 3
樣例輸出
2 1.67
提示
1<=a,b<=10000
思路:
利用運算符計算出餘數和商,取模運算在前一篇提到過不再多講。
註意:
除法運算符(/)的行為取決於操作數的類型。如果兩個操作數都是整數,則C++將執行整數除法。這意味著結果的小數部分將被丟棄,使得最後的結果是一個整數。如果其中有一個(或兩個)操作數是浮點值,則小數部分將保留,結果為浮點數。
——以上摘自《C++ Primer Plus (第6版)中文版》
這便意味著為了執行小數除法,使用除法前需保證有一個操作數是浮點值。註意保留兩位小數
我的代碼(C++):
1 //DTOJ 2703 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 int a,b; 8 cin>>a>>b; 9 int c=a%b; 10 double d=double(a)/b; 11 printf("%d %.2f",c,d); 12 return 0; 13 }
分析:
第七行:int a,b; 由於此處要執行取模運算,所以必然是輸入兩個整數。所以定義兩個整型int變數
第十行:double d=double(a)/b; 由於前面註意中提到,執行非整數的除法運算操作數中至少有一個是浮點值,所以在此使用double()將a強制轉換類型為雙精度浮點型double,這樣便可得到非整數商
第十一行:printf("%d %.2f",c,d); 此處使用printf將c和d的值列印至屏幕(輸出),由於需要保留兩位小數,故在d的位置加上 .2f
本作品採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協議進行許可。
——翱翔的逗比w