QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
* A$ s% q! \6 V& q1 K1:
( y8 k2 |9 ]" q- ^5 Z, J% F* A3 u7 R0 F* ^, d- B& `
*
% n' x# `' ]; e' T**
$ C! b2 {5 Q2 \9 P4 V1 h***  ~& d6 m' b9 l- I- n
****, h8 i+ _, X8 j/ \: m
*****3 Y) e) }$ J& q; R, X
******
! B( |, g0 S( J! L& N8 T& a3 A8 E
程序如下:
3 }! x! l( t7 d9 _' r5 S9 V- {
7 j" [% s( q/ L2 L7 G2 ]" V+ C/ A0 I% Zvoid fun1(int n)
# T, a  i& V1 }: q2 D{
( V3 B( i7 |7 v. ^" u    for ( int y=0; y<=n; y++ )
4 l# h! O" ?; S" X( M) j, r    {
  Y- j/ o% l# `& q: H: F        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关2 P6 Q" e$ u& h; Z! \/ _
        {
7 w8 ~$ d$ Q# z( d( @  E            cout << '*';
& \' C3 s' H) Q5 y+ X: s- i8 B        }' z5 I, K# P2 T7 x) g
        cout << endl;//换行9 X/ c( r3 t- h! D6 ~6 s
    }
- s( ?: m0 T  b; I}
, U: |2 c4 Z" C6 |/ a
6 X# {' H% T% ]+ P% V2:
0 e, K# s3 E1 l: P6 z; Z9 u( F0 r----*----" I" G: l5 R4 v" C( D
---***---/ z2 M8 ~' g& U/ {5 v" p
--*****--* d! O9 \; X8 i% p5 b$ K/ P
-*******-
2 q* Y; g/ q( ]) S( f6 c*********
; D  F4 @" {5 N" Y6 b; O4 ^2 r7 U! ^; V: D" J
这组就复杂些了,每一行都分为3部分,应该分别打印。
  W+ m2 I, |) [3 f  K程序如下:
4 i4 {4 x" d: h6 S  ?
* j6 s* Y7 {2 n8 C+ k9 x% X- hvoid fun2(int n)% Z5 d3 x* T" v- S7 Y( [4 W
{8 D' y, d" ]* t# A8 z/ V& P
    int s,x,y;
, {! G/ W) p, \6 f$ D7 C  Q    for ( y = 0; y<n; y++ )3 _5 g1 l1 ?5 q* p
    {) ]5 k* Z, }/ e" i
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
9 N& m4 v6 L+ t: v5 J- ?            cout << '-';
$ b: J4 ^$ i5 ^5 z        for ( x = 0; x < 2 * y + 1; x++ )
* n% u" N+ D6 [* w1 R            cout << '*';5 z! ^1 z* e( ?3 ^# e5 G8 ~
        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行& X  m8 Q( i+ O$ p% T) h
            cout << '-';
* n( t' z) X( o( [+ @        cout << endl;: J8 r& }) ^4 ~/ u0 `
    }
* I" k, t2 N* I- Z; k  z" {6 i! h}5 d; C; _' j: H5 {0 ^  m3 d

) z% }9 [! l: V4 ~: p+ D) t7 \; o3:/ N$ s& `$ m5 ^  r- j( x
& F# n- k1 b+ ^) S" q, J* q
----*----
4 x) Q- Z9 S2 v8 }! _---***---, }/ R& H/ r, _# Y* {; z
--*****--
# i) `) u7 g( }! A% f-*******-
5 @) Q7 H: p# x8 z, o0 C*********0 a2 p* f# D$ G
-*******-  c) i$ e' {5 k# A# f4 U6 N# q
--*****--
* V. L/ b9 y8 _% ?8 f---***---
9 I# Y/ E6 B  y9 O/ c# ~----*----! s/ A! t7 k; D( x/ l+ @* n
. j- ~, r& l" `. Q# G
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
6 U# r# y, [/ J9 e, [/ f$ u. t打印下半部的程序:. A* y5 P5 y$ `! |4 U) t
void fun3( int n )
1 b7 i( m' D# V! l( ^{
9 T4 D6 ~: l# b- d, R5 P: X    int s,x,y;
! Q1 L3 E+ n' ?- H! N    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
. Q( b4 ~( Z9 ?# Y% P/ a" X, }    for ( y = n - 2; y >= 0; y-- )  
9 v3 y! C, P* X0 w3 D    {
; j- z- P4 }* a2 }        //循环体没有改变4 a% n$ c, U- S
        for ( s = 0; s < n - y - 1; s ++ )$ q+ q' I8 U& \8 A% m, g
            cout << '-';6 b$ r! w. V/ a8 C7 X
        for ( x = 0; x < 2 * y + 1; x++ )2 ?* f2 L/ |! d  Y& A/ d' Q
            cout << '*';5 \+ F4 K5 W2 C$ v2 s% ^" C! [
        for ( s = 0; s < n - y - 1; s ++ )# o5 @+ k+ Z8 ^9 d
            cout << '-';, N; U  K" z* B% f
        cout << endl;* H/ s' l! b! t% e  Z  R5 W
    }
$ j/ C3 W" D, M  R" Z! U# t}
+ Z) d! ~$ l  F! A+ d: S: p' `4 `( H6 d2 ?3 j: q2 r( o
要打印整个图形:
% J$ Z+ }2 `; o* P; S/ _- i; f6 z/ [
void main()* `, x- u5 e" B& K
{1 P, G2 c/ F' M9 A( _7 L+ v* @8 D
    fun2(5);//绘制上半部分5 o# [6 Y5 B7 @0 \
    fun3(5);//绘制下半部分8 o$ v1 i- G( G3 W* m5 Y
}
& x5 `1 A2 O, s( v7 k
. P+ L4 n' `/ t2 \: V' y! a, i% N  M" \+ r9 p! Z" M" ?8 B1 T
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
, [& d: x; n$ @</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:31 , Processed in 0.457506 second(s), 63 queries .

回顶部