我不太理解为什么通过这段代码可以将一个三位数反向输出
麻烦给注释一下
#include "iostream"
using namespace std;
int main()
{
int a,i=10,j=1,b;
cin>>a;
while(a/j%i>=0)
{
if(a/j%i>0)
{
b=a/j%i;
cout<if(a/j%i==0)
{
b=a/j;
if(b>1)
cout<<"0";
else
break;
}
j=10*j;
}
system("pause");
return 0;
}
说白了就是
%10可以得到最后一位
/10可以去掉最后一位
x10可以将数字往前推一位
思路就是不断从原本的数字中取出最后一位,再添加到另一个数字开头上去。
朋友,画一下图就明白了
不知道你这个问题是否已经解决, 如果还没有解决的话:INCLUDELIB kernel32.lib
INCLUDELIB ucrt.lib
INCLUDELIB legacy_stdio_definitions.lib
.386
.model flat,stdcall
ExitProcess PROTO,
dwExitCode:DWORD
printf PROTO C : dword,:vararg
scanf PROTO C : dword,:vararg
.data
array dword 12,14,168,122,-33,56,78,99,345,66,-5
format byte '%d',9,0
.code
main Proc
mov esi,offset array
mov edi,esi
add edi,(lengthof array - 1)*4
mov ecx,(lengthof array)/2
again:
mov eax,[esi]
mov ebx,[edi]
mov [esi],ebx
mov [edi],eax
add esi,4
sub edi,4
loop again
mov ecx,lengthof array
xor esi,esi
print:
pushad
invoke printf,offset format,dword ptr array[esi*4]
popad
inc esi
loop print
push 0h
call ExitProcess
main endp
end main