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 在数组...