, v+ F/ G# k3 l4 X程序如下: 7 T# s2 s6 h& F3 K. N, _$ v" R' P: C7 d/ ^4 I
void fun1(int n)! s" I3 `2 k' S0 r# W9 M& J( l6 a
{ ' `6 Q& C& ]3 S$ O& n! M" h8 Q for ( int y=0; y<=n; y++ ) 4 o3 w% Y, D$ i1 H: b9 { { ' c! r% r e' Y& q5 G- U+ q" Y for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关 / z5 c, \. a' A- Y& S { 2 j& a$ `0 q4 {" F* l* ~ cout << '*';# H% Y g9 W/ H+ z" m7 H0 F, J
}7 S7 j; E: l$ @
cout << endl;//换行 d7 k& x" }$ Z" Y; P+ H+ k8 }# E } ~8 t3 i8 |+ P
} # o; K% e/ D5 ]/ V) M3 m$ U3 w9 V, X4 k8 ~
2:5 y n: t5 V: h5 S
----*----) s. R9 s* y0 Q& o
---***--- " U7 |0 i/ Q( O7 y) c--*****-- ' F8 p' I/ U6 s0 N Y' Q( j-*******- a- _4 D" U" ^% O& V3 K: F
*********( M l5 Y' s9 T* ]5 H
* d# k" g8 o! ]# L* @( H0 G" q
这组就复杂些了,每一行都分为3部分,应该分别打印。9 T0 C. z) t; _0 n+ d1 N3 T
程序如下:% a( m! s1 C% V5 a6 B" O; V: `0 S
2 |, ], ]6 [# E3 n: g( _8 n2 F/ \5 V: Cvoid fun2(int n) 6 b5 b$ L; A9 P$ a: I% Z. u{ * ^! }4 `0 u! K! p4 M0 T) v int s,x,y; 2 S" N/ i% ^5 M0 [: C, o+ D" a for ( y = 0; y<n; y++ )- }) H5 @5 N/ ^
{# G% K, T& D3 x' ]* E! P6 |# {, X
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点, Y6 }8 _& t k, z; J/ ]6 N$ N
cout << '-';% O% @# V( f3 j$ n1 l5 T0 S6 x
for ( x = 0; x < 2 * y + 1; x++ ) + U5 g: v" j6 j9 |& d cout << '*'; % L/ C. K- s/ z& p for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行 0 Z: Z. |+ U9 e( C: ` cout << '-';, A* D, ~) M- A3 h6 a; I+ G
cout << endl; * k$ F( s- j2 g9 H, e7 T( x }8 ^- `- Y" |9 r2 l- h9 ^
}7 w9 @! |: k- X2 W
1 T" A1 `( |5 _5 Y* h! P4 _3:! X, [# w- k" \0 K% g0 d0 o' i
5 L0 f9 |' f5 T
----*---- 2 h! ~! h) s+ E---***--- 6 d% A2 q+ j" k' e--*****-- - m: ^* G' v* c( l4 p; O-*******-+ B9 t8 G$ a* A1 B( L
*********2 g! w) E" g* \2 V8 l) s( G
-*******-) H) ]& v1 S1 C8 v
--*****--$ E q" L! y3 N& O! l( k [
---***---7 S K9 s3 x# I; b$ \* t" u" V
----*----( \) m' b' `; r: Y5 F3 J1 @
! r1 D, z7 |& m) b7 ]; X这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现9 S& C, v' W1 |8 [8 B5 }6 T- d, o
打印下半部的程序:) t+ F' i- l& o- d( G
void fun3( int n ) , R4 S' a, i/ i9 q{ 7 q- `7 Z$ ~/ y+ F, S5 j ? int s,x,y;6 E' l9 V0 \4 {7 y9 b, B: ^
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了$ ^ U7 W2 o5 q/ T2 w
for ( y = n - 2; y >= 0; y-- ) # C8 h! }' d' \% S# h3 c
{ $ g4 S0 e1 N0 F1 U% s //循环体没有改变5 G/ n$ `% M, w- G7 E; k; ^
for ( s = 0; s < n - y - 1; s ++ ) v2 {' o1 Y5 ]* c4 X cout << '-';# u8 M6 |1 `9 @8 F% u
for ( x = 0; x < 2 * y + 1; x++ ) ; K8 R" c: e, m( e cout << '*'; $ N/ V. j) e( s2 u1 c9 N) f for ( s = 0; s < n - y - 1; s ++ ) ' t& D2 ]; Y* \0 r+ j! u4 d cout << '-'; 2 a$ m! Q; u, Y \0 b6 s& o8 Y cout << endl; , B) S0 c& c; }, J }( z5 {; `7 f1 r& v, P
}. L, t: s* K! m3 ?- Q2 D