QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
, X! p. @# Q* N5 e1:  o2 y; |: Y7 E" Z
& w) y7 m, r+ N+ J3 b
*" Y& Z  q: \; n3 J
**
0 Z; z/ G) K) l* ]- m9 \1 x7 a**** r# \: Q% u& [- q
****& x# a5 H: Z6 a; O6 p
*****' \+ a- h- T* l. z- b+ c# p
******$ W  d1 m1 V" a' R+ Z' }: f

: O. U& {/ u! p0 C程序如下:" B+ y. u: B: E3 T2 u
9 j/ e) u! L' g8 s( d
void fun1(int n)
' `  R& {' u/ C{* K8 P8 }9 s+ `
    for ( int y=0; y<=n; y++ )
. u! V$ g- o" A% M; y) O+ A& N    {7 _( ~/ Q2 I- f6 ]7 y
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
1 t% c. A4 w; P9 v        {
! D: q) |" ~' P3 n5 s7 b# b            cout << '*';
: \  D: |) Z" o$ V& j        }/ f3 `: g7 _! F# ^2 N3 S
        cout << endl;//换行/ p8 D: D1 i3 M
    }" l9 w" b; p$ {( ?8 s
}
  N# F  [' E- p/ ?6 f9 X8 |
5 F& B$ r) \3 M0 ?0 u% g6 V2:
: ]0 ]* G; m' |----*----
; d% n2 ?5 g4 g$ b---***---
7 h. }; u4 u' f; q& _! F--*****--+ W8 d( \- d" a
-*******-* W$ N4 I+ B' w7 x
*********/ q* I  Y  @" U7 L, G) L6 k! A5 G
' h: v. w' R! d, c  H  k
这组就复杂些了,每一行都分为3部分,应该分别打印。: k  @$ m7 N. T8 |& V
程序如下:( _; P  _% P! D3 ]* r9 {4 x2 l1 J
* N* z8 K5 ~" u: Q' H  W
void fun2(int n), }: M  X7 c, ]' X
{
. _8 P- T4 }3 v/ i    int s,x,y;
2 g1 y; c1 d" ~5 M) u$ _4 K    for ( y = 0; y<n; y++ ). U4 _' U6 n" p4 ?7 a5 n
    {
/ Y- M7 ^4 C+ t        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
' \% M1 Y$ O! z) E! x4 N+ x, ?            cout << '-';1 c6 n& e% [. _: Q9 x
        for ( x = 0; x < 2 * y + 1; x++ )
3 c* w. X; ^9 q1 o            cout << '*';
, P* X4 P) X/ R( I3 n        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
1 [( o! @9 b$ W+ |0 |6 q            cout << '-';" o! w* M2 u  Y+ Z/ T5 p; _' z( X
        cout << endl;
; x: L" _9 g' a. d. i7 S    }
! Z0 H) ^7 m4 ?2 V" e1 S1 f' s8 z}
) K% _4 z7 ]+ x
5 `0 a) U  A7 G: j9 i7 P2 k3:2 ~8 x+ ~/ W$ F. y

3 U! p7 Q5 [; M9 C2 V) z0 \----*----0 E- G2 E1 l- u1 F: V8 V) Q
---***---. b3 }/ X* W9 K4 R+ E. ^* D
--*****--" ]* z4 g. G$ N0 e
-*******-
3 L% D5 Q( C+ p! {) d*********# Z4 _- ~, W" X' Q" M* x
-*******-
( \% p! \( M2 Q4 g. Y1 v--*****--+ P4 u. I! ~4 D: J
---***---
. }' e" g; l, Z' C6 O* w0 M----*----; J. u6 N& s, E4 i( ?
. H- r% L5 x" h! A/ T$ r; e
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
5 X! Y0 W2 K* _( x  j) G打印下半部的程序:
2 z' h$ F! G& D8 Ivoid fun3( int n )  w+ z' Q/ T4 e1 X* p( j
{
" t# |' t+ U+ A" P! e: O1 U: Y1 h    int s,x,y;
5 `7 f) M# j$ X% Q& q3 a    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了8 U7 e$ T% _$ o# P
    for ( y = n - 2; y >= 0; y-- )  
* v, d7 Y8 g* I    {/ F3 l9 W% F. y: |7 z
        //循环体没有改变- b9 k# D! L) {/ Q5 X/ k
        for ( s = 0; s < n - y - 1; s ++ )
5 D  A2 T! k/ j/ q, I6 h8 M* z' ~            cout << '-';& f! ]) K; `9 Q( q7 j
        for ( x = 0; x < 2 * y + 1; x++ )( F# i  K& }0 a# a$ Z2 }/ c: J
            cout << '*';
5 @) J- @2 C$ q1 A& V& Y8 v6 o6 C        for ( s = 0; s < n - y - 1; s ++ )4 {& d9 m* m; E6 L. X7 R% X
            cout << '-';$ Z. L" c7 z3 ^  F+ ~/ b; x+ f: m
        cout << endl;
0 {1 C$ h+ r& {$ n    }* U. @$ G! H( A2 ?9 f% I
}/ ~6 p6 m' a5 z8 V
4 \* [+ J% |+ g9 K! j. m
要打印整个图形:
) M8 t, w/ r) J, U$ F) v9 |* V7 m+ A4 g4 b7 y) D' n5 A4 @! `
void main()
0 D9 W# D# K5 b% [{$ b/ A8 s$ D( b5 w/ N' i
    fun2(5);//绘制上半部分7 \4 _7 u3 T3 `( m' w
    fun3(5);//绘制下半部分4 s8 Z$ b. t* ]9 T, `* s
}& K- z1 p- y& W, ]4 f& z+ _% o
. m. r8 E8 D& G  m2 b
# L0 M3 z# A) I7 q) g$ m
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.( B3 j1 S& U; h$ O' B" {  W. Y
</P><>
</P><>支持</P>
回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2026-4-19 09:14 , Processed in 0.456856 second(s), 63 queries .

回顶部