- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:5 a8 [" J+ I* j
1:& j& }0 B! K# c$ o! C- I$ e) j& B6 M$ O# @
" t; _) j# f2 E2 d0 g2 f% N2 Y
*- F& K6 X0 Q [. J
**. @8 g5 e# h3 `- s
***
' p- @* P5 S. ?- I****5 w, l+ H7 \. W. J- s! M
*****# P! Q" o8 r- A
******
* e% Z9 n/ v1 D* T( V9 g4 t9 O0 m1 p9 T/ D- T/ X
程序如下:
% d I) G+ U8 M4 V6 \' u* R0 ?- E
$ A: h) E$ n0 Z+ l7 Nvoid fun1(int n)9 c9 G8 V. A3 d
{9 x) S& O3 \/ ]) n0 P
for ( int y=0; y<=n; y++ )
1 N) Y; C3 G2 q8 J1 s/ @, U {
s( ?% n7 s h+ k2 A6 y6 S for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关2 B- z! |: E7 w# V( x m
{
' O' U0 J3 |* ]+ k cout << '*';
6 ?8 A+ p8 |, @+ D: V8 v9 f4 A }
" m4 D7 x0 R# l+ | cout << endl;//换行4 Z0 z# y. s- I" s
}6 L. ^) v5 w6 o
}
, d( V0 I5 h+ V' r
9 N$ I+ R( a/ `7 ~, @: r; w2:
) @! |& H! L1 C8 t9 G----*----
: F" {% _8 a9 {9 U3 b2 U# C# l. F---***---' y: ~4 c) M& \, M/ ]; |
--*****--0 ^) o+ s- q5 M
-*******-* V' ~( q! X9 X% |$ B
*********+ ]: R5 g% X- C% k0 x/ F# C8 a
1 p0 y/ p# P, L9 K8 V这组就复杂些了,每一行都分为3部分,应该分别打印。) y8 A- [0 _) S+ [/ t( T3 Q0 V
程序如下:) D8 z- S- }5 _& E
' `% W3 w0 m2 F$ }4 Tvoid fun2(int n)
- [* ?* g8 h7 y* t3 O: C{
/ L: R* y* V j$ } int s,x,y;
1 A* B6 }1 H" F3 y4 X: j for ( y = 0; y<n; y++ )& J$ O- H, X) H# G% J
{5 S% V) u& b# ]0 K% ^ a& f" N' c
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点( F* o- ]) v' Q/ d: i9 E E
cout << '-';
: M" R& f# y! _8 T; f& p2 k for ( x = 0; x < 2 * y + 1; x++ )
' I5 m/ w; z+ E$ u: c8 C4 X; G cout << '*';
) \" e9 t/ a9 }0 G/ ^ for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行4 U' ?! B( N% O# ]* z$ h
cout << '-';
3 @' h) _9 d! d/ o- w/ g$ D cout << endl;3 J: G% \& ~* F/ {; O) J9 ^( g1 G
}$ Q7 i0 H) C% h7 T4 G; H
}# O9 `# N5 f: o, l. _; f7 U
7 H% d( w+ r4 k5 [# n
3:
$ ~; v' I. C0 Y! v4 l7 a5 j! s' [9 M2 t
----*----
* M. Z7 ~/ d. z( r---***---* q8 {/ H5 i: ]; a3 Z7 E
--*****--+ U$ F% }1 }: A7 y
-*******-5 p# a. i5 M3 ]: P; e
*********8 c8 {1 i+ c' w8 }* O8 O) S' @
-*******-3 u E2 z, y/ n5 o! ^( A
--*****--
9 G' ]$ G$ M1 Y3 x( b---***---) q$ u! v# y* \4 y8 K" g
----*----
) T/ ~7 B& B* i0 S6 w) h
- z; E$ I1 h3 p: h2 B" o这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现) w8 Z: P2 o7 }* A& V
打印下半部的程序:, U1 E1 O4 }$ r1 C, k e1 r
void fun3( int n )
* ~3 I$ B* j! J% @ `{7 L/ G: [! m# t3 o. E1 c T* |3 `
int s,x,y;) s* j6 K5 Z( K9 p( X: x
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了, u- l/ k8 L" |6 u. l6 S' G: Q! W; Y n
for ( y = n - 2; y >= 0; y-- ) $ C( c: k3 J) z4 a2 L6 v
{# t4 b5 ~6 a7 @, `
//循环体没有改变
. c, {2 U/ i6 o3 `( O for ( s = 0; s < n - y - 1; s ++ )4 F6 K# O! _9 h( s1 h% ]
cout << '-';
, H5 P, z; s# p5 O3 X3 q for ( x = 0; x < 2 * y + 1; x++ )
3 [- I1 Y; a/ Y7 S1 P4 H( G5 F cout << '*';
J' \' i9 t+ ]: ]3 p& r1 a- `1 Y for ( s = 0; s < n - y - 1; s ++ )! s: E" U3 ` V1 J5 V# |
cout << '-';' D" A) U* d2 N4 \
cout << endl;
[ B3 ^" a/ z% h( k }: d" P+ }* ~/ R* Y
}4 J/ q }, |$ n& v- B* ~5 s
% w9 L, u3 O) t( `& [/ I8 u8 t要打印整个图形:2 g/ w. e3 S5 I2 D, Y
( p# D' X+ t2 Y# i4 D* R
void main()4 `) p9 ^# N0 {7 Q( V! e0 n
{
4 ^+ X8 J% H4 z4 C& @2 [ fun2(5);//绘制上半部分3 d' q5 F1 B- A$ N/ S
fun3(5);//绘制下半部分
( J3 S2 B- a1 S; r}
+ e) _8 h$ r* |+ U1 f) x) `, j4 p# G9 [
# [& ]3 @) V# u" R& m" ]2 _这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|