这个程序如何给出这些输出? C ++

时间:2017-10-03 17:15:37

标签: c++

#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 的输出,请告诉我。谢谢。

enter image description here

1 个答案:

答案 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)