主题:关于字符读入的问题(char)
cxxx401
[专家分:140] 发布于 2007-07-25 17:55:00
请看一下程序:
program exercise;
var ch:char;
i:integer;
begin
for i:=1 to 3 do
read(ch);
end.
我在分步执行的时候(F7),第一次循环,读入ch,我输入任意一个字母,然后按回车,接下来两次循环我都不用输入了,就算回车键算一个字符,我也只输入了两个字符啊,不知道为什么。还有我输入回车键算不算输入字符?如果算的话,那输入什么不算输入了字符?
大家帮帮忙,在此多谢了。
顺便问一下,pascal里的字符型数据可参与的运算有那些?字符串型的呢?
最后更新于:2007-07-25 18:07:00
回复列表 (共9个回复)
沙发
bigchen [专家分:1940] 发布于 2007-07-25 18:30:00
我认为不用按回车
板凳
Matodied [专家分:7560] 发布于 2007-07-25 18:33:00
如果要用循环连续读入几个字符,那就必须一次输入(中间不打空格,否则空格也会算一个字符),如果你只输入一个字符就按回车,那么剩下的2个字符就是没有得到值的,也就是空格。
比如你输入:A(回车)
则:
ch(1)='A'
ch(2)=' '
ch(3)=' '
如果你把READ改为READLN就不会出问题。
3 楼
cxxx401 [专家分:140] 发布于 2007-07-25 19:38:00
多谢啊,以后有问题您还要多多关照哦。
顺便问一下,pascal里的字符型数据可参与的运算有那些?字符串型的呢?
再给您加分!
4 楼
Matodied [专家分:7560] 发布于 2007-07-25 20:44:00
字符型和字符串的运算:
基本运算:只有一种:+。+是把两个字符串连成一个,如'ABC'+'123'='ABC123'
关系运算:字符型比较大小是按字符的ASCII码的大小,ASCII码相同则这两个字符相同;字符串型比较大小是按左起第一个不相等字符的ASCII码比较,若所有字符的大小一样则字符串相同。
比较大小时的规则:
(1):数字字符中'0'最小,'9'最大;字母中'A'/'a'最小,'Z'/'z'最大,大写字母比小写字母小。数字比字母小,空格比数字小。
(2):若2个字符串的前面的字符都相同,长的比短的大,如:
'12345'>'123' 'asdfgh0987'>'asdfgh' '!@#$%'>'!@#'
5 楼
cxxx401 [专家分:140] 发布于 2007-07-27 18:10:00
没办法,忍不住想给你多点分,可是系统不允许啊。多谢啦
6 楼
maxumi [专家分:2200] 发布于 2007-07-28 15:50:00
回车乃是chr(13)+chr(10), 所以跳过了2次循环......
7 楼
cmy28 [专家分:380] 发布于 2007-07-30 16:06:00
回答你的问题:输入任何键都算字符!
另外:readln和read的区别:
假设我用循环语句要求出入10个整数,单步执行时,若一口气输入10个(中间用空格隔开),则:用read的话,以后都不用输入了
用readln的话,以后还要输入
这就是他们的区别
所以,你这个问题用readln代替read即可!!
8 楼
abcwuhang [专家分:1840] 发布于 2007-07-30 22:17:00
这题数据你应一气输完,不要按回车(回车也是字符)
9 楼
jack.B [专家分:0] 发布于 2007-07-30 22:34:00
一次按空格输完3...不用一个一个输
我来回复