- 在线时间
- 0 小时
- 最后登录
- 2004-7-22
- 注册时间
- 2004-5-28
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 124 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 43
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 7
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   40% 该用户从未签到
 |
问题:编程打印下面三组图形:
3 c- E3 o9 s- r' _, F1 u1:
7 ~" N" R% z* s) U! y7 J$ M4 A- f% X1 p' r6 z1 {/ e7 X @4 ?
*# N3 t6 h. c; g8 ?# ]- {7 H
**
?0 ]% r" E& r7 N- ]% x \***
/ x1 V$ }6 k, q$ ?4 c****+ V9 \' C) Z' h, J' `+ d6 Q$ f$ w
*****& o# R. [! r) Y6 u, R
******+ W" y7 ?( A/ P2 Z9 w' P
% r. r( q' V# c2 N5 c9 Q |8 l
程序如下:5 R+ x) x( L* W' S. H8 Y- F: S8 N
3 Q, R3 G/ j b- Vvoid fun1(int n)
1 h/ _8 x0 k3 z; a7 |" u. I{+ N1 f. ]3 |3 J. H$ A, F
for ( int y=0; y<=n; y++ )+ I4 d0 S9 V/ b) v# G. t# W# d
{9 j; E: ]; x% ^
for ( int x=0; x<=y; x++ )//注意此层的终止条件与y有关3 z6 u* Z; J" T! Z& {. N. ~ {
{
- |. Q/ W+ M1 N4 F* O0 h cout << '*';5 s x( b3 u4 z% K( W
}
6 ^! g* t1 m- C9 y cout << endl;//换行: U3 Y2 _' ^9 ]- U$ r2 F, j+ H; r& y; N
}
4 x* W1 H+ v& ~. S% e$ B}, Y0 f R7 \0 m" M$ b
+ E& _) z. E% t- T$ J
2:" z0 I+ o0 J( N, j- V% w3 i
----*----
; Y: C( ` R+ ]( I! U) ~5 r---***---8 c' Y, G; E5 \: Q6 y5 h
--*****--6 Y4 d( u j9 `
-*******-
R, u! e7 w1 X5 _" o3 u- a; o*********8 H ^( b1 ~1 L) T: I4 Y' v' h$ E
. V! `$ f- c9 s7 G" s% L# `
这组就复杂些了,每一行都分为3部分,应该分别打印。) y( f: h/ Y* A) D
程序如下:) j7 K6 X/ b7 F/ S7 Z
8 U& ^. q h. K5 N! G& p. O1 Xvoid fun2(int n)! v1 S: ?$ b7 w2 B8 k( d$ A
{
2 i" U8 Q( g& O9 ? int s,x,y;
) k2 T7 u$ Y) S, D, |! r for ( y = 0; y<n; y++ )
8 g7 d+ Z6 D# o1 F( l {: T5 h) z# Z9 O5 a7 T$ ^, Y( Y
for ( s = 0; s < n - y - 1; s ++ ) // 确定开始的'-'有n - y -1个是重点
$ o' M' `0 {. y8 } cout << '-';
p( |, e- E0 B! S" |5 |% L. j for ( x = 0; x < 2 * y + 1; x++ )2 w6 \4 n f& p; w
cout << '*';: m3 H( y/ e& A# ~! T
for ( s = 0; s < n - y - 1; s ++ )//因为左右对称,直接将上面的搬下来就行
6 d& ~1 d/ K; r6 v7 C cout << '-';
$ L% R: A* l7 A, Y5 C: c cout << endl;# ~+ e3 ^2 o6 a
}
: o5 ]5 a; Q8 s% k}
& v! ]$ M* M r$ B/ X) }* l" \+ H
$ s0 y6 ]! v7 r3:
3 B) A- f [7 F. N$ A! Y2 ~* B" h3 ]9 {: s" p: e/ T( \
----*----- e% R9 c9 t% N' C( g5 U
---***---
% H5 R5 g* k) T! p3 T--*****--
! D# A5 |& j! {' n0 K-*******-
0 b8 B e$ @& q! a*********2 k- ]$ G* ]/ h* }" R0 W: v5 ^( k
-*******-
$ U) A& l/ U4 t" J. ?--*****--0 f7 q6 f" |9 C
---***---
5 k t7 {) n j! D) @5 ], o' |$ [8 N----*----, H. j& j k! n9 U5 c6 H6 q1 E
" h# ? O# O. n3 T" }, y/ }
这个图形就较为复杂了,观察发现,上半部分与2相同,下半部分将2中的图倒了过来。所以只要写打印下半部分的图就可以了,这段程序也可以通过对fun2改造来实现
a& K% I% @5 e打印下半部的程序:+ ]5 s% G b$ t Q. i8 Y, @
void fun3( int n )& o, _/ ~( X; k R5 k7 ^0 @
{
. B1 F5 `- I- `& M; [ int s,x,y;
. i2 }4 W- i, U3 Y' [ //将循环的过程到了过来,注意开始y = n - 2,而不是n-1,至于为什么,自己试试就知道了
, k, G/ `' a- H; } for ( y = n - 2; y >= 0; y-- ) ) X" v3 A1 R) K" W
{& v2 l: r8 o5 A$ U$ H; N8 V
//循环体没有改变
# K6 ^ t2 M3 k for ( s = 0; s < n - y - 1; s ++ )) [& x* F i( [$ s4 F7 ^
cout << '-';
' D7 d9 |1 k: E1 G for ( x = 0; x < 2 * y + 1; x++ )" o$ o7 a4 W5 b0 a m$ r
cout << '*';
& v. l2 ]& e" E! R7 F. g6 _( E for ( s = 0; s < n - y - 1; s ++ )
, v: R- E( j7 y6 G# F, N: S, v2 a9 w9 P cout << '-';& ^1 C7 ]! q; S; F
cout << endl;
: X- W; q( s7 V: ?. Y. Q0 ? }# G0 w% _$ k a
}7 w5 s+ s' ]6 d: {& ^: d
9 O. t6 ]2 X, h. Q( ]要打印整个图形:3 U* n, ?7 [" \
3 ? j4 A" ~# u
void main()
% J3 |! N# w U5 H h{
8 v+ F6 ^4 N! t$ i7 Z5 e: P7 T fun2(5);//绘制上半部分2 \' b/ j1 r7 b5 ^& u( U8 e R( x( H
fun3(5);//绘制下半部分1 f3 @# B; @+ V9 D
}7 }5 N9 T. u+ b
! x2 e4 N) Q4 R+ n, a' @# S# l
4 U8 V+ N2 }5 ~4 W
这些是比较简单的算法程序.我打算开一个算法入门区,为初学者提供服务.大家有问题的话可以一起交流. |
zan
|