“高分请教一个PASCAL简单有重要的问题”

来源:百度知道 编辑:UC知道 时间:2024/05/14 00:02:45
“PASCAL编的程序中的一段如下
x,y:real;
t,u,v:char;
BEGIN
read(x,y,t,u,v0;
writeln(x,y,t,u,v)
END.
输入“1空格2空格abc”输出为“12abc”,没有了c是不是我的电脑错误?2的后面没空格肯定不对,怎么才能在不增加字符变量的情况下输出完整的“12abc”?谢谢。
回1楼,你的意思是这是PASCAL固有的特点,不是我的电脑问题吧。我知你这样肯定行,问题在于我要设计一个计算器程序,得连续输入数字和字符才像样,照你的方式不好。如果把全部数字及字符全说明为字符输入,在电脑转成数字后再计算也行,但又太麻烦。有没有什么好的办法解决这个问题?好的办法追加50分。

你输入的1和2是实型,但ABC 属字符型,空格也算字符的一种,所以实际上你的变量T读入的是2和A之间的空格
要处理很简单,就是让变量先读一遍空格,再读A,这样就可以把'A'的值赋给T;
你可以这样:
var x,y:real;
t,u,v:char;
begin
read(x,y);{读入数字}
read(t);read(t);{读两遍,第一次为空格}
readln(u,v);{无后续变量,直接读入}
writeln(x:0:0,y:0:0,t,u,v);{其中X,Y为实型,如不设置场宽则会输出:
1.00000E00,2.000000E00,用双场宽可解决这一问题}
end.
最终输出:12abc
本人今年NOIP180二等奖,我同桌370一等奖进省队了

应该这样
var
x,y:real;
t,u,v:char;
BEGIN
readln(x,y);
read(t,u,v);
writeln(x,y,t,u,v);
END.

没有错。你在读入两个数字后,在屏幕上有 ‘空格abc’没读入,当你再读t时,他会把空格当成一个字符输入,所以运行你的程序后各个变量的值为
x = 1
y = 2
t = 空格
u = a
v = b
输出为 12空格ab
针对这个问题你可以这么输入
read( x , y ) ; read( t ) ;read( t , u , v ) ;
也可以合并成一句read( x , y , t , t , u , v ) ;

a b c要分开打

你说不增加变量?又不改变输入输出设置?
告诉你原方法出错的原因,当你读入一个浮点数的时候,光标是停留在那个数的最后一个数字的末端,而不是空格的末端,你那样读会多输出空格而少了后一个字符
只要改成readln(a,b,t,t,u,v)就行,其中第一个