例6、输出下面的数字图形: *****
***
1 *
222 ***
*****
33333
4444444 555555555 For i:=-2 to 2 do Begin Write(‘ ‘:3-abs(i)); program dcxh6;
For j:=1 to 1+abs(i) do var m,n:integer; Write(‘*’); Writeln; begin
End; for n:=1 to 5 do
begin
write(' ':11-n);
for m:=1 to 2*n-1 do write(n); writeln; end; end.
例7上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只? Program mj;
var i,j,k:integer; begin
for i:=1 to 33 do for j:=1 to 50 do begin
k:=90-i-j;
if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5); end;
end.
例8,将100元面值的人民币,换成小额面值的人民币分别为:10元、5元、2元、1元,共40张。编程计算兑换的方法。
Program rmb;
Var a,b,c ,d:integer; begin
for a:=1 to 10 do for b:=1 to 20 do for c:=1 to 50 do begin
d:=40-a-b-c;
if 10*a+5*b+2*c+d=100 then writeln(a:2,b:2,c:2,d:2);
end; end.
多重循环练习:
习x_1、若一个四位数abcd,满足abcd=a4+b4+c4+d4,则称abcd为玫瑰花数。试求出所有的玫瑰花数。要求采用多重循环语句完成。 Program x_1;
Var s,a,b,c,d:integer; Begin
for a:=1 to 9 do for b:=0 to 9 do for c:=0 to 9 do for d:=0 to 9 do begin
s:=1000*a+100*b+10*c+d;
if sqr(sqr(a))+ sqr(sqr(b))+ sqr(sqr(c))+ sqr(sqr(d))=s then
write(s:6); end; writeln; end.
思考:若一个五位数abcde,满足abcde=a5+b5+c5+d5+e 5,则称abcde为五角星数。试求出所有的五角星数。要求采用多重循环语句完成。 Program x_1_2;
Var s,a,b,c,d,e:longint; Begin
for a:=1 to 9 do for b:=0 to 9 do for c:=0 to 9 do for d:=0 to 9 do for e:=0 to 9 do begin
s:=10000*a+1000*b+100*c+10*d+e;
if sqr(sqr(a))*a+ sqr(sqr(b))*b+ sqr(sqr(c))*c+ sqr(sqr(d))*d+ sqr(sqr(e))*e =s then
write(s:6); end; Writeln; End.
习x_2. 用5元钱买100只纽扣,其中金属纽扣每只5角,有机玻璃纽扣每只1角,小纽扣1角买3个,编程求出各种纽扣各买了多少只?(要求每种纽扣至少买一颗)。 Program x_2;
Var x,y,z:integer; Begin
For x:=1 to 10 do For y:=1 to 50 do Begin
z:=100-x-y;
if 5*x+y+z/3=50 then write(x:3,y:3,z:3); end; writeln; end.
习x_3、输出图形: a a b a b c
a b c d ??
program x_3;
var m,n,ch:char; begin
readln(ch); d
for m:=’a’ to ch do begin
write(’ ’:30-(ord(m)-96)); for n:=’a’ to m do write(n:2); writeln; end; end.
**********1
习x_4、打印金字塔数。
*********121
1 ********12321
1 2 1 … … … 1 2 3 2 1 **123456787654321
*12345678987654321 1 2 3 4 3 2 1
??
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 program x_4;
var m,n,k:integer; begin
for m:=1 to 9 do begin
write(’ ’:10-m);
for n:=1 to m do write( n );
for k:=m-1 downto 1 do write( k ); writeln; end; end.