turbo pascal高手进

写出下列程序的运行结果:consts='abcd';vari:integer;r:real;c:char;b:Boolean;begini:=1234;r:=123.45... 写出下列程序的运行结果:

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。

Ø 数据实际位数超过场宽时,以保证数据的正确输出为原则。单场宽时自动将n1扩展到所需位数,双场宽时自动将n1扩展到所需位数,n2小于实际的小数位数时,则舍去多余的位数,内存中仍保留该数的精确值。

但我实在找不出关系.看不懂运行结果...高手帮忙,小弟谢过.
两个*之间有3个空格,运行结果第2行的1.2345600000E+02123.456 123.46前面有一个空格

差不多明白了,只有第2行的那个运行结果不懂怎么回事.哪位大虾帮下忙啊...谢谢了.

第2行的那个我不是不明白那个空格,我不明白列数怎么那么多,和上面的数字r:8:4什么的不照应.详细讲解下第2行的所有内容吧.谢谢.

不好意思,那个writeln(r)输出是1.2345600000E+02还有点不明白,为什么要加那么多0,不是无限制吗?
展开
 我来答
阳光上的桥
2008-04-25 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
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(前面两个空格)。

不知道你究竟是哪里没明白?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式