pascal输入一串字符,以“?”结束,输出字母字符,数字字符和其它字符的个数?
答案:4 悬赏:20
解决时间 2021-02-11 20:22
- 提问者网友:很好的背叛
- 2021-02-10 22:43
pascal输入一串字符,以“?”结束,输出字母字符,数字字符和其它字符的个数?
最佳答案
- 二级知识专家网友:猎杀温柔
- 2021-02-10 22:56
program ex;
var
zf,sz,zm:integer;
ch:char;
begin
zf:=0;
sz:=0;
zm:=0;
read(ch);
while ch<>'?' do
begin
if (ord(ch)>=48)and(ord(ch)<=57) then inc(sz)
else if (ord(ch)>=65)and (ord(ch)<=122) then inc(zm)
else inc(zf);
read(ch);
end;
writeln('zifu:',zf);
writeln('zimu:',zm);
writeln('shuzi:',sz);
readln;
end.
利用ascii码来判断,方便快捷
var
zf,sz,zm:integer;
ch:char;
begin
zf:=0;
sz:=0;
zm:=0;
read(ch);
while ch<>'?' do
begin
if (ord(ch)>=48)and(ord(ch)<=57) then inc(sz)
else if (ord(ch)>=65)and (ord(ch)<=122) then inc(zm)
else inc(zf);
read(ch);
end;
writeln('zifu:',zf);
writeln('zimu:',zm);
writeln('shuzi:',sz);
readln;
end.
利用ascii码来判断,方便快捷
全部回答
- 1楼网友:陪衬角色
- 2021-02-11 02:36
可以定义两个集合常量,a=set of '1'.. '9',b=set of 'a'.. 'z',每读入一个字符都进行判断,有在a中、在b中和都不在三种情况,分别将数值加一即可。
- 2楼网友:转身→时光静好
- 2021-02-11 01:30
program count;
var c:char;
x,y,z:longint;
begin
repeat
read(c);
if c<>'?' then
begin
if (c>='0')and(c<='9') then inc(x)
else if (c>='a')and(c<='z')or(c>='a')and(c<='z') then inc(y)
else inc(z);
end;
until c='?';
writeln(x,' ',y,' ',z);
end.
x是数字个数,y是字母个数,z是其他字符个数。
没有统计最后一个'?'要统计的话就最后把z加1就可以了
- 3楼网友:浪者不回头
- 2021-02-11 00:28
做这类题关键掌握Ascii码转换,用函数ord(ch)做。大于等于48小于等于57的Ascii码为数字,大于等于65小于等于122为大写字母。其他为字符(别题或许错误,本题是正确的)但,且慢!!楼上的程序有了一个致命的错误,str(90)='Z',str(91)='[',str(95)='_',str(97)才等于'a'。所以,判断是否为字母,((ord(ch)>=65)and(ord(ch)<=90))or((ord(ch)>=97)and(ord(ch)<=122))下面是参考程序:var
zf,sz,zm:integer; ch:char;
begin
zf:=0;
sz:=0;
zm:=0;
read(ch);
while ch<>'?' do//读入处理
begin if (ord(ch)>=48)and(ord(ch)<=57) then inc(sz)//处理数字
else if ((ord(ch)>=65)and(ord(ch)<=90))or((ord(ch)>=97)and(ord(ch)<=122)) then inc(zm)//处理字母(关键)
else inc(zf);//除了字母和数字就是字符
end;
writeln('zifu:',zf);
writeln('zimu:',zm);
writeln('shuzi:',sz);
readln;
end.
由于时间来不及,我直接在网页上打,没有运行。有可能会出现笔误或单引号错误,你复制时可以修改,请谅解。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯