NOIP 数组作业二

发布 2022-09-05 02:58:28 阅读 2783

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;

beginreadln(n);

write(n,'=

i:=0;while( n<>0 )do

beginb[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;

beginread(ch);

( i:=0 );

while ch<>'do

begini:=i+1;

( letter[i]:=ch );

read(ch)

end; j:=1 );

while (j 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;

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

read(ch);

while ch<> do

beginif ( 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.

NOIP 数组作业四

写出程序结果 var n,m integer w array 1.10 of integer beginw 1 0 w 1 1 for n 3 to 10 do w n w n 2 w n 1 for n 1 to 10 do write w n 4 end.编写下列程序 1.小冬冬家里有7口人,每...

NOIP 数组作业三

某宾馆有一百个房间,从 1 100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间作 相反处理 第三个服务员把所有编号是3的倍数的房间再作 相反处理 以后每个服务员都是如此。当第100个服务员来过后,问有哪几扇门是打开的。所谓的 相反处理 指 原来开着的门关上,原来...

数组作业二

1 写一个二分搜索法算法的 一个冒泡排序的 写一个杨辉三角的 并认真理解 这个很重要。2 求二进制 用递归 用递归的方式实现二分搜索法。3 用j a编写程序输出1,2 n这n个自然数,要求用递归算法 4 求阶乘由用户输入一个数,求这个数的阶乘并输出 用两种方式实现,提示 可使用递归的方法 5 在数组...