#include<iostream>
using std::cout; using std::endl; using std::cin;
int main (){
long num1;
cin >> num1;
long num2;
cin >> num2;
long cnt = 0;
long temp = num1;
long res = 0;
while (cnt < num2){
res = temp % 10;
temp = temp / 10;
temp = temp + (res * 100);
cnt++;
}
cout << num1 << endl; // Line 1
cout << temp << endl; // Line 2
cout << cnt << endl; // Line 3
}
我对这个程序如何获得这些输出感到困惑。鉴于用户输入456 2 ,第2行应该回馈564.以下是我的工作(问题4)。运行计算后我得到624,为什么它是564?我试图做的下一个问题是用户输入:789 3,在我看到我的答案将会成千上万之后,我认为我做错了。 如果我做错了什么以及如何获得564 的输出,请告诉我。谢谢。
答案 0 :(得分:3)
要回答您的问题,您的计算与实际结果之间的差异如下
cnt 0:
res = 456%10 = 6
temp = 456/10 = 45
temp = 45 +(6 * 100)= 645
cnt 1:
res = 645%10 = 5
temp = 645/10 = 64
temp = 64 +(5 * 100)= 564
整数除法截断余数,这是mod运算符的结果。你还有十进制小数,当乘以100
时,它创造了一个无处不在的60只是一个很好的例子,当一个大因素增长时舍入问题! (100)