QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
$ c  m& C" X  }( e4 c3 q1:5 ^9 F; `9 v* Y
7 O, i0 [5 N5 l$ R5 }- i
*
$ T' S6 \! R; X! l+ D; L( T0 x**
5 r+ E9 N4 q* M1 I***- N% l( A9 R1 e' V* v0 b$ ~0 l" Z8 n
****
/ Z: y  I" x2 N- S8 Y; p: s  [  M# [*****% Y: R3 J, c: e% k( o
******
) z, h1 V- f" F  V/ l9 |8 p/ S
# C; j# ~: q0 M& i8 o# O3 u! L程序如下:% Y7 t9 x* z6 l7 {

% U8 Y( y+ R' v% N. mvoid fun1(int n)
/ F8 V: F  |$ o! ~) _& f{4 Z: d) T! G) F! A& {7 |
    for ( int y=0; y<=n; y++ )) O' ^) {8 B4 R: Q1 T- Y
    {6 z# `) A# g( K$ T3 A5 G( J
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关7 r* ^  |7 p+ ~2 S- M
        {
( x: B8 y$ S5 z* P6 R6 D# W) u            cout << '*';8 n8 W" Q5 X9 {: H: R/ F( j' s
        }7 v( _- \5 P  Z8 z
        cout << endl;//换行
& g; U  Y& D0 c2 T2 E( c& m; s- N+ v    }
0 h8 E8 t' c: L}
7 a. D- Q3 Z. `7 ?+ X$ p# x( D: V' q; D& R+ B
2:
% s0 H0 ?- {4 z3 L+ p" C----*----) J: _, o$ i5 I7 i
---***---9 f2 Q2 n  n1 C' T2 V6 m' l
--*****--
1 V2 x6 n( a' g) M$ s-*******-
6 j9 M' y# ]1 e. {*********- ^2 a# o, U0 L( B& \3 r8 [& g

3 U& q- V4 B! _! L- P! H; Q这组就复杂些了,每一行都分为3部分,应该分别打印。
6 Z. g% U; [! c& a. M; z程序如下:
9 O, a$ C# C' I0 o4 z7 X& \/ z7 z6 w6 z
void fun2(int n)
( K- f0 g  J- l. e& k3 P{
0 |' Z: q! Z/ E& ~: m7 y    int s,x,y;" o( C* I$ e9 r' Z! }* A3 W
    for ( y = 0; y<n; y++ )2 n, L% S6 Q  Q6 N! ~/ \
    {9 I9 y- H1 `, K9 n
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点9 g; M$ C- a" [5 S4 V5 d
            cout << '-';
6 X  P! C% i$ y6 O# R. v3 s        for ( x = 0; x < 2 * y + 1; x++ )& i5 W7 o+ J) l- P& e
            cout << '*';
1 b% K2 |6 X& T2 z, u4 f        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
. `; r2 u& D, F6 t$ w/ q$ Q            cout << '-';
; F" l8 Q* b# _9 J        cout << endl;
- [5 b+ K6 h$ e) @    }
4 f$ x$ y2 B+ B5 x}
2 [' P7 d( ^0 B; G+ z9 y* w# i# d
* O. j. x  j2 n% B3:8 Y! Y" O3 w7 e+ |4 @4 Q

) Q  ~0 B7 t2 Y8 S/ i3 n- g  }----*----
. B) f8 ?/ `: [0 A---***---5 [" }0 ]$ R' |0 S2 G% x5 l
--*****--
% v( ^- L* V, b-*******-
  z' N% B+ t$ L8 X7 e- c" N*********6 Q0 _, }- d( {5 h7 N- w. i
-*******-6 Y, N- D; W  z% s# x5 i
--*****--
# l  D% ?3 s% p: W: N7 u3 W---***---+ Z4 c( h( |7 G, s6 x9 y0 j
----*----
  F5 ~) ~. V. |& u3 S& [' \( V. B) C' z7 e
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现7 X8 W/ W0 {3 c3 \
打印下半部的程序:& k9 r$ m: D/ Q
void fun3( int n )2 V1 N9 f+ q. f+ b0 N; ^4 `
{
# ~' W% F9 j. Y/ F; m, V5 u    int s,x,y;
/ Y0 m8 J7 c! ~3 o/ _    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
; g9 K3 {. }; @+ i: v    for ( y = n - 2; y >= 0; y-- )    b  x7 o# Y* w) w
    {1 C5 Q2 V# Q, M$ w) W8 A
        //循环体没有改变
  x  X4 r# M5 t  a- }. ~        for ( s = 0; s < n - y - 1; s ++ )6 r* P# O# p  M' h; g( p
            cout << '-';- E% Q6 J& y* l! ]) ?3 R! Q
        for ( x = 0; x < 2 * y + 1; x++ )% n2 J7 E6 o) p% V+ G
            cout << '*';9 p; r+ q, y' p8 L' m4 O( x
        for ( s = 0; s < n - y - 1; s ++ )
7 S( z+ E" }  X4 n$ ?* z            cout << '-';  }% u/ D0 n' l, g/ c$ y
        cout << endl;5 G: T/ X' h. K& w8 [! l$ x" B  o2 a
    }
3 E2 X1 e, }9 ?; l! m( Y& ]- b}
8 w; Z) l. s8 s' Y: }- z9 J8 y7 h3 \* Y9 ]. B. c
要打印整个图形:
% h- @9 g& M3 o/ U6 U$ `3 c: R, j+ ]$ f' r% m" u7 c
void main()) P7 e/ G7 d* c8 F
{7 v' |7 E2 J1 c8 M0 v! N$ g
    fun2(5);//绘制上半部分5 B0 ]. s3 C" L& z( q8 W. A
    fun3(5);//绘制下半部分7 S* z# A0 w6 w8 B' `; u4 O
}
/ c6 q6 T, R, k4 S5 {- C9 n* B, [3 }
! R- ~9 K* e' q) b3 D4 B, h0 x$ {4 D7 u/ {
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
5 D7 j  u: F, l0 p7 a- p</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-1 19:41 , Processed in 0.459532 second(s), 62 queries .

回顶部