- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:: p% T% y* Y# D+ y( r" [& T
1:
f8 U+ e& ~% w. F, @5 i4 ]% Z1 ]) L( T0 o0 T9 X+ q
*) c# ^" @) V5 l" x$ F
**) s* W6 u6 A3 R2 ^6 [' a: g/ Q
***
9 q R* h, d3 t% W8 V$ x9 M0 a+ {6 w****
! ]% _4 i/ n. h0 c2 i! n*****
! Y& X+ J* q* D: r- A******6 |* m5 z S7 A" ^; i' A
$ S1 l8 E$ c+ E( O* T4 W$ @6 n程序如下:3 R# `# L. ?& x) f* `
8 }0 h% m& d% j$ `
void fun1(int n)7 V! ], T( F& B8 C
{& P; p9 |# ]- h8 U' @ K
for ( int y=0; y<=n; y++ )
q$ U& f0 ^. h/ m4 |2 \$ T {
i7 w4 r! `3 v# ] for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关* ~3 x5 g! `9 x/ K
{+ {1 V* i& n/ d
cout << '*';7 N0 i$ t! {- f; q- z: `7 J, J: S1 ^
}8 _6 C |. X* E- t! k
cout << endl;//换行
* Q7 j; d$ b E4 S w% L( f }! j) P6 R5 B8 T/ V
}( }5 z6 `5 N# I) S6 G% d
, h6 F/ u& J4 C5 v3 f2:
# i5 i- ^, }( e----*----
/ b7 }( r E5 k& A* M; E; L- _---***---
6 r" ~0 x! e! F' s# ?--*****--" L$ \9 {4 I1 \* A; W7 {+ k% X4 x
-*******- n' \1 H1 ?; W$ a) H0 e' v
*********
5 M) a! E, [4 F+ A6 \4 S* a% u* v7 I% ^0 H: o: v
这组就复杂些了,每一行都分为3部分,应该分别打印。# u9 @- F' I6 i* w4 @6 ]; c8 n( t
程序如下:
" ~( h* `" Z! x& ~. { n. Z8 U
! M; U6 b4 [: N" jvoid fun2(int n)* w) ?( e2 @+ ]; O+ Q7 x9 h
{0 _+ d: Z3 X, X& a" t7 H
int s,x,y;4 g, L" |) X& M4 C$ _, E0 d
for ( y = 0; y<n; y++ )
* U6 U- @4 b( |$ {5 I { g2 ^7 L& U& ]" \; O1 Z. T |
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点& E6 G/ f4 j7 A
cout << '-';( o- i8 V7 |$ v: [4 X
for ( x = 0; x < 2 * y + 1; x++ )
8 h7 T3 A9 t% G* H4 d cout << '*';
5 l! s3 o6 U/ Z, S* H; m6 l for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
6 u$ b+ g) J, p, V& @2 Q cout << '-';
6 @( R# C3 w# [ B. q cout << endl;- b, k- ?2 j6 a* s' O$ a6 n
}6 x9 V% c- u m9 u
}* u( H t4 _- C9 x7 e# \
& I. {0 n( }. [" x2 O# ~
3: L* ]' P5 ? i
8 C+ x. ^. L2 C6 w; d# c( |- s6 y6 h
----*----) G) ?, F3 |; |2 e$ k$ Q
---***---
+ N4 `1 i* D9 `- V# x$ y--*****--: n' W) y0 ]" |1 ~* h/ B
-*******-/ \4 T3 F. M, K% W
*********
! O& H# \7 H2 n+ B6 U# Y) E-*******-: ~* E0 c$ k# `$ {! H
--*****--
5 o; }; K; I6 e: O5 T---***---) m% V" z' x/ y, }% v7 P
----*----
$ @ j) G8 S# F' a+ X* V" Q
- t9 M w4 J/ f6 [这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
/ S8 Q9 d8 a! C8 w打印下半部的程序:6 L! V' _3 B0 @- J* ?
void fun3( int n ) J- B% M- A I+ {3 H: d
{
% K' u! K" B* w U# Z int s,x,y;
9 z+ J0 i0 U) C! a3 N2 Z //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了) y6 W, @5 s) R8 z
for ( y = n - 2; y >= 0; y-- ) 1 I( h8 X. @5 |% g2 z# r
{+ w2 d0 ~2 a/ q) b0 p0 P
//循环体没有改变
9 Y1 g, f$ m! X5 v for ( s = 0; s < n - y - 1; s ++ )% c* b' O6 P! S9 x) x
cout << '-';
) m9 p8 J; Z$ r0 L! M' @" j" t for ( x = 0; x < 2 * y + 1; x++ )
, _% g' b- ^% n3 {4 m- N5 g+ o cout << '*';
5 g5 V3 z- ^2 m+ c! E0 K for ( s = 0; s < n - y - 1; s ++ )3 |! x2 ?* c8 M
cout << '-';+ g" ]$ a' Y3 o3 h4 s; B
cout << endl;/ Y7 N6 t- r" \% ]$ [
}; Q$ r4 a# c2 z' x7 u8 H+ F
}
# @3 V' P+ O9 v; P2 [+ n7 i
8 P9 A( q i+ V# q* a要打印整个图形:0 {" U5 |$ q1 |) W* Z+ O
( ]% _; E) V3 u5 o5 k% q4 f
void main()& U; H' v! [+ Q- n. d, c
{# {0 Z% {- h+ Z; c6 K/ y7 D
fun2(5);//绘制上半部分
, H7 @8 y9 k# R$ } e7 Z7 j fun3(5);//绘制下半部分
* L, A0 }* x) \# F2 b, Q}
6 `& F# j/ D) O* {9 Z
+ I' k' t; Q# L* \
+ O! d6 |0 @. D* q3 c这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|