回 帖 发 新 帖 刷新版面

主题:怎样计算字符串中的英文字母的个数

已经完成一部分,但表达式不知道该怎样写,请教各位大侠。
var st:string;
  Cd,k,Zs:integer;
begin
  Readln(st);
  cd:=length(st);
  for k:=1 to cd do
    if [u]                      [/u] then
      Zs:=zs+1;
  writeln(zs)
end.

回复列表 (共13个回复)

沙发

IF ((ST[I]>='A')AND (ST[I]<='Z'))or((st[i]>='a')and(st[i]<='z'))

板凳

更简单的:
if st[i] in ['A'..'Z','a'..'z']

3 楼

谢谢,但仍有疑问。
(1)ST[i]是什么意思?
(2)如果我希望能在输入aaabbbcccc.“.”为结束标志时能输出下面的格式,该怎样修改程序?
输入:aaabbbcccc.
输出:a:3  b:3  c:4

4 楼

st[i]表示字符串st中第i个字符

5 楼

谢谢,还有第二个问题请求解答。

6 楼

var 
c:array['a'..'z']of integer;
st:string;
i:integer;
ch:char;
begin
fillchar(c,sizeof(c),0);
readln(st);
i:=1;
repeat
inc(c[st[i]]);
inc(i);
until st[i]='.';
for ch:='a' to 'z' do
if c[ch]>0 then write(ch,':',c[ch],' ');
writeln;
end.

7 楼

[quote]IF ((ST[I]>='A')AND (ST[I]<='Z'))or((st[i]>='a')and(st[i]<='z'))[/quote]

8 楼

请问迷路的天使这个是什么意思?是用来代替angwuy使用的数组的表达式?
我现在还没有学到fillchar的使用,有没有其他方法,只用For语句行吗?

另外请教angwuy写的程序在XPsp2环境下运行报错,是什么原因?是否和我的电脑配置过于新有关,电脑配置如下:
酷睿2 E6550cpu 
内存:DDRII800 1G *2
显卡:8600GT


错误为:
Turbo Pascal7.0
NTVDM CPU遇到无效的指令。
CS:0005 IP:0027 OP:f0 37 05 10 02 选择“关闭”终止应用程序。

9 楼

支持1楼的`~~~~

10 楼

[quote]请问迷路的天使这个是什么意思?是用来代替angwuy使用的数组的表达式?
我现在还没有学到fillchar的使用,有没有其他方法,只用For语句行吗?

另外请教angwuy写的程序在XPsp2环境下运行报错,是什么原因?是否和我的电脑配置过于新有关,电脑配置如下:
酷睿2 E6550cpu 
内存:DDRII800 1G *2
显卡:8600GT


错误为:
Turbo Pascal7.0
NTVDM CPU遇到无效的指令。
CS:0005 IP:0027 OP:f0 37 05 10 02 选择“关闭”终止应用程序。
[/quote]

你没输入最后的'.'

我来回复

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