- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:
2 H$ x4 J: Q! q1 s6 T2 d1: P. @+ A4 [" W; d4 e
$ n* }3 a( {* s, T7 }*
+ s) V4 b- }2 O; G**
: K$ W5 a, c: g4 p& G***
: Y2 f, p- _! d0 h: q****- ` t6 v3 S) U5 U# U! j. d
*****! U1 [% [. Z7 J# I$ ?& \
******* U* e# A7 ?5 g( J7 [% G& f8 J
! ~- c D# o1 P2 d2 t: \" @
程序如下:/ S. Y2 Z: I/ f8 N3 N: t
7 @! D' ^* [8 L& Avoid fun1(int n)
! s" r$ j; O V: ~- l; g& |5 i; ]{. K) h3 m, M* S" Z
for ( int y=0; y<=n; y++ )
6 P0 f% e/ s; [) t0 i5 s$ w: @ {$ ^: X& W# c# G1 ?, n
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关5 R2 g {6 q- s+ [
{5 {7 k: {! b3 p% g6 \+ A
cout << '*';
8 \$ d# M: ^4 y5 H }
4 D6 l/ H5 L8 D% m+ | cout << endl;//换行
9 e$ s) K+ I- l% I; e; M }
" D, X# M( k- Y5 O& j; E- p}
0 J- k& _9 C; e4 g$ ]5 y6 i6 d* |) }8 e5 n z' K4 ~
2:
; s3 K9 d; z' R& Z& m/ z----*----
4 q6 `0 v7 a' a$ |---***---$ w2 M1 Q6 ^' Z' q; W( [
--*****--
$ s! W* {3 c w) g% r# [$ Q-*******-
+ _& _& G4 \, I i. ]7 y*********
0 E y' E# N6 l" o: R! d) ~3 L, n% T1 e f4 t1 c
这组就复杂些了,每一行都分为3部分,应该分别打印。
/ z1 c) c- U Z- f2 D% n3 U程序如下:- r9 g. G, S4 R6 L2 Y |
! H5 c' @! @! {9 R; ?/ a- U" ovoid fun2(int n)
9 f- ~/ b c. _$ H- U9 a( t{7 Q( z1 y* a" m6 j
int s,x,y;
0 y$ u1 p, N/ D- l9 D for ( y = 0; y<n; y++ ). ?' [3 f5 S5 n+ {6 R
{: c% }4 G$ X3 P5 E5 B5 {2 Z9 x7 P
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
) h5 U- g1 q6 c0 x- ` cout << '-';/ l; r. d5 v$ t) R# z- {2 `( `, p
for ( x = 0; x < 2 * y + 1; x++ )* ^) ~. @" ~/ t. {% k0 m
cout << '*';
1 ~9 F( a1 a, }# D9 g4 _ for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
; Q3 @! I8 P b, j cout << '-';' W5 d$ e# T/ g: }' ^' }/ w+ h3 P
cout << endl;
: c# S" P. ]/ a5 x6 {7 p" g5 G# U }
% F% |! A2 f6 h f}6 k8 K( Z8 t" b6 Y6 j
. R% Q: y& X; t- q: T. K
3:' n' |5 y1 E7 ^+ s: T
) H, C7 f6 p4 \1 a7 E
----*----
- r+ W" J% R- V& r---***---9 |6 c. Z- n9 ^( Q! J
--*****--/ f' n ^* r; A a5 A
-*******-7 C4 u \& B& V5 L9 s0 k. m d
*********
2 O, }, t3 @% t5 K4 l. X" h-*******-
! Y5 I& X+ N. e8 D. M--*****--" T$ D1 q" ^; W8 L3 I" C
---***---
8 `1 U _0 H% i" r: O, q* k. x----*----
; f I' @' x1 O2 e
( m7 k9 Z; h3 h7 c9 k) u这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现6 y/ I7 w8 m1 r. y( e0 b* G7 [2 x
打印下半部的程序:
/ q( q& P- `9 a; gvoid fun3( int n ) a z) S. v: b; m0 A
{
, T; j: z& W) j4 N6 y1 a- _" I" g int s,x,y;) T& P* R2 p2 h* E& I
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
$ t- T4 G' N1 g0 c( Q for ( y = n - 2; y >= 0; y-- ) * S& f1 R' O4 [, h6 q0 h
{! N. w3 V) J4 i7 b+ C
//循环体没有改变
5 s2 i T( b; D for ( s = 0; s < n - y - 1; s ++ )
C* q' \6 g9 w3 \ cout << '-';
' I* L$ r" [& c+ V: n4 E& `0 ^ for ( x = 0; x < 2 * y + 1; x++ )
: M7 c- V( k4 O, t/ w/ n cout << '*';/ a4 ?, ~4 G- z4 |' x
for ( s = 0; s < n - y - 1; s ++ )
( k+ t' m& x( p cout << '-';- e* `2 K$ {4 }0 @$ z) N* i
cout << endl;
" ` B$ V. R5 ?/ ~* O: o& W6 Q2 e5 a6 t }
2 R! {1 \+ X0 h; ~6 [( i$ ~$ u7 n}3 t; I `4 s. K' ^/ U
s* W: i5 S4 k; l要打印整个图形:' ~5 ]! T2 ]- ] V |9 ~
$ }. n u! l2 w. ~5 T lvoid main() O: [7 G8 W% l! l
{' @5 s5 \( x6 O9 E; T# d8 S
fun2(5);//绘制上半部分% i* P: [ g' I4 Y
fun3(5);//绘制下半部分
1 d; M5 g+ N5 d5 ^! ^4 o% J}0 A5 z. i5 S1 R2 S
$ d4 b. v5 r" @# Y: B1 M' q: K, M U0 x5 D2 r' B1 o# l1 { k
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|