例题:将十进制转化为二进制。(输入的数不大于10000)
program demicalToBinary; type arrayType=array[1..14] of integer; var arr:arrayType; k,n,modNum,i,flag,highest:integer; begin readln(k); n:=1; while k>=2 do begin { writeln('this is in loop,status:k:',k,' n:',n); } modNum:=k mod 2; k:=k div 2; arr[n]:=modNum; n:=n+1; end; { writeln('now loop over,status:k:',k,' n:',n); } if k=1 then arr[n]:=1; flag:=0; for i:=14 downto 1 do if arr[i]=1 then begin flag:=1; highest:=i; break; end; for i:=highest downto 1 do write(arr[i]); end.
上面是我写的代码。
写代码时的收获是
把人脑当计算机,人工去执行一遍过程。就能感觉到步骤都很简单,一步一步的执行出来。
计算机也是这样执行的,只是它很快,一下就执行好了罢了。
代码改进:
Version2:
program demicalToBinary; type arrayType=array[1..14] of integer; var arr:arrayType; k,n,modNum,i,flag,highest:integer; begin readln(k); n:=1; { while k>=2 do } while k<>0 do begin { writeln('this is in loop,status:k:',k,' n:',n); } modNum:=k mod 2; k:=k div 2; arr[n]:=modNum; n:=n+1; end; { writeln('now loop over,status:k:',k,' n:',n); } { if k=1 then arr[n]:=1; } { flag:=0; for i:=14 downto 1 do if arr[i]=1 then begin flag:=1; highest:=i; break; end; for i:=highest downto 1 do write(arr[i]); } for i:=n-1 downto 1 do write(arr[i]); end.