QQ登录

只需要一步,快速开始

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

算法入门系列之一

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

7

主题

1

听众

43

积分

升级  40%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-6 13:18 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
问题:编程打印下面三组图形:
3 c- E3 o9 s- r' _, F1 u1:
7 ~" N" R% z* s) U! y7 J$ M4 A- f% X1 p' r6 z1 {/ e7 X  @4 ?
*# N3 t6 h. c; g8 ?# ]- {7 H
**
  ?0 ]% r" E& r7 N- ]% x  \***
/ x1 V$ }6 k, q$ ?4 c****+ V9 \' C) Z' h, J' `+ d6 Q$ f$ w
*****& o# R. [! r) Y6 u, R
******+ W" y7 ?( A/ P2 Z9 w' P
% r. r( q' V# c2 N5 c9 Q  |8 l
程序如下:5 R+ x) x( L* W' S. H8 Y- F: S8 N

3 Q, R3 G/ j  b- Vvoid fun1(int n)
1 h/ _8 x0 k3 z; a7 |" u. I{+ N1 f. ]3 |3 J. H$ A, F
    for ( int y=0; y<=n; y++ )+ I4 d0 S9 V/ b) v# G. t# W# d
    {9 j; E: ]; x% ^
        for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关3 z6 u* Z; J" T! Z& {. N. ~  {
        {
- |. Q/ W+ M1 N4 F* O0 h            cout << '*';5 s  x( b3 u4 z% K( W
        }
6 ^! g* t1 m- C9 y        cout << endl;//换行: U3 Y2 _' ^9 ]- U$ r2 F, j+ H; r& y; N
    }
4 x* W1 H+ v& ~. S% e$ B}, Y0 f  R7 \0 m" M$ b
+ E& _) z. E% t- T$ J
2:" z0 I+ o0 J( N, j- V% w3 i
----*----
; Y: C( `  R+ ]( I! U) ~5 r---***---8 c' Y, G; E5 \: Q6 y5 h
--*****--6 Y4 d( u  j9 `
-*******-
  R, u! e7 w1 X5 _" o3 u- a; o*********8 H  ^( b1 ~1 L) T: I4 Y' v' h$ E
. V! `$ f- c9 s7 G" s% L# `
这组就复杂些了,每一行都分为3部分,应该分别打印。) y( f: h/ Y* A) D
程序如下:) j7 K6 X/ b7 F/ S7 Z

8 U& ^. q  h. K5 N! G& p. O1 Xvoid fun2(int n)! v1 S: ?$ b7 w2 B8 k( d$ A
{
2 i" U8 Q( g& O9 ?    int s,x,y;
) k2 T7 u$ Y) S, D, |! r    for ( y = 0; y<n; y++ )
8 g7 d+ Z6 D# o1 F( l    {: T5 h) z# Z9 O5 a7 T$ ^, Y( Y
        for ( s = 0; s < n - y - 1; s ++ )  // 确定开始的'-'有n - y -1个是重点
$ o' M' `0 {. y8 }            cout << '-';
  p( |, e- E0 B! S" |5 |% L. j        for ( x = 0; x < 2 * y + 1; x++ )2 w6 \4 n  f& p; w
            cout << '*';: m3 H( y/ e& A# ~! T
        for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
6 d& ~1 d/ K; r6 v7 C            cout << '-';
$ L% R: A* l7 A, Y5 C: c        cout << endl;# ~+ e3 ^2 o6 a
    }
: o5 ]5 a; Q8 s% k}
& v! ]$ M* M  r$ B/ X) }* l" \+ H
$ s0 y6 ]! v7 r3:
3 B) A- f  [7 F. N$ A! Y2 ~* B" h3 ]9 {: s" p: e/ T( \
----*----- e% R9 c9 t% N' C( g5 U
---***---
% H5 R5 g* k) T! p3 T--*****--
! D# A5 |& j! {' n0 K-*******-
0 b8 B  e$ @& q! a*********2 k- ]$ G* ]/ h* }" R0 W: v5 ^( k
-*******-
$ U) A& l/ U4 t" J. ?--*****--0 f7 q6 f" |9 C
---***---
5 k  t7 {) n  j! D) @5 ], o' |$ [8 N----*----, H. j& j  k! n9 U5 c6 H6 q1 E
" h# ?  O# O. n3 T" }, y/ }
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
  a& K% I% @5 e打印下半部的程序:+ ]5 s% G  b$ t  Q. i8 Y, @
void fun3( int n )& o, _/ ~( X; k  R5 k7 ^0 @
{
. B1 F5 `- I- `& M; [    int s,x,y;
. i2 }4 W- i, U3 Y' [    //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
, k, G/ `' a- H; }    for ( y = n - 2; y >= 0; y-- )  ) X" v3 A1 R) K" W
    {& v2 l: r8 o5 A$ U$ H; N8 V
        //循环体没有改变
# K6 ^  t2 M3 k        for ( s = 0; s < n - y - 1; s ++ )) [& x* F  i( [$ s4 F7 ^
            cout << '-';
' D7 d9 |1 k: E1 G        for ( x = 0; x < 2 * y + 1; x++ )" o$ o7 a4 W5 b0 a  m$ r
            cout << '*';
& v. l2 ]& e" E! R7 F. g6 _( E        for ( s = 0; s < n - y - 1; s ++ )
, v: R- E( j7 y6 G# F, N: S, v2 a9 w9 P            cout << '-';& ^1 C7 ]! q; S; F
        cout << endl;
: X- W; q( s7 V: ?. Y. Q0 ?    }# G0 w% _$ k  a
}7 w5 s+ s' ]6 d: {& ^: d

9 O. t6 ]2 X, h. Q( ]要打印整个图形:3 U* n, ?7 [" \
3 ?  j4 A" ~# u
void main()
% J3 |! N# w  U5 H  h{
8 v+ F6 ^4 N! t$ i7 Z5 e: P7 T    fun2(5);//绘制上半部分2 \' b/ j1 r7 b5 ^& u( U8 e  R( x( H
    fun3(5);//绘制下半部分1 f3 @# B; @+ V9 D
}7 }5 N9 T. u+ b
! x2 e4 N) Q4 R+ n, a' @# S# l
4 U8 V+ N2 }5 ~4 W
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
Mouqx        

1

主题

0

听众

21

积分

升级  16.84%

该用户从未签到

新人进步奖

<> 这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流.. ?* e! w8 _4 Q6 G  R0 I9 T
</P><>
</P><>支持</P>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-20 10:54 , Processed in 0.627295 second(s), 63 queries .

回顶部