QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
* a# |- j5 p/ B, |* }0 n5 y1:
* c9 X4 a& e; n9 q( q7 e3 q: V/ d0 f  K
*/ j  r+ ~3 r8 s. i
**: v7 D. s! y: j- n4 b4 b
***1 v8 r# R9 x3 Q' X8 [4 D
****
8 H9 Y! m& o" D. q2 i2 M*****
4 ^( e1 W4 _; j/ r7 K******) H4 c" n9 C- n
( M* y9 }& _$ g' a0 q+ `( c- A
程序如下:% n# C: a' B1 V9 Q7 S3 c$ U& e, H

& ?! t6 p9 H) h" K8 ]1 bvoid fun1(int n)
. T- J$ q. z9 H9 f; ?: P{
4 R: V2 J, s# Z3 O' V/ T  W    for ( int y=0; y<=n; y++ )% v" g3 H6 ~4 q/ P' `
    {
, C! w3 o' f& C" M. [6 x        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关; t) c2 j$ C  y. J% W
        {' \# S; V- B; z- d
            cout << '*';
. L+ g3 \0 Y, P2 y; i& f        }9 b( b$ o1 L* z% ~
        cout << endl;//换行
' c1 K& T3 ~! _, H    }( a( {- H/ d" ~, W( H
}, d, q0 D* i* |5 Z( n7 |8 V

* E, h8 H9 X* d3 b+ ?2:' w' m* Q& ]  i9 Z
----*----
3 B0 Z4 N1 Y' d$ X( `  A---***---# o9 c( d9 O% n' _( q8 @' t% f3 |
--*****--
4 ^( \' l# K$ g2 s0 N( {/ y5 P  T! H-*******-7 S) g( T0 G: m9 l
*********: c9 R3 R+ B7 }# F$ Q* l
$ D7 E/ X& k9 _
这组就复杂些了,每一行都分为3部分,应该分别打印。- G6 s' S3 z$ m) @! g4 ]: A
程序如下:- G/ N7 F4 u9 e/ L

) i6 J& f2 Y  x2 \, Bvoid fun2(int n)" |/ c1 Z3 Z' f. z
{
7 Q- x- }2 F: T- u    int s,x,y;: O$ Z; g: u% @, i1 Y
    for ( y = 0; y<n; y++ )- K0 x2 r( g2 a' D- F: A, c
    {
! K  K: P/ I) _; y1 w        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点& L. r, @' u! s6 k& M: n
            cout << '-';
5 n7 T4 J! ?. }! `5 h        for ( x = 0; x < 2 * y + 1; x++ )
: R/ _" W3 c# g1 W# X3 Z            cout << '*';, j  n- g7 T% @, ^/ |" f
        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行9 ]( r/ j2 r1 J+ K0 f9 B& H9 p: \
            cout << '-';
8 z, g0 \4 ^# l" t. z2 F: B        cout << endl;
- t* \  T0 T( r    }& c) N: |7 O; F
}8 Y1 U& c# \3 m" C( }) O+ k

9 @, \$ |; p5 Q9 a" S  `% W2 ^& q( w3:
- n! f# X, }8 ?: {% o: l+ V8 C
( z+ w8 B0 g+ ^) W7 Q, @+ ?. r----*----' @1 U/ }" N$ o
---***---+ M7 D0 t( t1 j8 z' t
--*****--
/ E6 W& M4 h3 I" o4 G6 j; H-*******-
8 Y' s# w4 d2 X0 ]& K4 `*********
& a; H6 c2 [% T$ a9 F' C-*******-7 L# q* ?" h) @. A- e: T
--*****--
$ ]$ q; s0 A- m8 l. |3 f# Q$ x* t9 Q---***---
- g4 E7 Q+ w* |: m----*----
$ I6 r4 ?5 U5 y! l/ L3 r
; [8 x" ^5 y+ S这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现3 |& F8 {+ Z1 s
打印下半部的程序:) H0 G/ }5 P5 F3 D
void fun3( int n ): z" T% u3 A' c5 D
{
# e$ A! Q/ K. z/ h. j8 K4 g* F8 ~0 J/ H    int s,x,y;3 a/ u, O8 F* u2 O/ g( u- p& W
    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了$ ?, E3 _" A2 H+ G4 D! I
    for ( y = n - 2; y >= 0; y-- )  
5 L: Z/ i8 B3 m    {, T; l  b; [2 K  n) }' t
        //循环体没有改变
4 R3 K1 d; H5 L. r6 E        for ( s = 0; s < n - y - 1; s ++ )' s% S* V9 p- m3 x7 b0 K5 S- D0 T# b: v0 ]
            cout << '-';4 d* Z6 \* y9 u4 |- k
        for ( x = 0; x < 2 * y + 1; x++ )5 \2 w* s$ k* l! }0 j  ?6 ?& ?
            cout << '*';
" T; X4 r' |; V/ w) R        for ( s = 0; s < n - y - 1; s ++ )
! p& {8 W5 h7 _( r+ j" H            cout << '-';
* t0 T# K$ E+ y9 U; U0 o' L        cout << endl;
% T$ i% }' h( M# r' M/ p/ ~) F/ O    }
. t5 E9 \0 j: k; T}( p: X& d9 {' I! O" s

3 n9 b: W" I" Q* Z" R要打印整个图形:( e% T8 U; Z' E6 K4 J( p. J
7 h9 W% c# f. e% f3 N. _+ x; x
void main()
' I! s/ w+ @0 O3 U( q) V6 q{1 j" l* y( U9 G" g+ a. Q
    fun2(5);//绘制上半部分- \. i! |- a7 T5 l
    fun3(5);//绘制下半部分
1 S! ?. b4 f! y2 l+ }) x}# I. `1 R, z6 r) V1 F# _; e

; e/ I" }2 N% |. _: |/ `" Y5 q; X0 n" `% `" r! h" R, Y
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.' n+ T7 U7 e. Y- x) S/ V2 n1 ~8 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-18 14:32 , Processed in 0.300885 second(s), 63 queries .

回顶部