- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:) C* g2 V, B. m- y+ d1 C
1:7 u% J- S8 m; R/ l1 w8 H4 A
/ {/ t+ s) l7 T! a2 b9 g
*% q! d# G, r1 k L2 g; t/ I
**
+ H0 @; P" N; `! T***
6 D: C ~7 ~, `% y" d+ l1 ~7 W9 ~! W****
2 e2 w& b! y- M*****! Z$ V6 Z% O' g" _2 p# q9 `
******
2 r8 _. Z4 E( b, @3 J h9 c8 y; D6 B) L: [2 O+ L
程序如下:
) g( o3 w* d- k* U* q4 H0 f( ^
: F- V3 _# S* F H5 C+ ]void fun1(int n)
7 k5 U& T/ J8 y- D$ `{% r, f+ T0 r @; p9 {2 q1 ~
for ( int y=0; y<=n; y++ )
; Y& v- Q0 ] U8 a; o9 h) O' ] {$ }% l$ |+ L3 V" K
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关
- ]8 P2 } n. g5 l) i, B% k: J {
! w0 k* h+ a2 s- G' z4 z cout << '*';+ W% J8 B. G; l+ \7 h2 C# Q1 P+ _
}
. |$ _4 A$ C( T, N9 o cout << endl;//换行
- r# P1 w6 ^5 l( j }7 _ k. F7 W& t6 h/ O, H
}
" o5 T0 I+ j! ]4 ^
4 ]& k) X& l% _& T4 z# G4 P2:
) k4 ]4 ?' v: }& ?3 {, q# j/ Q----*----
3 ^7 v3 w$ D9 A---***---
7 |9 J& R: J o+ P3 q) h4 e9 s( B--*****--
8 w, i0 Z6 J* c: A' x-*******-/ A+ V2 W( I' E
*********
3 i; f2 f+ E5 a* o% Q: E5 E& F/ h/ c/ N# r9 r
这组就复杂些了,每一行都分为3部分,应该分别打印。1 w5 i" o7 I1 f, b( O9 \4 `: p
程序如下:
0 ^2 G9 L- X2 ]$ P4 Z, V) }& E7 c+ E. _
void fun2(int n)
; W) W& b" F2 p5 ?& ]{
% r4 B: r/ o! w$ G/ C4 q int s,x,y;
: h# ^/ x! k* J4 }9 a for ( y = 0; y<n; y++ )6 m% L) @+ b2 K: D
{
/ Z7 T( y# T+ q) ~% \. z for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
" n- y& u( E% Z: i cout << '-';4 i4 `7 \9 F3 c: w
for ( x = 0; x < 2 * y + 1; x++ )( W: Q2 {) O) A1 E9 W+ j4 J, H; N
cout << '*';0 S& x6 l6 |* c3 ?" A
for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
/ Z" H; A/ X$ j" c7 X cout << '-';
! a& @% j7 F* x# S3 a1 W; P cout << endl;, c8 ]. c3 X( ?, k2 C& X
}
* }7 Y# U! w1 r# @& K}- T) s# G1 Q' B% T" g# w4 I
( C- U) O* i4 L; N
3:. ~4 G- L3 Y% Y
! L2 x/ e& |7 S8 e; M----*----
4 H: P2 C4 u+ k$ R6 p---***---! Q) G4 J* a4 J6 N2 A1 J( f8 c1 {
--*****--
. x; D' u* f1 `6 R: H( C-*******-4 O. h) n9 h2 L$ @. Y+ C+ o0 W
*********9 W3 }7 f$ Q2 R |: ~; @
-*******-9 _# ~/ G& y2 w5 o% X1 Q" S" n
--*****--4 e x1 h. E! P$ Q+ N( e
---***---
/ ]3 o* x3 A- Q9 s1 f9 y----*----2 a Q* t# e" z3 n! d- `
) [* l6 O0 c; d7 c4 S( D这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
% F2 }( {: c+ E2 u打印下半部的程序:$ Q9 R& @) c0 L2 a H! n
void fun3( int n )
# o6 H$ u; N; m2 ^, w# o t8 `5 _{+ E' S# n1 U( y3 O- G
int s,x,y;2 R+ r, i8 {" ?4 v
//将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了" b0 B4 w, M& F( @
for ( y = n - 2; y >= 0; y-- )
) _) @1 i* r+ X8 }# b. s- e {5 f3 Y4 r$ x3 U9 l: R$ e( p3 g
//循环体没有改变( V+ g O! P# x
for ( s = 0; s < n - y - 1; s ++ )8 L2 z/ k, F( ?
cout << '-';; W- l- N! S; C0 s2 o9 f9 ^, C
for ( x = 0; x < 2 * y + 1; x++ )/ T6 k8 m0 r1 e/ T$ D l
cout << '*';( U2 y. Z: X% b* [9 W* @0 J
for ( s = 0; s < n - y - 1; s ++ )/ Y8 v: G8 m X( D) t6 ^( F
cout << '-';; B6 r( L- ]1 z8 A! Z
cout << endl;- s2 w0 ~* k8 D! n
}
8 n f; ^; E X# d! j}: |: c% P) I; Z
; k% }. M6 M5 H6 c
要打印整个图形:
. h+ h. R$ q4 R2 ^7 N. h6 |
$ P( ~/ _. o9 Y, j+ H; q7 ?' ]void main()
0 B! D# |: J. {6 z e) c' Y% F I{" f: z1 q) ~* r% h$ f3 q; {" H- y' x
fun2(5);//绘制上半部分% J+ |& F* x; _6 k8 M
fun3(5);//绘制下半部分
: S* W3 x7 O9 f2 t; X, W/ L6 E}5 x( w/ n( a9 \% D+ M1 N1 ?
+ `( v1 L( B0 B5 S; K: S3 O
% n6 t" B2 E4 X7 g# g
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|