QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:, j, f' l2 T- f" m0 r: h
1:
7 n$ D7 T& ]) D. j" C6 S  h* B* [) @. o1 x, h7 u
*
2 L3 i. a, C- S- ~3 ^, V6 [! \**" o4 @' _7 m; c  l! U' x- z
***
3 q  f6 z1 w. l+ R' g# n* }+ S****7 l- a' Z; v( j  L6 T7 M) _; I0 }
*****- R8 W- N9 \) ?
******; b2 P* m, q. u  m0 d) w: e5 v8 V

9 N  ^/ ?0 x" a程序如下:
9 M: {" C" d( b5 i* q: c5 y" A, ^: I4 P, r1 U
void fun1(int n), M6 ^. v" ~( f
{9 H2 w+ m3 A2 V! s: G
    for ( int y=0; y<=n; y++ )
* X# m# M) D- V5 ?" G. B0 E    {! R7 q$ p# V$ l6 ~0 @( m: J
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
  {9 t( D3 K1 B6 m7 I2 v        {) z6 |$ t) o0 q$ x; M, Z1 Q
            cout << '*';$ Y5 T- ^# l" a% j9 ]1 }5 G" ]
        }! y5 e) N3 |6 @6 M! o
        cout << endl;//换行; o7 K  c! p4 d$ B8 A8 G
    }; x& x8 E  z1 r  g8 [" C' n  c
}9 }7 z' Z) `9 D" S* K+ M5 \
, O* A+ `# R2 R
2:' p5 y1 Y) F0 i! [
----*----
0 P( _6 k" ~2 s3 e---***---
9 z1 B& `* P9 Y/ @8 z4 i* f& C--*****--
1 ?  K0 Z2 r% E6 s, s# }-*******-: a# a; w5 ^6 ]4 ?! W
*********& l( P" B2 Y7 i) `
" f) L. Y2 |# A
这组就复杂些了,每一行都分为3部分,应该分别打印。
. O5 S4 q2 Y4 o7 R% a程序如下:5 b5 I; b; Y: F+ W1 V3 i

0 `0 F2 ?! b1 |+ n  ~8 N( Svoid fun2(int n)7 [: i, {* T9 {& G' B
{5 k9 c% V; [# }' R1 L1 W  F1 f
    int s,x,y;
& y1 m7 ?/ R. _! H; N7 [6 F    for ( y = 0; y<n; y++ )
+ U' L9 [7 P7 k    {
/ v5 I, Q) ?2 S5 ^  ~; u        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点: R0 k* |9 ~; A" i# m. S
            cout << '-';# y+ ]2 p7 @! x) J
        for ( x = 0; x < 2 * y + 1; x++ )
% {5 K8 \8 _# s6 p+ Q' g' h& g            cout << '*';
1 m1 ~1 g4 b6 u        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行( A, |! T2 v' x: p. r0 q
            cout << '-';- {9 P( T' V5 H' Y( R( h
        cout << endl;+ x" {' O3 ]8 Q- y
    }* Q1 u' @# v5 [
}
/ B# ~8 C3 r- c) H. H8 T1 V
3 p( F9 O, F# F; \  N3:2 ?) b, C* t' ^% Q( O) I
0 @0 n! H6 j: }" c* r
----*----
* H  p( g& K& z6 ]- r$ i7 c---***---
1 }# ?' M6 A8 Q  n! W; G8 M9 M2 a--*****--
, B) I& }( T4 s, ^  V! H-*******-: m5 b" B; |* P. W, r# W
*********0 f7 c8 X* t  n5 E& ~/ Q) Z
-*******-
. T& y& {6 k" a' r8 Z8 r9 d. A--*****--) v3 t* s; ?% P; c3 ]2 Q& x. L
---***---$ a( @) P# w% |4 ?6 C7 _7 C
----*----& B7 t. G5 g; b) }

7 O- X- ]$ S6 I$ x9 i" I4 t# G这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
+ k( M5 D: [0 U/ u. y- f5 L; ?打印下半部的程序:0 z" p# C9 h7 w+ K- P/ H! C
void fun3( int n )
5 w9 ~, D4 `6 U+ y{
$ h2 N# T4 x7 L& C    int s,x,y;
4 y- G4 @; O  k& t    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了2 f  D4 K( d! Q5 m
    for ( y = n - 2; y >= 0; y-- )  
( K+ X! ~6 ^0 D9 D& T# x6 l    {
- h/ \6 M1 h2 x! X. k        //循环体没有改变! h5 u( Y) I2 ~2 o" m2 [: M
        for ( s = 0; s < n - y - 1; s ++ )0 ?+ h  |; q5 j' y
            cout << '-';
$ e( I6 U$ O6 P+ H1 J4 E& m        for ( x = 0; x < 2 * y + 1; x++ )" x+ d0 M) q0 W) o
            cout << '*';' n/ r/ A8 j$ I7 N
        for ( s = 0; s < n - y - 1; s ++ )
  \  O, D' ^! G( G/ Y            cout << '-';
) U3 w) H' z4 c2 I' D9 g8 A3 H. U        cout << endl;
  g: x# a* f. R0 E$ _* n8 n" f    }
+ g2 `5 W2 e7 |2 i6 b}; y) q2 w2 \0 g" s
3 h5 P7 a8 L5 S+ h: p
要打印整个图形:
; u$ v: G) ]" o: F& o( _, W0 M
% Q' t/ v3 \& f+ I0 D1 b! v& I+ avoid main()
4 M* d) }3 A& {; ?& d7 f+ o$ A{
2 `+ h( X' `3 {5 \- r$ ^' a    fun2(5);//绘制上半部分
- U5 O# S$ k8 r& P" M6 T4 R    fun3(5);//绘制下半部分$ e6 V( i" k! w% R
}
' F" T# V; b" Q: Y: p' D
# z5 X$ K8 B* p& v8 L; [9 f
: |% G% R' }/ [7 P& \这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
4 r: }8 p" S" Y. A% M</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 07:42 , Processed in 0.447638 second(s), 63 queries .

回顶部