主题:十六进制转十进制
这是我买的辅导书上的一道题。
编程将十六进制数转换为十进制数。要求输入四位十六进制数(不足四位的数字前面补0),然后转换成十进制数并输出。
这是书里面的解:
program Shi;
var
ch:char;
dec,dec1,dec2,dec3,dec4:0..15;
i:1..4;
j:real;
begin
writeln('Input Hex Number:');
write('Hex:');
for i:=1 to 4 do
begin
read(ch);
ch:=upcase(ch);
case ch of
'0'..'9':dec:=ord(ch)-48;
'A'..'F':dec:=ord(ch)-55;
else
exit;
end;
case i of
1:dec1:=dec;
2:dec2:=dec;
3:dec3:=dec;
4:dec4:=dec;
end;
end;
writeln;
j:=dec1*4096.0+dec2*256.0+dec3*16.0+dec4;
write('dec:',j:5:0);
readln
end.
运行结果:
Input Hex Number:
Hex:FFFF
dec:65535
我怎么看也看不懂,它为什么把 “ read(ch) ”放在了"for i:=1 to 4 do"的后面
放在前面不可以吗? 这个“for i:=1 to 4 do”是什么意思啊。还有他是怎么将十六进制的第一最高位转变成dec1的 怎么将最低位转变成dec2的?
谢谢,回答出者或用另一种方法解题者加30。谢了。
编程将十六进制数转换为十进制数。要求输入四位十六进制数(不足四位的数字前面补0),然后转换成十进制数并输出。
这是书里面的解:
program Shi;
var
ch:char;
dec,dec1,dec2,dec3,dec4:0..15;
i:1..4;
j:real;
begin
writeln('Input Hex Number:');
write('Hex:');
for i:=1 to 4 do
begin
read(ch);
ch:=upcase(ch);
case ch of
'0'..'9':dec:=ord(ch)-48;
'A'..'F':dec:=ord(ch)-55;
else
exit;
end;
case i of
1:dec1:=dec;
2:dec2:=dec;
3:dec3:=dec;
4:dec4:=dec;
end;
end;
writeln;
j:=dec1*4096.0+dec2*256.0+dec3*16.0+dec4;
write('dec:',j:5:0);
readln
end.
运行结果:
Input Hex Number:
Hex:FFFF
dec:65535
我怎么看也看不懂,它为什么把 “ read(ch) ”放在了"for i:=1 to 4 do"的后面
放在前面不可以吗? 这个“for i:=1 to 4 do”是什么意思啊。还有他是怎么将十六进制的第一最高位转变成dec1的 怎么将最低位转变成dec2的?
谢谢,回答出者或用另一种方法解题者加30。谢了。