- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:/ k/ a1 `7 e) ?2 h
1:, _. |) @2 a4 g2 ^* e, p8 }
+ I% c1 I2 W& C*. ?6 E m" q5 ?
**" ` }1 J3 ^. |% Q7 \" F3 v, j9 S
***
/ \ V1 q9 a" S****' j! O0 }$ W& z! E% G/ B
****** z5 X+ Q3 I, P; Y, W7 x4 \$ O' j6 S
******
$ @1 a: I( c7 J0 _& s! F
3 Q/ D/ j9 m* v3 ^% r- |% Z程序如下:5 w2 j0 ^9 D) {. U
: K. [1 W8 u8 d S+ U% nvoid fun1(int n)+ L8 A9 L' t$ V3 N$ |0 C% U" T6 D6 H
{
2 ?3 R) A* E+ m0 u; ]. j for ( int y=0; y<=n; y++ )
+ w! x' f$ C& i2 c2 y" \; M {
y8 i. ~, a* ?9 f2 w) K, x for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关- |- I, }/ V* T x1 @$ \
{4 v. I8 w# [+ q) ~. U- a. i: f
cout << '*';8 W/ i$ b, [% Q# W! L
}
0 w' t( H$ Y9 [+ f- d. U2 h) S9 i cout << endl;//换行- N( P. k+ J' Y- u: f: Y2 p
}
( K" l6 \, t" Z: b6 M}
$ ]7 J/ u! {( l/ r7 R$ [# p9 a `
2:
5 m: `2 i0 @9 [* v----*----
. ]; n2 k' U9 l---***---, l" y& |0 Z; q0 Q/ a
--*****--
, V% s% m/ Q# [! I( N7 O-*******-" R* C# k' E; q% I) s
********** H$ h: ?" y9 c6 V% o
* p% u% H8 H/ R! O1 H3 w) a+ h* c
这组就复杂些了,每一行都分为3部分,应该分别打印。( T4 O6 Q0 G! V, p% a* y
程序如下:
; `6 u' A6 h. s3 X0 |
3 X3 }+ |- j% r9 p' `1 q: vvoid fun2(int n)
7 u/ o! {& P# T! t" ?7 v) O{
" B/ U- @! {2 ~9 X# w5 o1 [ int s,x,y;6 b: h% r# c! Y$ S- H$ l
for ( y = 0; y<n; y++ )* L3 E4 ?0 y: u, B5 g
{; [4 W6 @8 J! Z$ S$ @
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
/ D! d/ L \/ ]4 ]2 _5 t cout << '-';
9 g5 ^5 q" D* w C) k. `/ H for ( x = 0; x < 2 * y + 1; x++ ), u* Y/ `% e. c$ S+ q9 |( v8 X
cout << '*';
) h4 ?* [& m7 u7 n3 O B6 |# m for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行$ u* S! b! | }* ]0 w+ m
cout << '-';, D* {6 S4 u3 p( L# y3 b0 d" ?% P
cout << endl;
7 k7 Q1 Y/ A2 G5 L }: m7 h {7 N1 V' ?$ j
}& }" s( `6 W9 O) Q9 V
/ |( A. R2 u0 I& q! P$ [/ J
3:
# |2 q1 _, K$ `' w1 ~* X5 b
" ]% q7 W) D# p----*----
! U+ m# K5 _3 s6 d8 x% ]---***---) T% j9 N+ c3 h& W# H
--*****--* ~. G. @. h: `. L- c+ i
-*******-* g( ?+ G4 m* F) C* J
*********
0 L+ D3 W) k3 m5 g4 Q5 _-*******-8 ` s3 Q7 W* d& g9 ~# @$ V# G
--*****--
# C, A6 D. O8 r1 c1 `0 _---***---2 i6 X. R- X5 D" |
----*----1 Y A6 m |4 L" U) u
3 G! _2 h/ H' d( P这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现! @" p6 T# e P/ S
打印下半部的程序:+ y `( U |' ^5 r( a' p; B
void fun3( int n )& n: L7 P" j$ e0 W3 f7 x. s) ]
{7 |8 m( o' a/ k9 O6 B4 I3 S% q0 y
int s,x,y;3 T! B5 w0 A# `2 A
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
! x: v5 T4 p2 n6 ?0 l for ( y = n - 2; y >= 0; y-- ) # m+ L0 R3 w# n5 J* j! p9 W0 `2 D
{
6 n5 Q8 ^0 N! Q! B2 x% c //循环体没有改变
$ a( w( t! L/ W+ \5 Z, U for ( s = 0; s < n - y - 1; s ++ )
* Z* s8 E; y& F( w: I cout << '-';
# G+ ]3 T# \4 u5 x! u for ( x = 0; x < 2 * y + 1; x++ )
7 k6 V6 Z0 u/ M: A3 x cout << '*';
- q( F1 ~+ \+ g* `. n for ( s = 0; s < n - y - 1; s ++ )
/ i. K5 q5 S% y: o' S) }% t. D2 k cout << '-';
' u8 J4 o9 u6 H+ ?. ` k cout << endl;
8 a* n- R, t5 `3 u; r2 b8 P7 E3 T }
: k; o5 h! i4 b0 ~}
' h4 K% }8 m. I( W1 @
" Y4 ^0 z) @# J6 x* s要打印整个图形:
5 H( s1 T" p) [- c" t+ m, y9 o- y( n( r$ j8 u+ ^
void main()
4 i+ r" }. C+ F* H% e/ u2 {{8 m& `7 g* j6 ]' z4 y' H+ U
fun2(5);//绘制上半部分7 `+ `0 |, Y3 v G
fun3(5);//绘制下半部分3 W c+ ]1 }2 y
}( i: U' R; v$ l) @7 C/ `9 p
/ l) @/ l* N9 N: [7 x1 y% t
1 P$ b* S+ F4 |" K: t% S这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|