turbo pascal高手进

来源:百度知道 编辑:UC知道 时间:2024/05/17 11:09:03
写出下列程序的运行结果:

const s='abcd';

var i:integer; r:real; c:char; b:Boolean;

begin

i:=1234; r:=123.456; c:= '*’; b:=true;

writeln(i,i:5,i:3);

writeln(r,r:8:4,i:8:2);

writeln(c,c:4);

writeln(s,s:8,s:3);

writeln(b,b:5,b:3)

end.

运行结果

1234 12341234

1.2345600000E+02123.4560 123.46

* *

abcd abcdabcd

TRUE TRUETRUE

看不懂什么意思,谁讲解一下.书上主要讲的是:

输出格式:数据的输出格式很重要,输出的数据所占的列数为场宽。

Ø 输出项中无指定格式符号,则按标准场宽输出,integer实际长度,real 17列,char串长。

Ø 单场宽(输出整数时自定义) 格式:e:n1 n1是正整数,表示e输出时所占的列数。

Ø 双场宽(输出实数时自定义) 格式:e:n1:n2 n1,n2是正整数,且n1>n2, n1输出总列数含符号位、整数部分、小数点、小数部分,n2小数部分的列数。

Ø 数据不突破场宽限制时,单场宽一律向右看齐,双场宽实数向小数点看齐,多余的小数位补0。

Ø 数据实际位数超过场宽时,以保证数据的正确输出为原则。单

1.2345600000E+02前面会有一个符号位,当为正数的时候+号不显示,但是仍然用空格占为,这样当输出多个real数值时才能保证整齐。

补充:
你把writeln(r,r:8:4,i:8:2);改为下面的三个语句就能明白了:
writeln(r);
writeln(r:8:4);
writeln(r:8:2);

第一个writeln(r);没有任何限制,就会使用标准的格式化输出1.2345600000E+02,标准格式就是计算机规定的一个底数符号位、底数整数部分一位、小数点、底数小数部分十位、E、指数符号位、两位指数。

第二个writeln(r:8:4);意思是4位小数、总共8位,在我的机器上输出的是123.4560。你可能弄丢失了一个0。

第三个注意了,writeln(i:8:2);是错误的,编译就过不了,只可能是writeln(r:8:2);小数点后面2位,总共8位,按小数点对齐,所以结果是 123.46(前面两个空格)。

不知道你究竟是哪里没明白?