- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:
0 l0 E9 y# X, q% |1:7 ~. R& }. w2 }3 N4 @
" {: P4 ~) l0 e' c
*; n, a3 p, D/ s, N; i
**
) d! H9 [4 v& t***/ q d2 I5 Z" C( |- \& @* n( \9 j7 W; c
****
@1 C- i& b% ]2 @) Y- s# ]*****
1 ]) i! U5 _+ }; m7 S: W a$ K******
0 C \/ Z: y$ s5 F$ A3 m% ]$ n
% G' c" j/ \- v3 l程序如下:% ~$ `$ j$ J/ U# v" x5 Y
$ N3 X! i5 v) \( @% |1 kvoid fun1(int n)2 I7 s: h; f+ |- B3 A* Z4 ~0 O
{
* r8 z, I. o, D. e for ( int y=0; y<=n; y++ )% J9 Q$ W+ Y, N4 p+ }
{) ^% Y3 C! h' W% O E1 a e5 [
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
% A- _) C& R# V7 z1 R8 q) u {9 f: _3 z( ]& n9 u9 X$ D0 Q
cout << '*';7 c* m2 Y1 E0 Z& {4 A1 l
}
& m- o. Z) U: }4 K, [ cout << endl;//换行( m3 s( e6 l, ]& K) l; v* h5 m
}+ ]+ }( g: p0 d4 E8 ~1 |8 s
}
4 Q% [; A. S' t8 a
) w/ C( p; h7 y2:
' ~( r7 a) b& ?1 m% R----*----3 E9 }! h, H/ @5 F5 z( S
---***---
2 {; w2 k* R* ~--*****--
1 Z5 A( L( A& k, m8 ]-*******-
* |6 X& [7 C* ~*********
: @6 f$ e9 k+ h) D+ ?6 r4 c0 ~/ D
: }# q8 d/ M) f! x4 q* _这组就复杂些了,每一行都分为3部分,应该分别打印。* X; {- h5 ?% k4 V S
程序如下:
D' y6 ?1 F) `. c$ A4 U
$ N& M, F: z* j+ E/ q0 p% Kvoid fun2(int n)3 y( F i& X4 f
{
7 x1 A1 P0 v8 M5 K" `9 d int s,x,y;
" g) p( Y4 O0 k) k for ( y = 0; y<n; y++ )8 C' W7 u& E7 H, ?
{& F5 z8 q9 `) ^
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
. m( X9 B2 v* X; e: z( f cout << '-';
0 s. u. Q* \; X: k for ( x = 0; x < 2 * y + 1; x++ )
" R0 l3 w" c: D/ H8 Y cout << '*';5 Y+ ^$ r" u- ?- [
for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行! [0 k9 z, I: d
cout << '-'; {5 ~) e- z2 \
cout << endl;
; h. P- Q' ]. C* h8 i% S }& E$ k2 o2 n# y
}
8 K7 U( K0 K! C- ^- b: y# s7 x/ J, X; I: B# G- c7 Z( ~
3:8 k9 {4 l' U1 ^: _9 F' U* k
3 E# N+ U) C4 s0 [+ ]+ [& Y----*----
% |. a% R! E. R---***---
, \- w, C$ X% w" \--*****--
$ d4 f0 C2 m6 `1 V/ s3 a-*******-
! n4 ]% F! j$ u% W*********
# D( G3 z: j+ d5 @) M9 b-*******-
8 N0 }0 D/ w. i- F. q--*****--
; n0 y8 s* Y$ W+ Z0 l& ?6 [4 J- c& ?---***---
- t/ Z" t! ~- v/ _! k- O6 ~+ G* S----*----. c7 I. v. F* Y" ]8 B: |2 w
$ F* l6 V0 J+ h
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
6 M9 m- I1 @ C+ j2 R: O打印下半部的程序:
. \9 R1 j7 f8 `void fun3( int n )2 F" K/ ]( T4 S6 D
{
& N1 i: N% k& K6 {* X2 f8 i8 _4 p$ J int s,x,y;
( h1 M }$ ~ t0 q: Q/ K //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
8 r# `7 L* H' k! C' T7 X for ( y = n - 2; y >= 0; y-- )
) E* W- ^0 ~6 q: l {
3 B. c: f q0 l" X P //循环体没有改变6 s; e( f7 V. Q9 f7 n8 W9 V
for ( s = 0; s < n - y - 1; s ++ )
/ w# D$ \3 s8 k/ U9 W cout << '-';
3 d- P8 D, Q) M/ p1 Y4 P for ( x = 0; x < 2 * y + 1; x++ )
8 h/ E" Q0 f% H+ F8 j cout << '*';' N1 y. {( N8 j; i, p5 V5 A* j
for ( s = 0; s < n - y - 1; s ++ ); G' ]2 d: S1 ~6 |1 m6 c0 ^
cout << '-';# N6 l W5 n3 h! H+ N+ a+ e p" d
cout << endl;/ m: U j& u: t2 l: \8 T
}0 f; z+ Z( J. w+ U. }
}. |$ e+ ~- ]6 e6 Z
, o. Z3 \# h6 T/ ^1 U6 E4 i: }要打印整个图形:
* W! v: M0 W& f, A+ A! I& a
, D/ e9 G, B8 O5 C$ x. _void main()2 T4 `5 m$ h" \2 g- U1 E
{
# C( i8 j# T0 ^' }& ]! Q7 U" s fun2(5);//绘制上半部分
5 Q1 Z! W+ E) A# r2 h fun3(5);//绘制下半部分
1 m# N8 O* e$ @. O$ i6 E5 g}
( F) O S4 E' D. M) ~/ ^6 O* ~$ T
2 `. s% K" r) u* C6 P0 u
0 z! t2 W; {" j* h这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|