【#第一文档网# 导语】以下是®第一文档网的小编为您整理的《(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.dywdw.cn/e91ae260cb50ad02de80d4d8d15abe23482f03b7.html