(NOIP)数组作业二

2022-04-19 04:00:09   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《(NOIP)数组作业二》,欢迎阅读!
数组,作业,NOIP
1.读入一个十进制自然数,要求将其转换成二进制数后输出。

分析:将十进数转换成二进制数,一般采用除二取余法。如果用一个数组b来存放二进制数,可以依次把所得的余数存入b[0]b[1]b[n],最后按b[n]b[n-1]b[1]b[0]的顺序输出这些余数,就得到了所求的二进制数。

2.输入一串字符,字符个数不超过100,且以.结束,请判断它们是否构成回文。若是回文,则输出'Yes,否则输出'No'

分析:所谓回文指从左到右和从右到左读一串字符的值是一样的,如12321,ABCBA,AA等。先读入要判断的一串字符(存入数组letter中),并统计这串字符的长度,然后首尾字符比较,若相等则取下一对字符再比较,……,就可以判断出是否为回文。

3.输入一个以„.‟结束的字符串,统计并输出其中各小写字母出现的次数。

分析:引入一个下标类型为字符子界的数组num,用于存放字符串中各小写字母出现的次数。例如用num[„a‟]记录字母a出现的次数。开始时应将num的每个元素置成0当读入一个ch后,ch是小写字母,则让num[ch]1

参考答案 var

i,j,n:longint;

b:array [0..31] of 0..1; begin

readln(n); write(n,'=('); i:=0;

while n<>0 do begin

b[i]:=n mod 2 ;

i:=i+1; {指定下一个余数的存放位置} n:=n div 2 {产生的商将作为新的被除数} end;

for j:= i-1 downto 0 do write(b[j]); writeln(')2') end.


var

letter:array[1..100]of char; i,j:0..100; ch:char; begin

read(ch);

i:=0 ; while ch<>'.' do begin i:=i+1;

letter[i]:=ch ; read(ch) end;

j:=1 ;

while (j letter[i]=letter[j] do begin i:=i-1; j:=j+1; end;

if j>=i then writeln('Yes') else writeln('No'); end. var

num:array['a'..'z'] of integer; ch:char; begin

for ch:='a' to 'z' do num[ch]:=0 ; read(ch);

while ch<> '.' do begin

if (ch>='a') and (ch<='z') then num[ch]:=num[ch]+1; read(ch) ; end;

for ch:= 'a' to 'z' do

if num[ch] <>0 then writeln(ch,' ',num[ch]); end.


本文来源:https://www.wddqxz.cn/e91ae260cb50ad02de80d4d8d15abe23482f03b7.html

相关推荐