主题:怎样计算字符串中的英文字母的个数
wuyongyi
[专家分:0] 发布于 2007-11-15 08:53:00
已经完成一部分,但表达式不知道该怎样写,请教各位大侠。
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个回复)
沙发
shisutianxia [专家分:630] 发布于 2007-11-15 11:05:00
IF ((ST[I]>='A')AND (ST[I]<='Z'))or((st[i]>='a')and(st[i]<='z'))
板凳
angwuy [专家分:2280] 发布于 2007-11-15 12:37:00
更简单的:
if st[i] in ['A'..'Z','a'..'z']
3 楼
wuyongyi [专家分:0] 发布于 2007-11-16 08:36:00
谢谢,但仍有疑问。
(1)ST[i]是什么意思?
(2)如果我希望能在输入aaabbbcccc.“.”为结束标志时能输出下面的格式,该怎样修改程序?
输入:aaabbbcccc.
输出:a:3 b:3 c:4
4 楼
angwuy [专家分:2280] 发布于 2007-11-16 13:25:00
st[i]表示字符串st中第i个字符
5 楼
wuyongyi [专家分:0] 发布于 2007-11-19 15:20:00
谢谢,还有第二个问题请求解答。
6 楼
angwuy [专家分:2280] 发布于 2007-11-20 12:40:00
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 楼
迷路的天使 [专家分:1340] 发布于 2007-11-21 18:54:00
[quote]IF ((ST[I]>='A')AND (ST[I]<='Z'))or((st[i]>='a')and(st[i]<='z'))[/quote]
8 楼
wuyongyi [专家分:0] 发布于 2007-11-24 20:35:00
请问迷路的天使这个是什么意思?是用来代替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 楼
迷路的天使 [专家分:1340] 发布于 2007-11-26 19:18:00
支持1楼的`~~~~
10 楼
angwuy [专家分:2280] 发布于 2007-11-29 18:00:00
[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]
你没输入最后的'.'
我来回复