- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:. Y1 y, V* C' H% p8 Q/ x
1:- V( G/ L$ v8 d) b4 B
i) | q+ i! t# T- u% S- T
*+ `, q v; ~- e7 [7 Z
**
! K- N# G' g4 e" I( C5 m***
3 \: _+ x' O5 j) i" V; \- K7 w5 j+ E* \****
+ k$ o( P4 P J3 m*****0 V% N" O9 }0 y
******( T' B5 {6 j5 N! r" ^: n8 Y; T7 E
8 k- B) y9 l9 {/ s2 V4 ?
程序如下:- `) d6 B4 T1 Z$ S8 s7 k l
! i; f8 G8 P$ G4 F g- Z
void fun1(int n)
L$ C- ~. f5 ~- U% @{
+ N( I* \8 a/ V- A for ( int y=0; y<=n; y++ )
) B: H4 o T0 W3 A {' g. L4 a% q3 R) N* L1 E
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
& m/ w, k% _- _& B* R3 | {* E. F/ B$ _7 v% N' C
cout << '*';, L# }& ~$ K! S( M+ j/ l* B5 B: N
}
7 M/ T& u" L0 ]' c7 n0 |6 Q+ r( w9 [7 v cout << endl;//换行# g/ D" {3 g1 _3 n1 V8 b' _: U. H$ }
}
( c: E Q8 N; }, K. H. z}
% N3 N! K! d( S$ M% ?# d2 v
! \# `* G# f7 m$ |, [2:! Y+ m7 S1 i7 i! y7 {% A$ O, \ e
----*----
, v. D3 u7 u" Q9 w4 _3 i* x) l---***---! ?$ P, L T1 v2 A Q& g
--*****--: z. ^" P7 {+ Z6 ^0 E' y, _
-*******-
/ d" v$ P4 s* G0 G0 e8 i+ b*********
T/ f+ `& O" d: f& W, ]$ m3 Q. y. S7 n# t" `" d {9 w
这组就复杂些了,每一行都分为3部分,应该分别打印。7 i) g) Z7 S/ N2 f1 R8 u& T" ^+ y
程序如下:" @8 t9 J/ o# d$ o) R3 J
9 ~; S! n$ t3 [- `* \$ e8 a
void fun2(int n)$ J. M0 f/ T$ J" g. N. n. @$ J
{ p( y7 q! c* v/ [8 t& Z" o+ Y2 E
int s,x,y;
+ M/ z& @! T9 {3 \0 O' Z6 T for ( y = 0; y<n; y++ ); G! z+ J, b& e" V8 [
{
. Z& t9 a' g( ^5 g3 z* I' y for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点# ^; J. X7 b h3 @+ I
cout << '-';$ Q. ]5 t3 w0 [% v) P0 S$ s: L
for ( x = 0; x < 2 * y + 1; x++ )0 C# A3 X+ c, x _, Y' g2 s) Y9 D
cout << '*';
% y6 W& d- I1 S t, P for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
, J3 v7 H( p$ [1 X% P5 d cout << '-';
4 K3 t; c" ^+ J* T3 w7 w cout << endl;% \5 e: d6 y3 U ~" l
}
& V; W$ }* o! B/ S5 ~}& ~6 g8 U: a/ q! B2 F6 {
" p% o7 R! X/ m, C; o7 O
3:
" S1 J0 n1 a s( A& G; {9 P# i7 d) {" i! o9 p6 W7 t/ c5 Y
----*----! n6 D; n' J, P7 ?
---***---
* H+ A! o% q4 \- f--*****--& D% h: a. I. Z
-*******-, L) _0 o4 f& q6 n2 I
*********4 \. p0 n4 M# W4 N
-*******-
/ u3 T# Z6 m/ a5 [; Z1 E* z# n--*****--7 D# z J4 u; S! t& A' w' \
---***---
6 @. s# d1 w9 S3 B1 K/ [----*----
/ ?, l& n, g3 T4 c p7 m2 Z
$ y, M0 @. K; Y* B$ [& q# Z这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
; K6 Y& p5 R! J$ ]6 G- i0 z" F打印下半部的程序:
: j' N5 X' @5 Lvoid fun3( int n )
5 j6 ]/ O: ]5 ^+ @{3 T9 i+ s3 o% g$ \
int s,x,y;
6 C4 m, Y. w; [1 z2 N //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
' K3 n- y& J$ G! S for ( y = n - 2; y >= 0; y-- ) 1 N* g3 p4 ~+ K9 R0 H C* k0 \" Q
{
8 S- a) b0 v$ K7 g //循环体没有改变2 d4 ?+ Y) A, W/ n* ?
for ( s = 0; s < n - y - 1; s ++ )
0 G! j2 a3 t, h8 x! Y cout << '-';. J+ S4 i6 }# \! d3 S$ Q' h
for ( x = 0; x < 2 * y + 1; x++ ). L( M$ F- X) Q* H! ?, z
cout << '*';
" k# V8 o6 `5 e9 R+ r for ( s = 0; s < n - y - 1; s ++ )6 G) r A5 L2 Q9 x9 E, R
cout << '-';
; g9 y) X) q6 h& }% Y cout << endl;" `: l7 n; T* ^7 Q, J
}* g, S9 N0 B" x/ ?. L
}* i6 a8 U% V/ I j
; ^# K; e' M @要打印整个图形:
9 E, \; j3 K& l7 J2 J6 x: }: m; w( o% I& v0 M
void main()
5 O4 z4 J* G: }5 [{5 x! h4 e# |( @5 Z
fun2(5);//绘制上半部分
0 X' g: B2 j ?! G$ W1 K2 l# c) y fun3(5);//绘制下半部分1 ~2 R4 g: X: N- I* v4 q
}
( E" C8 s* d/ r% N7 j3 ~
. K6 }9 Y! a0 ?+ Z* t, K
; u7 U) t2 X: a' _& p+ |这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|