QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
" _& f+ O- I$ {: c3 Z9 L/ J1:* P! s8 d9 `6 D2 _& b8 t6 L
3 U* j  ^8 S0 ]2 ~. M$ }
*' E3 ]4 C5 |/ d9 ]/ P' R3 z/ `
**, c% ?' W/ Y. k6 v0 P, {
***
% R, C4 J/ I; j3 I* L3 x$ G8 D****
0 _9 \- S  f2 m) Z) ~: M8 h*****5 h- l) N6 C  S+ `2 G* O- `( C
******
$ W/ ^4 F# B9 G- ?$ l
2 g, Q. G4 |+ [" D) q# G程序如下:
* M$ V, ~( a; M9 `1 j3 h1 a; m; d
7 J0 h* X3 _0 i- `1 ?! }9 Zvoid fun1(int n)
4 u* _+ j7 @( H{4 P7 u, r$ E4 J# A, J
    for ( int y=0; y<=n; y++ )  Z* ?$ J- l. K1 ^* T6 s6 M/ t
    {  z0 f. m; C' J0 M+ F
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关  |  q2 Y( d7 J3 {% ?6 O7 ~
        {
7 t& d- ?* F! S* A7 K- j; ^% N. E            cout << '*';. a8 s' C- m# u3 W" Q1 a4 i
        }1 ^" l) f: h- ~, J( G& |6 j) A2 D
        cout << endl;//换行
9 j" @# a; d0 T" M2 b+ ^    }! h4 F8 @( J  ]; |" R# ]
}
; K5 I; v# y. a$ O- }( m! L  l: T. @
2:( V" B; w0 c' `) Z+ W: F* n3 B
----*----9 Y& N- U6 N" M+ v* Z
---***---
- @, T; l2 Z) M2 }4 A* v--*****--3 N- H7 U1 E  e- |
-*******-
, R5 Z5 i  U0 B- |( M, f1 Q*********
. t* F7 w" f0 s- G! X6 j- g% S6 X+ r
这组就复杂些了,每一行都分为3部分,应该分别打印。
  T' p2 w, H/ G( r/ l程序如下:
8 Z. L2 T( d2 ^$ F& R, ]' {; L( N
+ `  t) m+ w# u' V/ n6 \void fun2(int n)
& b  u2 T0 o& r5 a. ^+ ^$ [{9 E9 r7 h+ z' M% b' E
    int s,x,y;
2 J4 q) a2 s; H) w    for ( y = 0; y<n; y++ )
, h' i5 j/ j, {8 i4 g    {; l: D" B9 L3 G. p2 u2 D8 ~
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
3 ]( m4 p. l# l4 b- y            cout << '-';& t# e0 W7 V* P! E( u7 U& R! h
        for ( x = 0; x < 2 * y + 1; x++ )( U, `$ ~5 ~2 i: M5 \$ A% m& m
            cout << '*';
! `) g% \$ k. @/ O, _1 P        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行0 j% e9 m5 o. J8 ]: L; {
            cout << '-';
( ?# }1 N2 j: s7 T. D  t        cout << endl;: j; m: Y' P% ~' L* u
    }' `" I; r1 H( H- L
}3 k& X- O2 m+ F3 U

9 p! M- a. l* E9 I5 H/ W+ U3:3 r5 ?$ T1 `  l1 m0 i4 F
& ]9 ~, O6 v6 s* @
----*----: g; y) k* R' S
---***---& R+ @8 D: T6 w5 H6 n: l$ E3 x
--*****--
3 \( |+ ?) R6 Z- B& X7 ?-*******-
9 k  K+ y! y5 H& q% Z  u, m( K6 y*********
: W9 F5 |6 G% C9 |-*******-2 k. Y0 e4 h7 ?/ z& o
--*****--
# [: |+ d4 v) i+ o---***---- W, `/ e0 c# ^9 d1 q% |" J: w7 w
----*----
5 o; G+ m  ^- @/ d# K4 `
& Z4 |. z# s2 r这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
. }5 @+ o* A3 N/ U7 j# d打印下半部的程序:
" n1 E- A: z+ x3 I4 k: b% P, dvoid fun3( int n ), o+ }1 o( Q8 j* ?4 g' R' h/ r5 E
{
! n* L+ c7 G1 |    int s,x,y;* F; }1 ]9 B# u3 }
    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
& N4 Z. f5 [" a- j( E$ q0 O    for ( y = n - 2; y >= 0; y-- )  & L( J- u/ Y7 e' m* y8 s1 D
    {5 h# W( s5 Z6 G" ~& J5 i
        //循环体没有改变
$ s0 I# h  }' a# ]1 T/ N        for ( s = 0; s < n - y - 1; s ++ )3 o, r: X, J0 I) b& X7 W
            cout << '-';
9 C! W6 g/ c/ j% N3 P! P3 v        for ( x = 0; x < 2 * y + 1; x++ )
' J  `9 B1 G$ [& x2 i; d            cout << '*';# ?1 x4 Q+ u' _/ J
        for ( s = 0; s < n - y - 1; s ++ )
, W  {" G3 n3 j: @5 }/ a; U            cout << '-';, K( r/ Z  b7 n: D; F- g1 K& F, o/ q
        cout << endl;. p, g- g. A6 e" x, M$ W9 ]( e  k5 e
    }8 D& C1 `7 ?. {+ C! K0 y- W; Q+ I  N
}
' N6 Z3 w2 D, W$ h0 D6 {
! L5 S* E/ U# [" `+ C. V要打印整个图形:' f: r% Q9 @5 {0 g
4 B# q- ^3 {; e9 ^& \" r$ F
void main()
8 a" V! [8 F1 s8 o& U{
9 E( T% u- t6 \    fun2(5);//绘制上半部分3 v% {4 Y0 G3 q9 e
    fun3(5);//绘制下半部分1 ^4 W* i+ T& `6 j( b: t$ j
}% j& a( t$ @1 q% l6 z( C
3 q5 \* f+ ^: o. E# n& Z1 }) B: g
* y* d$ @9 @* |  ^% y2 Q
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.' x9 n5 K" y+ y3 n5 q! b
</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-13 10:55 , Processed in 1.701500 second(s), 63 queries .

回顶部