QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
- q% [# d1 J( B" a  i( L1:
( W0 [. c! ^9 Y) V  H( j- a9 g! n! W
*
2 J1 x4 v1 {5 u* u0 P$ C6 P8 O**
' f( t. I6 J( R+ Z***
5 ~1 s4 g' w' i6 ?' x. E****9 [7 b* N4 }7 \3 P+ ~
*****5 Y5 g8 p/ f! ^& C
******
3 z" I; X& e. y3 g" B1 G4 m0 b2 T  m& n: L5 o
程序如下:- Z! j4 u) j0 }* v! P% i9 g$ u
1 d" N' R3 F1 h' [/ Z
void fun1(int n)0 q( u2 n2 t/ j5 c/ u9 ~4 z
{/ o; J' k# d( J9 |
    for ( int y=0; y<=n; y++ )
% P* c, F, @% a5 X( v" r9 J5 T  m' i    {* b8 B5 Y% Q! t5 R' C/ n7 |8 O8 q
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关" E! T3 I9 r+ z5 d$ E0 E
        {1 C+ W* D0 [! {
            cout << '*';
4 ?% U! l8 Z$ I9 H9 C        }
: [) R+ S2 ~% U; e3 z3 n        cout << endl;//换行' c1 I  a4 E4 i
    }' D" y0 a: a7 b
}8 S0 k4 c9 A+ w5 ?# t

3 w, Q% e" z1 j6 S/ k! P2:& l) h& K& [# Y: e2 K1 i- Y
----*----$ _/ b' Z6 c: F$ M! U8 M# ?
---***---
  r+ k0 k5 J1 _--*****--
) K$ w7 I' H+ Y  u$ d-*******-* n" s9 R: h( N& y, u
*********& v+ {) y, i: T
% x4 @/ {+ K4 h8 y; A; @; }
这组就复杂些了,每一行都分为3部分,应该分别打印。# y9 h8 R5 o, v6 F5 l5 t; k( G! G
程序如下:
/ k* q1 j* i0 }, O& x
( r) P$ a) }# F" C" w# `void fun2(int n)( j2 Z* h% U' X' f# V! E
{
  N0 r& V+ o  C) R    int s,x,y;+ _# x/ C- W' t% L$ X# N
    for ( y = 0; y<n; y++ )( a, H0 G3 ?: X  p* j& z! M# D' S
    {" j8 X2 w! y; A& {, F) K, E6 @- G
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点! r; G+ g$ @+ i; ?
            cout << '-';4 h# m6 F* u' k1 u5 @
        for ( x = 0; x < 2 * y + 1; x++ )% Q' r" f/ l, L/ f
            cout << '*';
8 _+ \+ @# k& X        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
3 `5 I- v' S! C4 S9 G5 B: m2 G            cout << '-';
4 ?! l, a* o% Y7 m$ ]- y        cout << endl;2 N/ @' b$ ^- }: C. f* w. P
    }
0 ?& O( p+ C: [7 O0 U0 e* b}
' O7 s5 o7 p" p: F3 ^: Q* S" i$ H. i: {
3:( E. R/ D3 f! A2 w! W! D3 k' z( U

' |- Z# |6 \5 f9 r0 W% J! X----*----
8 M7 t, h. A: n! a# o# G---***---. m% S4 f, N( H& m, @! `0 ^" @
--*****--) s; K2 w, i- f! ?" n; v0 E
-*******-
( z; A  ~, z7 t; c" X*********
' H8 i, y* ?$ M( A( H-*******-( a- Q/ a5 y: l. e9 n4 f/ l
--*****--- p& z" M% g) z. ^: f6 W5 M
---***---0 W+ R. A% |" Y4 \- d# i& `
----*----  P( U6 m7 [2 A* ?3 U

2 A! K, b1 y/ ~  d7 q这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现2 N6 X7 C2 E; u1 m1 j- C3 h3 C
打印下半部的程序:
6 P. H$ l' W5 K! D8 ivoid fun3( int n )
# W0 f* |8 t3 K& S* x: }  T{
/ l% u. M* h# G2 X! |2 y1 U    int s,x,y;
' A0 y  @+ H8 I8 ?$ S+ D' J    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了$ E2 i- G+ ], t8 j+ _1 y
    for ( y = n - 2; y >= 0; y-- )  & E' i' y, I9 A: _& G
    {
) h' B* v1 G" E/ r, @9 \! B        //循环体没有改变& \" M* N2 d) p8 w; E: L
        for ( s = 0; s < n - y - 1; s ++ )9 |1 D6 G& @1 Y5 z) \
            cout << '-';7 b3 g" N1 U; M4 ^8 \& r3 K
        for ( x = 0; x < 2 * y + 1; x++ )7 y, X+ d2 [  E9 ?- q
            cout << '*';1 ^! _+ g  Y' x3 ?# p- s
        for ( s = 0; s < n - y - 1; s ++ ): z9 w5 _$ v$ U/ H/ a6 c
            cout << '-';
6 Q2 n9 f! o0 ?. A& F2 T        cout << endl;
7 r) b3 m' ~  y. B    }
+ }! g( J5 r  |* m/ D% l8 B}
8 D, w' e1 ]0 j( q& }& s
$ r( `0 Y& j- c要打印整个图形:6 L% Y5 d% e( A5 {5 g

3 y( `: F, S  E- d9 }void main()
  j1 y" y) J' c; ?$ E{9 H$ y! l0 [% ?1 E! n4 d
    fun2(5);//绘制上半部分- T% \1 V7 X" ~$ H+ Z0 M2 r
    fun3(5);//绘制下半部分
, D  \" a9 _: \$ _6 L}
7 a6 ]9 ^8 \& B% h; D7 ^( u
! S9 M+ b+ _9 X( O; y3 Q9 f7 Y
1 }- l% j" s# l5 S这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.: `) w9 }, J+ w( v  k; w9 J4 k
</P><>
</P><>支持</P>
回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2026-9-2 05:34 , Processed in 0.302713 second(s), 63 queries .

回顶部