- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:
, D# ]" R. K# z7 c+ j1:8 I* p9 \$ }, q p& g( p* u; v
! Y7 K; j ^8 j; I1 X
*
5 E( M7 w w7 W. E7 s m' |**
: |( l; E0 T2 Y! Q- t# V***% n) Q" }7 S1 A) Z4 |. u( O5 v
****
5 s* B4 ~+ X; c& \8 {: r*****
% t( o( |# I' \8 e' y******
{/ c5 k7 v+ S1 {
8 o9 K! D' Q, i) S4 k程序如下:* M$ H. j$ s3 G
1 K" B( k) |1 I% V. Q' a* f: Pvoid fun1(int n); Z9 Q: o" s5 Y5 f
{
4 E' M7 V; l' X4 m# k& z# X for ( int y=0; y<=n; y++ )/ E! w9 y6 J s# v' s4 s
{
4 p( \( |( S; J2 }2 w3 A- e c for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
+ Z1 b( i2 @: e* K3 ]+ d; u0 n" f {6 [) i# {* j" {& h& G
cout << '*';
( U# E/ D- N* z/ }! [% N }3 c4 d+ Y4 N% s# \/ H
cout << endl;//换行" p. w0 a+ Y- Y2 p! l. C
}# I0 b5 m4 _& r2 S
}7 m$ a" q. c+ w7 Y4 S4 m" c
7 Y3 K' f" ]- Y. ~1 u) q2:7 B) t# [: O# B8 B$ ~* E
----*----
2 W' f: E Y: B2 p1 o. d& G! z---***---: [/ E/ N( G9 E% X+ f' R w. @- q
--*****--
& q b2 n2 ^9 v+ v3 q. i0 }-*******-/ i7 _. x% Y) e* ?
*********
( ^/ k0 {5 I2 K/ @0 r! b3 R" y: C$ ^# x" W
这组就复杂些了,每一行都分为3部分,应该分别打印。
8 ^; V4 l$ J) ?4 ?程序如下:
1 \5 s9 ^4 h/ o2 p; O) Y" t
$ J$ M1 g2 }1 Mvoid fun2(int n)& Q [. _% e! j, ^8 h( {
{) N% D7 O2 i7 g4 `& g9 i
int s,x,y;
7 ^6 V2 H% X+ K. s( Q" p+ ] for ( y = 0; y<n; y++ )
2 u( l- T9 q. m {, D( `2 U2 b- `/ H, M: l" _2 d* ?5 s
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
# n9 ]7 \' }! R% c cout << '-';6 y8 }4 o% t% }% t3 [5 N3 W
for ( x = 0; x < 2 * y + 1; x++ )
) M P0 m: M. f/ T- i) \! L, o cout << '*';
" Z& N9 I' p% e0 Y ^1 J2 Y for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
7 k! {4 I5 L+ F( v U% } cout << '-';
9 E8 T! A) @% F1 d" Y6 Y) _- ^* T cout << endl;7 l5 v* @# n+ y( s; a% o0 T
}7 [# Q$ i; J3 l/ @
}; I9 c$ a7 G( @. U4 C
# J1 ?& t; i! S7 F2 [
3:
: u: l5 M. y1 X5 v8 Y6 d- |
7 G R( P' }& H; u! @# N( y: d----*----
$ M7 I5 Z3 J- I+ `---***---
" y2 u4 n7 C y. O* h1 @* j--*****--9 C; f$ d( N0 c
-*******-
$ }1 {' P ~: h1 F********** S+ \/ o) R9 Q7 q! X! a
-*******-
# d0 a7 E6 |4 L( i--*****--: n3 D1 N6 p3 X1 p% k; h
---***---$ t& F$ e R; s) f1 U/ Z. {
----*----
- y- g; o( U6 \% P5 i% S5 \: n: \. o a" d- o6 o
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现: @8 m% N1 a- A% u
打印下半部的程序:6 I& _& ]$ _) R8 z# a" ^
void fun3( int n )1 |* m5 c, L( `1 k, s4 T
{
4 i# w2 K$ \$ A0 I" _. [+ p int s,x,y;; z, V$ r% U1 E& B% E5 N( O& l1 \
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
& D$ E1 b2 Y! D; x) S for ( y = n - 2; y >= 0; y-- )
" A# o% ^. a# {" c- g% H { n" f5 M; }0 f8 _, f; y
//循环体没有改变
% H; l$ ~/ L ?( O9 r. {- M7 A for ( s = 0; s < n - y - 1; s ++ )
7 D1 l2 A x5 {2 t( X; o2 ]3 H cout << '-';
7 J4 @' T$ e( B$ U for ( x = 0; x < 2 * y + 1; x++ )9 h' A& X2 x @6 D! H1 J$ v
cout << '*';. L+ e4 D2 l: U4 J
for ( s = 0; s < n - y - 1; s ++ )+ S. y: n* j! T% `
cout << '-';
$ O' k3 t9 x% @6 ` cout << endl;
1 O. c6 S9 g1 ? J } I- n4 p3 r. w$ T- \; `
}+ r' v1 U% i( T
( L! u/ q7 t* L9 U, l
要打印整个图形:
$ h% _9 K/ ~* x; |& |
1 F6 A2 U: |1 W3 |+ [) }void main()
) D) D: `* R% Q) E( D! W/ c2 I{
F$ `7 j3 L7 i( t1 E: p3 N( S fun2(5);//绘制上半部分
% x: B& N( p" R7 Z3 r" g6 U fun3(5);//绘制下半部分
: U) |# r% j) z) O/ R}
( f) x2 v* @" ?0 R( I( T- l( r2 A! g9 |
, L' I& j& U% J1 F& o这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|