QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |正序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:) C* g2 V, B. m- y+ d1 C
1:7 u% J- S8 m; R/ l1 w8 H4 A
/ {/ t+ s) l7 T! a2 b9 g
*% q! d# G, r1 k  L2 g; t/ I
**
+ H0 @; P" N; `! T***
6 D: C  ~7 ~, `% y" d+ l1 ~7 W9 ~! W****
2 e2 w& b! y- M*****! Z$ V6 Z% O' g" _2 p# q9 `
******
2 r8 _. Z4 E( b, @3 J  h9 c8 y; D6 B) L: [2 O+ L
程序如下:
) g( o3 w* d- k* U* q4 H0 f( ^
: F- V3 _# S* F  H5 C+ ]void fun1(int n)
7 k5 U& T/ J8 y- D$ `{% r, f+ T0 r  @; p9 {2 q1 ~
    for ( int y=0; y<=n; y++ )
; Y& v- Q0 ]  U8 a; o9 h) O' ]    {$ }% l$ |+ L3 V" K
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
- ]8 P2 }  n. g5 l) i, B% k: J        {
! w0 k* h+ a2 s- G' z4 z            cout << '*';+ W% J8 B. G; l+ \7 h2 C# Q1 P+ _
        }
. |$ _4 A$ C( T, N9 o        cout << endl;//换行
- r# P1 w6 ^5 l( j    }7 _  k. F7 W& t6 h/ O, H
}
" o5 T0 I+ j! ]4 ^
4 ]& k) X& l% _& T4 z# G4 P2:
) k4 ]4 ?' v: }& ?3 {, q# j/ Q----*----
3 ^7 v3 w$ D9 A---***---
7 |9 J& R: J  o+ P3 q) h4 e9 s( B--*****--
8 w, i0 Z6 J* c: A' x-*******-/ A+ V2 W( I' E
*********
3 i; f2 f+ E5 a* o% Q: E5 E& F/ h/ c/ N# r9 r
这组就复杂些了,每一行都分为3部分,应该分别打印。1 w5 i" o7 I1 f, b( O9 \4 `: p
程序如下:
0 ^2 G9 L- X2 ]$ P4 Z, V) }& E7 c+ E. _
void fun2(int n)
; W) W& b" F2 p5 ?& ]{
% r4 B: r/ o! w$ G/ C4 q    int s,x,y;
: h# ^/ x! k* J4 }9 a    for ( y = 0; y<n; y++ )6 m% L) @+ b2 K: D
    {
/ Z7 T( y# T+ q) ~% \. z        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
" n- y& u( E% Z: i            cout << '-';4 i4 `7 \9 F3 c: w
        for ( x = 0; x < 2 * y + 1; x++ )( W: Q2 {) O) A1 E9 W+ j4 J, H; N
            cout << '*';0 S& x6 l6 |* c3 ?" A
        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
/ Z" H; A/ X$ j" c7 X            cout << '-';
! a& @% j7 F* x# S3 a1 W; P        cout << endl;, c8 ]. c3 X( ?, k2 C& X
    }
* }7 Y# U! w1 r# @& K}- T) s# G1 Q' B% T" g# w4 I
( C- U) O* i4 L; N
3:. ~4 G- L3 Y% Y

! L2 x/ e& |7 S8 e; M----*----
4 H: P2 C4 u+ k$ R6 p---***---! Q) G4 J* a4 J6 N2 A1 J( f8 c1 {
--*****--
. x; D' u* f1 `6 R: H( C-*******-4 O. h) n9 h2 L$ @. Y+ C+ o0 W
*********9 W3 }7 f$ Q2 R  |: ~; @
-*******-9 _# ~/ G& y2 w5 o% X1 Q" S" n
--*****--4 e  x1 h. E! P$ Q+ N( e
---***---
/ ]3 o* x3 A- Q9 s1 f9 y----*----2 a  Q* t# e" z3 n! d- `

) [* l6 O0 c; d7 c4 S( D这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
% F2 }( {: c+ E2 u打印下半部的程序:$ Q9 R& @) c0 L2 a  H! n
void fun3( int n )
# o6 H$ u; N; m2 ^, w# o  t8 `5 _{+ E' S# n1 U( y3 O- G
    int s,x,y;2 R+ r, i8 {" ?4 v
    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了" b0 B4 w, M& F( @
    for ( y = n - 2; y >= 0; y-- )  
) _) @1 i* r+ X8 }# b. s- e    {5 f3 Y4 r$ x3 U9 l: R$ e( p3 g
        //循环体没有改变( V+ g  O! P# x
        for ( s = 0; s < n - y - 1; s ++ )8 L2 z/ k, F( ?
            cout << '-';; W- l- N! S; C0 s2 o9 f9 ^, C
        for ( x = 0; x < 2 * y + 1; x++ )/ T6 k8 m0 r1 e/ T$ D  l
            cout << '*';( U2 y. Z: X% b* [9 W* @0 J
        for ( s = 0; s < n - y - 1; s ++ )/ Y8 v: G8 m  X( D) t6 ^( F
            cout << '-';; B6 r( L- ]1 z8 A! Z
        cout << endl;- s2 w0 ~* k8 D! n
    }
8 n  f; ^; E  X# d! j}: |: c% P) I; Z
; k% }. M6 M5 H6 c
要打印整个图形:
. h+ h. R$ q4 R2 ^7 N. h6 |
$ P( ~/ _. o9 Y, j+ H; q7 ?' ]void main()
0 B! D# |: J. {6 z  e) c' Y% F  I{" f: z1 q) ~* r% h$ f3 q; {" H- y' x
    fun2(5);//绘制上半部分% J+ |& F* x; _6 k8 M
    fun3(5);//绘制下半部分
: S* W3 x7 O9 f2 t; X, W/ L6 E}5 x( w/ n( a9 \% D+ M1 N1 ?
+ `( v1 L( B0 B5 S; K: S3 O
% n6 t" B2 E4 X7 g# g
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
& {7 i0 z* c8 e, ~</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 02:50 , Processed in 0.598941 second(s), 64 queries .

回顶部