第四章3 循环结构程序设计之多重循环

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

样程:
program sd; var i,j:integer; begin
for i:=1 to 9 do begin for j:=1 to 9-i do write(‘ ‘); for j:=1 to i do write(j); for j:=i-1 downto 1 do write(j);
练习:打印边长为n的菱形(其中n 要求是任意的)。如下图:n=5
* *** ***** ******* ********* ******* ***** *** *
分析:n=5时:
i abs(i)
-4
4
-3
3
-2
2
-1
1
0
0
1
1
2
2
3
3
4
4
2*(n-abs(i))-1
1 3 5 7
* *** ***** *******
begin for j:=1 to 2*i-1 do write('*'); writeln end end.
练习:打印边长为n的等腰三角形 (其中n要求是任意的),如下图: n=5
*
***
*****
*******
*********
分析:
n=5时:
i n-i
1
4
2
3
3
2
4
1
5
0
2*i-1
1 3 5 7 9
* *** ***** ******* *********
样程:program sd(input,output);
var i,j,n:integer; begin read(n); for i:= 1 to n do begin
for j:=1 to n-i do write(' '); for j:=1 to 2*i-1 do write('*'); writeln end end.
样程:Program godbah(input ,output); 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 round(sqrt(p)) do if p mod j = 0 then flagp:=false; flagq:=true; for j:=2 to round(sqrt(q)) do if q mod j = 0 then flagq:=false; until flagp and flagq; writeln(n,’=‘,p,’+’,q) End.
第三部分 多重循环
一个循环的内部又包括一个循环,又叫 循环的嵌套.
请说出下面程序的输出内容。
Program ex(input,output); Var j:integer; begin
For j:=1 to 10 do write(‘*’)
end.
请说出下面程序的输出内容。
Program ex(input,output); var I,j:integer; begin
s:=0; t:=1;
for I:=1 to 10 do
begin
t:=t*i;
s:=s+t;
end;
writeln(‘s=‘,s)
End
例:从键盘任意输入n个10以内的自然 数,编程求他们的阶乘的和。例如:输 入五个数a,b,c,d,e,则S=a!+b!+c! +d!+e!。
其中n!=1*2*3*…*(n-1)*n
验证哥德巴赫猜想.
哥德巴赫猜想是:对任一充分大的 偶数n,可以找到两个素数p,q,使得 n=p+q
算法:
1. 读入任一大于3的偶数n
2. P:= 1;
3. Repeat
1) p:=p+1; q:= n – p; 2) p是素数吗? 3) q 是素数吗? until p,q均是素数 4. 打印n = p+q
For I:=1 to 4 do begin
For J:=1 to 10 do write(‘*’) end
End.
请说出下面程序的输出内容。
Program ex(input,output); 外
var I,j:integer;

begin For I:=1 to 4 do


begin For J:=1 to 10 do
前半段
空格数 数字
后半段 数字
*********1 ********121 *******12321
18 1 0 27 2 1 36 3 2 45 4 3
………
54 5 4
*123456787654321 6 3 6 5
7
12345678987654321 8
2 1
7 8
6 7
90 9 8 9-i i i-1
样程: Program ex;
var I,J,n,a:integer; s,t:longint;
begin s:=0; readln(n); for I:=1 to n do begin read (a); t:=1; for J:=1 to a do s:=s+t; end;
writeln(‘s=‘,s) End .
其中n!=1*2*3*…*(n-1)*n
分析:编程计算S=1!+2!+3! +……+10!的值。(4037913)
首先该题总的来看是一个累加求 和的问题,总共累加了10项,第I 项是i!。
设t=i!
则t=1*2*3*…*(i-1)*i
这又是一个累乘操作。
方法一:Program ex;
var I,J:integer; s,t:longint;
t:=t*J;
例题:
用5元钱买100只纽扣,其中金属 纽扣每只5角,有机玻璃纽扣每 只1角,小揿扣1分钱买3个,编 程求出各种纽扣各买了多少只?
分析:
用x,y,z分别表示金属纽扣,有机玻 璃纽扣,小揿扣的只数,依题意可 得下列方程组:
x+y+z=100
50x+10y+z/3=500 可能有多组解,也可能无解。
例 打印如下数字金字塔
1 121 12321
……… 123456787654321 12345678987654321
分析: 打印如下数字金字塔
********1 *******121 ******12321
……… *123456787654321 12345678987654321
方法一:
i


write(‘*’); writeln
end
End.
练习:打印边长为n的直角三角形 (其中n要求是任意的),如下图: n=5
* *** ***** ******* *********
分析:
n=5时:
i 2*i-1
1
1
2
3
3
5
4
7
5
9
* *** ***** ******* *********
wk.baidu.com
program sd(input,output); var i,j,n:integer; begin read(n); for i:= 1 to n do
writeln end end.
方法二:
i 空格数
*********1 ********121 *******12321
18 27 36 45
………
54
*123456787654321 6 3 72
12345678987654321 81
90 9-i
数字 1
1-2-1 1-3-1 1-4-1 1-5-1 1-6-1 1-7-1 1-8-1 1-9-1 1-i-i-1
样程:
program sd; var i,j:integer; begin
for i:=1 to 9 do begin for j:=1 to 9-i do write(‘ ‘); for j:=1-i to i-1 do write(i-abs(j)); writeln end end.
例:编程计算S=1!+2!+3!+……+10! 的值。(4037913)
9 *********
7
*******
5
*****
3
***
1
*
program sd(input,output); var i,j,n:integer; begin read(n); for i:= -(n-1) to n-1 do begin
for j:=1 to abs(i) do write(' '); for j:=1 to 2*(n-abs(i))-1 do write('*'); writeln end end.
begin s:=0; for I:=1 to 10 do begin t:=1; for J:=1 to I do s:=s+t; end; writeln(‘s=‘,s)
End.
t:=t*J;
方法二: Program ex;
.
var I,J:integer; s,t:longint;
begin
方法二:Program ex(input,output);
var x,y,z:integer; Begin for x:=0 to 10 do
for y:=0 to 50 do begin
z:=100-x-y; if (50*x+10*y+z/3=500) then writeln(‘x,’ ‘,y,’ ‘,z’) end End.
方法一:
Program ex(input,output); var x,y,z:integer; Begin for x:=0 to 10 do
for y:=0 to 50 do for z:=0 to 100 do if (x+y+z=100)and(50*x+10*y+z/3=500)
then writeln(x,’ ‘,y,’ ‘z) End.
相关文档
最新文档