- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:
5 n1 Q; L+ f! k6 ]# B1 E. l1 K1:5 X. p0 {6 L. }& Y" m
% q! b2 G6 _* }/ u! |. w*" [+ b" D! n' ?0 k' t
**
+ t1 ]+ b3 `0 t5 Q! G. f***
2 | \0 C% R# E****
' s: A$ k0 S, I+ s# w3 n3 J*****
, d# Q1 i" B1 ?6 h! y- u******' z- y1 s; J" [0 @
0 f# B/ N3 `% C' x) l& l程序如下:
5 m- z! b! m+ l# V9 Q! D2 D; l6 s9 M. I3 G3 U J0 Z S. w
void fun1(int n)2 I& R& l* d- ~! G" |' f7 E# [
{
9 m5 _6 [, T7 |- W9 } for ( int y=0; y<=n; y++ )* {& R% s# `5 s& L
{& H: l" U5 b, S3 Z# m& l# S
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关9 @ a& b6 ~0 Y. D; Q- s4 `) ~* m `8 m
{( w2 U2 T/ J- X
cout << '*';8 i$ n# }9 V" M: J7 W1 M) ?$ m- u
}
1 v) {6 u2 x6 r9 ` cout << endl;//换行7 ?* J+ i ?2 m- `8 p7 D g. B) P- c, O$ ^
}
4 K0 X5 }1 n4 [% W% {/ w# D7 @}$ X+ g4 ^& t+ b" Z
' {. J( V6 A9 I+ I q6 \6 Y
2:& f# T! l# N" z5 B$ x
----*----
( _6 l8 c ^7 X& Z5 Z/ r. _, t---***---. F# {' x% X% Z
--*****--
" K' s) I& B( f% ~-*******-; O' A, m% X! A# z1 i& {9 o+ r
*********
; S; I L1 \/ k6 U$ Z
# _; G$ r3 v/ ?' ]0 r& f这组就复杂些了,每一行都分为3部分,应该分别打印。) K7 V5 a1 u# `+ q9 q) [) _- v3 Q1 [
程序如下:
0 n. U2 n9 ?: Z, ^8 u# E
& k) n. a u3 F* g, gvoid fun2(int n)5 W: ]* `$ v) T3 F' L& |/ H
{( \4 d. A7 b$ Z+ Q. ~, B3 w M
int s,x,y;
$ R4 o* @; g4 l( c7 `& v! D" Q: N+ X for ( y = 0; y<n; y++ )
4 h9 r0 E Z2 Q4 k F: U5 U {+ e% M: k; Z2 M* B
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
8 e5 G* Y- y4 h* _# W2 t6 ? cout << '-';* M( z* u& ]* W. L0 K
for ( x = 0; x < 2 * y + 1; x++ )$ K" r+ ]/ ^1 G- P
cout << '*';
8 _, @8 P5 a+ _1 U: M. _ for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
% T) L& ~5 m: D: |4 u! Y0 s) h cout << '-';
9 ~1 }, z/ T+ u. n1 }* U- x; q4 } cout << endl;
1 |; z$ h$ W( V3 Q }
3 N/ E" D! W j. k3 w2 _. K}
( u, \, ~& E W+ C R' N! k' j. a3 C% w9 @& L. q. f$ \" B$ t
3:2 \2 r4 k' b; h- {" ~, ]& t( Y0 L
. y, c0 j" R3 H" H% [
----*----
: u; y' g5 W, A+ l9 x- A---***---- b/ t0 N! J" B
--*****--
: Z1 t# Z7 B# N! V. P- q! q-*******-
2 ^1 n1 P6 Y! `% P" V*********
1 H, S5 G! Z& @1 q& N' {0 @: P-*******-
% }' { I( i% ]( M! W--*****--
* h5 {& D7 L/ ~" U9 `% c---***--- _2 ]& f% G+ [
----*----0 |4 ?- r+ f# s# u2 K
) a& a* b9 ^' N" y
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现9 o% d3 d0 v5 B( m5 W& m) r
打印下半部的程序:
5 d0 e p( Z6 g6 i9 wvoid fun3( int n )
/ U. x4 `. l) ^2 |& R# p{
1 r# t0 L1 w9 S: }0 m' { int s,x,y;
: F7 h: m9 q/ V3 s5 X //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了# n/ W3 m1 e0 o( `, L2 U0 w8 {
for ( y = n - 2; y >= 0; y-- ) 5 ~0 S/ A ]0 z1 C B `6 q. s6 s
{2 ~; o" X. x* v O! f: L% |4 y
//循环体没有改变
/ F; o/ o3 m+ L6 i# ?5 T for ( s = 0; s < n - y - 1; s ++ )
7 l* |9 X2 r. R# i7 C cout << '-';
. k {# c/ `4 ^9 u for ( x = 0; x < 2 * y + 1; x++ )8 r* G7 m' u9 x( d9 I
cout << '*';+ @6 K. ]1 k) e7 q9 W8 X# [2 l. ?
for ( s = 0; s < n - y - 1; s ++ )
* |9 g0 m) Q& M. r. e: H cout << '-';6 ?) W; {& ]4 z+ |
cout << endl;
* [# n# h% B- C! d }( H7 ?0 l. Y1 @ U( u
}
4 o5 i9 a5 _; O" w. j* u
7 u2 S+ H1 i( E要打印整个图形:
: u) X7 s- C: o3 n* L# Q; T1 T a0 ?) I; T
void main()
% q- R# v, r# o; p{
4 `- o: e/ [$ y+ a0 r3 b fun2(5);//绘制上半部分" t5 m) b" z( o0 @9 Q
fun3(5);//绘制下半部分
7 _ H+ Y2 z- f$ A+ k- C8 \& Y% |}, u- F6 N9 I. Q; p. y# ]
5 D& V! h3 G4 K8 T) E# q
3 ], X d3 Q/ n H. e这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|