回 帖 发 新 帖 刷新版面

主题:关于字符读入的问题(char)

请看一下程序:
program exercise;
  var ch:char;
      i:integer;
begin
  for i:=1 to 3 do
    read(ch);
end.
我在分步执行的时候(F7),第一次循环,读入ch,我输入任意一个字母,然后按回车,接下来两次循环我都不用输入了,就算回车键算一个字符,我也只输入了两个字符啊,不知道为什么。还有我输入回车键算不算输入字符?如果算的话,那输入什么不算输入了字符?
大家帮帮忙,在此多谢了。
顺便问一下,pascal里的字符型数据可参与的运算有那些?字符串型的呢?

回复列表 (共9个回复)

沙发

我认为不用按回车

板凳

如果要用循环连续读入几个字符,那就必须一次输入(中间不打空格,否则空格也会算一个字符),如果你只输入一个字符就按回车,那么剩下的2个字符就是没有得到值的,也就是空格。
比如你输入:A(回车)
则:
ch(1)='A'
ch(2)=' '
ch(3)=' '

如果你把READ改为READLN就不会出问题。

3 楼

多谢啊,以后有问题您还要多多关照哦。
顺便问一下,pascal里的字符型数据可参与的运算有那些?字符串型的呢?
再给您加分!

4 楼

字符型和字符串的运算:

基本运算:只有一种:+。+是把两个字符串连成一个,如'ABC'+'123'='ABC123'
关系运算:字符型比较大小是按字符的ASCII码的大小,ASCII码相同则这两个字符相同;字符串型比较大小是按左起第一个不相等字符的ASCII码比较,若所有字符的大小一样则字符串相同。

比较大小时的规则:

(1):数字字符中'0'最小,'9'最大;字母中'A'/'a'最小,'Z'/'z'最大,大写字母比小写字母小。数字比字母小,空格比数字小。
(2):若2个字符串的前面的字符都相同,长的比短的大,如:

'12345'>'123'   'asdfgh0987'>'asdfgh'    '!@#$%'>'!@#'

5 楼

没办法,忍不住想给你多点分,可是系统不允许啊。多谢啦

6 楼

回车乃是chr(13)+chr(10), 所以跳过了2次循环......

7 楼


回答你的问题:输入任何键都算字符!

另外:readln和read的区别:
假设我用循环语句要求出入10个整数,单步执行时,若一口气输入10个(中间用空格隔开),则:用read的话,以后都不用输入了
          用readln的话,以后还要输入
这就是他们的区别
所以,你这个问题用readln代替read即可!!

8 楼

这题数据你应一气输完,不要按回车(回车也是字符)

9 楼

一次按空格输完3...不用一个一个输

我来回复

您尚未登录,请登录后再回复。点此登录或注册