- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:% H7 @+ D* o8 d# u2 A! p" i
1:
) ^9 ?7 P+ w9 v* p0 ]* ?2 I! V4 Q( M! y9 b5 g' t
*
3 K$ _1 f( f0 J2 H- y& M4 n" v**
o& Z2 f. n0 \4 |! F) X- J***
7 d' n7 j0 v0 ]/ L1 B4 e! M/ I****
' u+ i0 u+ n# }" L! ]6 i*****
$ M, R4 b+ K3 ^- t6 x/ ~8 b7 d******2 w9 P; V# q- n6 e: }
6 I" k }2 y, g
程序如下:* H5 U7 {8 R, T( j) Y
, W: B I8 j* z& o! ivoid fun1(int n)+ {5 H7 d2 W" k- I
{
7 t( \: E% G' A! I3 ?5 ^ for ( int y=0; y<=n; y++ )
3 y# m6 P$ S R% Y% S6 _" G { i& N( ?- ^5 b! O% ~. Y. u
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关9 b6 t- C: a8 J( { s
{9 o4 R+ F( z5 M" e/ i
cout << '*';* n# z$ S n( Z. Q/ Y
}
0 M b. ~- E7 Y8 D a cout << endl;//换行# p. K3 S; ?$ N, o% i8 M
}
) W; D: b7 Y3 b6 k9 X3 m! p}8 S# \5 T9 ~3 g6 \0 b4 D& h
$ N5 U: v# O$ \+ }4 W
2:2 q+ @9 t2 J" G A& J
----*----
5 Z: P# u0 p( E, g6 p' O% w---***---
3 m. D; i3 p$ s5 Z& _ d3 C3 o--*****--0 y/ W7 T3 n' \& p$ d1 g
-*******-$ g* h' T3 r n5 R+ T0 l, `
*********
7 U0 ]6 \/ p5 G" W7 t9 m. r4 E. S9 X7 ?- C) u
这组就复杂些了,每一行都分为3部分,应该分别打印。' K4 h' x! X# O+ g: H8 q
程序如下:
3 H6 S: |6 d; S C8 J- v/ H' X2 Z! s. H8 J/ N" a
void fun2(int n)
& q7 L# k0 Z7 u" H{. j! ^. L( y% @* Z- l# x ]
int s,x,y;% G* T+ T. }- M9 C% P. F/ n+ a
for ( y = 0; y<n; y++ )
% }% K; o/ l4 `5 n' j! S1 f {: V8 u$ E9 o6 ?9 k6 ?
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
* ?! y1 ]# g' z( T cout << '-';
# m% `6 d" y6 Y) w3 i4 r) \% S" { for ( x = 0; x < 2 * y + 1; x++ )
# c p5 g3 Z" Y+ Q* Y# q cout << '*';' L U* F/ B0 r/ n+ e/ n2 w# B9 ~3 z
for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
% O5 a3 N0 O- v) z cout << '-';
$ C: l/ l3 s2 T' l cout << endl;+ U0 J; O7 C2 h- [* c: \3 |
}, q4 M8 o5 |' M) F8 _
}
' @% `8 w. C. I1 z8 J7 a& F( D8 ]
3:
9 ~1 q6 B- Y; m1 B8 G9 b' Z- D# @" x) p4 X6 {* h
----*----
/ R! J/ X$ p1 Q: Z- ?---***---3 n7 `7 `. e# L
--*****--
! N, C! [2 ~& K5 c4 c-*******-
4 J" o/ W+ F" U1 t*********
5 k( p3 j- u& K" G-*******-
~" j' g7 x1 J--*****--3 q2 G' M: ]" e# U2 G9 I
---***---- h J7 N" l6 j
----*----3 S3 ]& Z* j4 Y6 T$ k1 [7 B* ]
4 | e0 N! b# |8 d7 X$ H
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
% [" s. D+ Q- c& z6 x打印下半部的程序:
9 o" [ B1 I# V. P+ Pvoid fun3( int n )% @9 m, J0 |8 H( w
{% y/ {# i. y* V* S8 |) y
int s,x,y;
+ j* d% P2 v+ q/ a/ z( f4 q3 } //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
$ `1 ]# S' q7 N0 s$ y! c for ( y = n - 2; y >= 0; y-- )
7 P1 [* z0 B9 @ f1 c5 ^ {. \) o9 b' R5 Z4 J7 ?
//循环体没有改变
0 ~5 [5 K0 _5 Q0 Z3 W+ X for ( s = 0; s < n - y - 1; s ++ )* y: `8 q% h _& a% v" S3 A i" a
cout << '-';. x, R9 \1 u0 J) D
for ( x = 0; x < 2 * y + 1; x++ )8 c# P& R0 R0 Z- w+ z
cout << '*';
$ G6 C+ Z1 S5 \; R for ( s = 0; s < n - y - 1; s ++ )
# L/ X" D# u1 T: T9 G' k. s" Y6 O cout << '-';
c2 L. N% \2 ? m cout << endl;, p( i0 d5 M* \" u
}
* n0 N8 S. \8 [) e}
* U& N0 U$ A3 W8 `" ~0 b9 q A6 X! x a P4 Q. G0 D i
要打印整个图形:( S0 F: K0 W$ K. Q$ Q
1 x/ I' U/ Q, |* x5 Z( k# m- Y- R
void main(), P8 U; A7 Q- m0 N* L5 E6 M
{. D- g' T7 e/ n# ~
fun2(5);//绘制上半部分# F1 z( j' n0 |# M% j9 @) y* a7 s
fun3(5);//绘制下半部分
9 r" k* T+ o( i- X5 y1 U6 Y}6 p* c- X# s# \% C, w W
8 Y, M9 I p6 @. q1 ^& R( { D
7 H0 m' e+ w% C& x2 _# k9 Z1 P& @这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|