2017-10-03 9 views
-2
#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の出力を得ることができるか教えてください。ありがとう。次のようにこのプログラムはどのようにこれらのアウトプットを出していますか? C++

enter image description here

+3

コードをピクチャ(アクセシビリティの問題)や外部サイト(サイトがダウンする可能性あり)に含めないで、代わりにコードを質問にコピーし、コードブロックとしてフォーマットします。 – tambre

+1

整数型は小数点以下を切り捨てます。 'temp == 789'ならば、' temp/10'は78を返さず、78.9を返します。 –

+2

コードの絵を含んでいるので、この質問を議論の対象外としています。 –

答えて

3

は、あなたの質問に答えるために、あなたの計算と実際の結果との間に差がある

CNT 0:

RES = 456パーセント10 = 6

TEMP = (6 * 100)= 645

CNT 1:

RES = 645パーセント10 = 5

TEMP = 10分の645 = 64

TEMP = 64 +(5×100)= 564

整数除算のトランケートこれはmod演算子の結果である。あなたはまだ10進数を持っていましたが、100を掛け合わせるとどこも60の外れになりました

大きな要因で成長したときの丸めの問題のちょっとした例です! (100)

+2

あなたの仕事をありがとう、私はそれを正しくやっていたことを知ってうれしいです、ちょうど私は残りを切り捨てる必要があります。多くの感謝 – Mike

関連する問題