PASCAL复习6
1. 哥德巴赫猜想(文件名 GDBH.PAS)
哥德巴赫猜想:任一大于3的偶数,可用两个素数之和表示。如8=3+5,98=19+79
输入输出样例: 输入:N=16 输出:16=3+13
VAR n,p,q,j:integer; flagp,flagq:boolean; begin read(n); p:=1; repeat
p:=p+1;q:=n-p; flagp:=true;
for j:=2 to p-1 do
if p mod j=0 then flagp:=false; flagq:=true;
for j:=2 to q-1 do
if q mod j=0 then flagq:=false; until flagp and flagq; writeln(n,'=',p,'+',q); end.
2.密码输出(文件名MMSC.PAS)
当用户输入一个字符串时,程序能自动生成一个密码。密码生成的规律为:奇数位的字母转换成其后第2个字母,偶数位的字母转换为其前第2个字母,非字母字符不变。 输入输出要求:
输入:输入一个五个字符组成的字符串。 输出:将按密码生成规律生成的密码输出。 输入输出样例:
输入 :ilY8@ 输出 :kjA8@ var f:integer; c,ch,a:char; begin f:=0; repeat f:=f+1; read(c);
ch:=pred(pred(c)); a:=succ(succ(c)); case c of
'a':if f mod 2=0 then write('z') else write(a); 'b':if f mod 2=0 then write('y') else write(a); 'y':if f mod 2=1 then write('a') else write(ch); 'z':if f mod 2=1 then write('b') else write(ch);
'A':if f mod 2=0 then write('Z') else write(a); 'B':if f mod 2=0 then write('Y') else write(a); 'Y':if f mod 2=1 then write('A') else write(ch); 'Z':if f mod 2=1 then write('B') else write(ch); 'c'..'x':if f mod 2=1 then write(a) else write(ch); 'C'..'X':if f mod 2=1 then write(a) else write(ch); else write(c); end;
until f=5; writeln; readln end.
3. 念数字(文件名NSZ.PAS)
编一个“念数字”的程序,它能让计算机完成以下工作:当你输入一个0至99之间的数后,计算机就会用汉字拼音印出这个数的念结束。
输入输出样例:
输入Input data:35 输出 SAN SHI WU 输入Input data:0 LING
如果输入的数不在0到99之间,就印出“CUO LE”(错了),请求重新输入。 var n,a,b:integer; begin repeat
write('Input data:'); readln(n);
if (n<0)or(n>99) then writeln('cuo le'); until (n>=0)and(n<=99); a:=n div 10; b:=n mod 10; case a of
1:write('YI SHI '); 2:write('ER SHI '); 3:write('SAN SHI '); 4:write('SHI SHI '); 5:write('WU SHI '); 6:write('LIU SHI '); 7:write('QI SHI '); 8:write('BA SHI '); 9:write('JIU SHI '); end;
case b of
0:if a=0 then writeln('LING');
1:writeln('YI'); 2:writeln('ER'); 3:writeln('SAN'); 4:writeln('SHI'); 5:writeln('WU'); 6:writeln('LIU'); 7:writeln('QI'); 8:writeln('BA'); 9:writeln('JIU'); end; readln; end.
4. 报数游戏(文件名BSYX.PAS)
小明和小红一起玩报数游戏:小明按1-A1循环报数,小红按1-A2循环报数。两人同时开始,并以同样的速度报数,当两人都报了N个数时,统计出两人同时报相同数的次数,先算对者获胜。请你算出正确答案,当他俩的裁判。 输入:N(N<=100)
A1 A2 (A1、A2取值范围:2..10) 输出:一个整数 输入输出样例: 输入:10
2 3 输出:4
var t,n,a1,a2,s,aa1,aa2:integer; begin
writeln('shu ru n'); readln(n);
writeln('shu ru a1 a2'); readln(a1,a2);
t:=0;s:=1; aa1:=1; aa2:=1; repeat t:=t+1;
aa1:=aa1+1; if aa1>a1 then aa1:=1;
aa2:=aa2+1; if aa2>a2 then aa2:=1; if aa1=aa2 then s:=s+1; until t=n; writeln(s); end.
5. 电灯开关(文件名DDKG.PAS)
环绕大厅有七盏电灯A,B,C,D,E,F,G,各自装有一个拉线开关,开始时只有A,C,E,G四盏灯亮着.一个小孩从A灯开始顺次拉一下开关,问当他拉了N (N>1000)次开关后,最后有哪几盏灯是亮着的?
输入输出样例:
输入:N=1100 输出 a b d f 输入: N=1200 输出 a c d f
Var n,a,b,c,d,e,f,g,x,y:integer; Begin
write('input n(n>1000):');readln(n); a:=1;b:=-1;c:=1;d:=-1;e:=1;f:=-1;g:=1; x:=n div 7;y:=n mod 7; if x mod 2=0 then begin
if y<>0 then begin y:=y-1;a:=a*(-1);end; if y<>0 then begin y:=y-1;b:=b*(-1);end; if y<>0 then begin y:=y-1;c:=c*(-1);end; if y<>0 then begin y:=y-1;d:=d*(-1);end; if y<>0 then begin y:=y-1;e:=e*(-1);end; if y<>0 then begin y:=y-1;f:=f*(-1);end; end;
if x mod 2=1 then begin
if y<>0 then y:=y-1 else a:=a*(-1); if y<>0 then y:=y-1 else b:=b*(-1); if y<>0 then y:=y-1 else c:=c*(-1); if y<>0 then y:=y-1 else d:=d*(-1); if y<>0 then y:=y-1 else e:=e*(-1); if y<>0 then y:=y-1 else f:=f*(-1); g:=g*(-1); end;
if a=1 then write('a '); if b=1 then write('b '); if c=1 then write('c '); if d=1 then write('d '); if e=1 then write('e '); if f=1 then write('f '); if g=1 then write('g '); writeln; readln; End.
6.环形剪数(文件名 HXJS.PAS)
将1~9这九个数字,如下图排成一个环,请在某两个数字之间剪开,分别按顺时针和逆时针次序排列成两个九位数,要求剪开后所得到的两个九位数的差最小,共有几组剪法并输出?
1
9 2 8 3 7 4 6 5
输入输出样例:
输入: 6 2↙ 输出: 2
输入: 9 3↙ 输出: 15
var
n,k,i,j,a,b,c,d,s,min:longint; begin
readln(n,k); min:=10000000;s:=0; for i:=1 to n do begin
a:=i;b:=0;c:=i;d:=0; for j:=1 to k do begin b:=b*10+a;
if a+1<>n then a:=(a+1) mod n else a:=n; d:=d*10+c;
if c-1<>0 then c:=c-1 else c:=n; end;
s:=abs(b-d);
if s end; writeln(min); readln; end.