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,不是无限制吗? 展开
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,不是无限制吗? 展开
1个回答
展开全部
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(前面两个空格)。
不知道你究竟是哪里没明白?
补充:
你把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(前面两个空格)。
不知道你究竟是哪里没明白?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询