QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4215|回复: 1
打印 上一主题 下一主题

算法入门系列之一

[复制链接]
字体大小: 正常 放大

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
$ q9 G- f. A. L1:
! g* A1 d8 B9 s, C  n8 o$ u
- U- S: R- _7 m0 [9 E% K+ }' b*
! @% p+ s; o8 @# V7 S1 S**& ]6 \& r$ T* M$ e: F! K
***' c, ]/ I% K3 a  o; D
***** k* J& G6 @+ c: E3 a
*****
$ D$ e( p( L( @: i******  ^* g; o5 m/ s; M) S

5 J. M& Q" ~4 W0 @2 z. ^$ r% E+ h程序如下:
* r& u* E0 w; `, R( H! b6 ?; z+ \6 ^6 k7 _& s" h% `- U
void fun1(int n)
- i! @2 F5 J7 T5 G4 `- t% B6 x# M/ B{! m* @6 W) S% c' U
    for ( int y=0; y<=n; y++ )5 I8 M2 H+ S# U1 a/ M
    {
3 x, ^* N: g! s9 j# m; s        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关. O4 D+ l' p2 c$ x) t3 t
        {3 q; \; I4 Q2 V% x8 @/ }4 T5 z
            cout << '*';/ U( x/ _3 ~( T8 K# j
        }- K/ K' C% g  G. @# {1 ~$ p
        cout << endl;//换行
$ m. D2 ?3 E* N' M. l$ n1 k    }
$ c; P9 D7 x' n}
4 D! Y; l7 c. e$ J; d) j( a4 \. u
  i- Q6 \( _( w+ T& |$ V2:
  j/ Y. T2 L3 E/ ]6 k----*----
9 f7 ~* F5 ]- Y0 D  H" M---***---
: Y5 m- o* p2 N3 Y--*****--. V) F( ?1 A" N6 |" G
-*******-; s( R, s9 x9 `0 A1 V7 y& [( Q7 O
*********, h& A  i8 |6 c* y0 f3 V

2 `4 S  r/ j7 J7 M. E这组就复杂些了,每一行都分为3部分,应该分别打印。
" ]& O9 {" D6 E  @" \0 y8 o. E3 O程序如下:; }0 `0 `9 S0 l5 C3 h3 d
% |4 k/ ]8 S; ~* W3 z5 ~" W
void fun2(int n)
& X& e% w3 O: c+ f4 d! _{
  R% m! g* g- b5 G- u    int s,x,y;
/ `0 G, w4 H7 f6 r5 U, h0 G8 ]    for ( y = 0; y<n; y++ )
) j" B. O2 ]; r. L. H, f4 n    {, _! [6 k% C4 N6 p! T
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
8 I- r, i/ w+ ]7 z+ \+ c; U            cout << '-';) `4 M, B  ^& }
        for ( x = 0; x < 2 * y + 1; x++ )4 D+ e, b0 m4 ?% `" ~
            cout << '*';
  H# P! |3 l% L  @+ `        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
# [& u8 J+ ]; A7 W6 o( x, c& H  |            cout << '-';" d; k" ?6 i3 _
        cout << endl;9 Z1 v' ^- a( @5 c# p- a
    }
" _# L- Y  G! M# W% O$ X}
# |$ H6 j+ J4 h9 p( `8 S! x
/ W  B( L  _. A/ @  d1 o4 i6 c. `3:
+ V1 h7 \' P! \4 o; j6 d, u& c0 N7 C4 y3 g$ ]! L
----*----& P$ Z! G8 g" @: J7 E6 h  b
---***---
$ f- @" f: n7 `* d# ~3 [. o--*****--
0 z3 P' z! u- P" a-*******-; Y5 ~# o% u& w- K5 A- O0 Y
*********
  |, P7 q: _5 L. P-*******-, K, M1 D& F5 g% }
--*****--  d/ j& J8 v" I' ~
---***---
- {( g( A  K. J8 W----*----
* H& F7 g' `; P
1 q% K: W" T* y- C+ o- N2 s这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
/ i! E- t: X7 a/ y- Y9 Z打印下半部的程序:
2 ?" _. n, m% L2 f6 Ivoid fun3( int n )
! B: q6 U% Q' _) M{; h* j0 e+ o0 n' b- t& F
    int s,x,y;
# M1 D# k8 x( v) ^  h* @    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
- s7 s" c+ r2 ~- I$ I0 o    for ( y = n - 2; y >= 0; y-- )  / }* r& E9 o; w- r7 P* I- ~2 I
    {
3 n  u" P* D. s; T        //循环体没有改变
4 p2 l$ C* Y2 ^7 s7 m        for ( s = 0; s < n - y - 1; s ++ )6 h% @, F3 W# o3 J
            cout << '-';
3 U# N$ H; W( _% @        for ( x = 0; x < 2 * y + 1; x++ ); g7 v: n' \; Y4 ~+ W
            cout << '*';
+ G6 e1 F2 Q1 z0 h( r  E        for ( s = 0; s < n - y - 1; s ++ )5 h; S& B. f0 B6 S( b- d
            cout << '-';! M, e5 q# g/ `1 W
        cout << endl;# U* U% w7 t' u9 v) I+ A, G2 b
    }
% ?3 T4 r! ^& a$ ^: u+ I0 R& k}
' R: x! w/ R6 ^& S- k; W
) p- Q' f5 d# F, R7 B- Y3 Q% h& p要打印整个图形:
! _) O. _" I( X# ^+ Q  b
8 T- s2 ]5 _9 ]2 t" @2 f, ~- Wvoid main()
5 t% s1 g4 w8 }{
) f0 ]' x6 {: M. {7 E    fun2(5);//绘制上半部分
4 D4 K# n! g+ m8 H. b    fun3(5);//绘制下半部分
. S  K! i2 N9 w- v! ]* K' p}
0 e- f7 j3 g% C. I) u- Y/ j6 t
, Z9 g( T/ M! G) T4 N: [9 c
5 Y% N6 X& J# T5 H1 l& C这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.$ u8 D! r, ?# h( n) ^! q
</P><>
</P><>支持</P>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-6-11 13:48 , Processed in 0.442549 second(s), 62 queries .

回顶部