QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
/ C0 I% }: ], N! ]3 K) F- O$ _) S1:; g* _" \$ X; @" j3 N

/ _& g1 ~5 c1 r+ m/ f*
. ]' D, e( k( Y# N7 H' l) A**
: v+ X2 v+ r+ N( h***
2 v4 C* N$ W% o****. _/ W9 R# \( N. n' `$ V
*****
( E8 I2 Y+ b0 W  K. Z******) Q) J/ B+ z3 I, n5 h) J; v

; _1 _+ }/ j% d3 e5 n程序如下:
, d  W6 W$ g- |( R# y0 ^2 J! L  w/ o& n4 {) t2 Q; g3 B
void fun1(int n)! ~/ G& {9 k$ a' O4 q3 @" U
{
$ S# l( ?1 q; `& ~& M    for ( int y=0; y<=n; y++ )
. m5 e& A3 k9 y3 ?: l    {
$ S$ N% D7 e  Z  ~7 v, w        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
; g% s- `% _5 Y0 p! }) Q. E; x        {4 ?6 C! j# G, D4 [! i
            cout << '*';
) z0 c& k, y; b# R        }
2 e8 r% L, |8 j6 D1 d- x2 q        cout << endl;//换行- X5 z! O8 I2 \7 N! W, U5 ?
    }! T( d+ ^+ F: H8 Z
}5 B6 I5 L9 @8 Z
7 X. g- g# l2 o, g7 Z
2:: j2 A% M% U; I  f$ f* ?
----*----. ^4 h  t- k$ @
---***---
  w9 w8 f+ a) E$ ?) f) ]7 o--*****--
  _  J* p7 R' Y* i8 J* I-*******-
6 z6 z' g& y+ ^" g  C*********
: u- z2 i$ n" ^2 P/ A+ `5 ]
/ f8 \( x7 b9 E& \: F$ V4 o# Q这组就复杂些了,每一行都分为3部分,应该分别打印。
" G8 G, {+ z. x程序如下:: J2 W" X4 @( Q2 Q
$ [1 d; w3 @. H
void fun2(int n)5 q; j3 k& `. D, U: r
{
, r0 x! P2 W; n8 O* |* k* _    int s,x,y;
( e9 r/ `$ O5 {1 r6 g    for ( y = 0; y<n; y++ )
8 r& @7 B' F7 @  B& n    {$ M1 o2 `- g9 A* s. z
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
% R) r  w$ ]$ z; {, y' p1 J            cout << '-';
2 `0 K) U8 _1 [0 t; L4 b6 Q        for ( x = 0; x < 2 * y + 1; x++ )
1 ~& N# U. ~% g8 o* A, s            cout << '*';
- X4 a' W" {- n2 B$ N! T        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
, }+ T; a$ B9 ]  c- `4 J- T7 F- d            cout << '-';
; E, Y8 M- M6 q/ W  K; O' S        cout << endl;0 a% r0 w/ H* f% ?  O8 t5 S
    }
' o! S# a9 n2 J% F+ g1 `}
, S! z. u( D( A) K6 F1 `0 {1 ?$ h& H# Q" B$ W: r
3:
" u  }- {3 O6 u1 V& t0 r
* q2 [( ]! ]. n7 K----*----
$ A% l/ N3 a* A$ N" d6 |- ^; E" s* Q---***---
; m- E- O3 F8 h4 ]0 v--*****--
% [/ P  x$ }  i-*******-
9 d1 f8 e2 ?- k" \6 U3 Y4 l5 M*********  b* }! A( z! c' r# Q# e" c( [+ `5 v
-*******-" `; _$ U1 I% S/ R5 D0 P
--*****--/ _, g1 j' J# R4 |
---***---
! r- `2 w' q. F+ D----*----
7 X! \' ?1 r! D5 K" V0 D6 ~% P. k! l; v; i7 a+ w
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
/ t3 \1 K6 ~# I' x) C$ s) r- G打印下半部的程序:9 |7 F% R" }8 o$ q8 ~( |1 N/ q
void fun3( int n )6 g9 C3 W3 u/ q/ j* u
{' [( g( \- z' w- E, S' T$ e
    int s,x,y;, w7 z, ^3 Z3 T3 Z% {
    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
! U( o: E6 y& a* ^) L    for ( y = n - 2; y >= 0; y-- )  7 c8 r1 @2 w, V3 [3 `' p
    {
, q# \9 H* U+ c/ @7 p        //循环体没有改变
/ M7 e9 `0 a* S. g6 v* v4 S1 v* {        for ( s = 0; s < n - y - 1; s ++ )' F  b" ^5 R7 U0 E, }  E" E+ s7 ~
            cout << '-';8 h; Y2 H* y8 n: C
        for ( x = 0; x < 2 * y + 1; x++ )1 M: r% ^: a  f! C& `- X
            cout << '*';
6 i1 R! t. a7 |" v/ H        for ( s = 0; s < n - y - 1; s ++ ). W6 X' D  [, N* k
            cout << '-';5 j- h& F5 z( z9 P
        cout << endl;
, e& R& ]6 n! ^6 r. Y    }
0 A" x* A8 |2 c9 i4 @}
, t  p7 l. j0 E2 H( T% ^, Q' V/ X& H3 ?: ~+ J
要打印整个图形:
. v4 v" h/ O8 z/ W
+ r' P6 i6 Y+ [3 M9 a, ?, }void main()
' ~3 U4 H) i$ i; q* u& _8 o{5 m/ l' |) n  L0 T9 q$ P& T
    fun2(5);//绘制上半部分7 |8 H) D& W/ l) z7 V) ?) Y5 S
    fun3(5);//绘制下半部分. |( Q5 K# W' n& R; {- x
}
6 X1 ^9 C' s' G- E! Z- T: [1 t6 M0 w6 i5 E! P$ b1 }

+ e7 C2 p' ^5 d3 }这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
& y7 q8 o5 u- O& P3 X0 `! N! a</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 21:45 , Processed in 1.051157 second(s), 62 queries .

回顶部