EDA365电子工程师网

标题: C语言经典算法50-67 [打印本页]

作者: dilidili    时间: 2017-10-9 16:04
标题: C语言经典算法50-67
【程序50
0 {$ n- ^4 m! A$ c. E$ H题目:#include 的应用练习 # R# H, D% M0 Y9 g6 J
1.程序分析: . m" @3 u# y# V* j% J' P
2.程序源代码:
9 q3 e* c( j! k' I1 F7 P, h1 ltest.h 文件如下:
( m9 Q2 Z4 u7 S. y8 J' K# A#define LAG > 7 E" J( e: b5 E! k
#define SMA <   c5 K& v3 P* m  X8 S, H% Y
#define EQ == ) [: u+ a2 w7 Y, T: h$ }
#include "test.h" /*一个新文件50.c,包含test.h*/ - K' {* m  Z0 M: A+ \5 O( W; r
#include "stdio.h" 7 D& R5 d* p( t" W) X% Z
void main() $ a- H6 v9 O& P' B, x- y2 B2 _
{ int i=10;
5 Y2 d9 a! J( ?; V5 P+ ]4 Q) oint j=20;
: g2 H, s: i0 Yif(i LAG j)   I$ ^2 |8 S. `# f2 w
printf("\40: %d larger than %d \n",i,j); ) H7 ?* {3 }' C( B4 e+ N
else if(i EQ j) + S$ X* D* `! [1 K" s
printf("\40: %d equal to %d \n",i,j);
' ~. y' G$ L' relse if(i SMA j) & V7 L# U6 s: }1 c& N7 E
printf("\40:%d smaller than %d \n",i,j); 9 J. {4 q9 }$ W5 R2 c) `, D
else
1 y+ A. l# y$ ~* b' `. Lprintf("\40: No such value.\n"); 5 W, o; ~4 t( v; D: U
} 9 M6 U! b5 A/ b: `* i% k
【程序51
' P  e- q8 R+ H- W- `! @题目:学习使用按位与 &
$ B- J% @" x3 m% G1 k$ f  s# C5 N1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
$ s: |4 A" ~2 h4 g, f. a9 F2.程序源代码:
. r  K& i/ B) {#include "stdio.h"
$ T5 n# K/ }4 l/ k/ O; Z  cmain()
$ t& z6 O7 A; ~, Q/ f0 ?; u8 H$ ]{ 7 A, b" m' ~; I8 h" j; D2 Q4 N) G
int a,b; , N0 A: {+ }/ ^, R
a=077; 3 Q3 G6 H  x* y) S' L( F( l0 K0 w
b=a&3;
# S. V; J9 }& |5 v' P0 Xprintf("\40: The a & b(decimal) is %d \n",b);
* k! v2 O* V' J+ sb&=7; / v: ?/ f8 }$ e. ]5 g
printf("\40: The a & b(decimal) is %d \n",b); $ c( |8 g' W' @8 A0 t
} " \0 [. Y% h. c5 c) v% ?' [: V
============================================================== 3 w( v0 ?# l1 N$ v6 ?# O
【程序52# N0 b" B7 e; K
题目:学习使用按位或 | 4 p' m8 ]% k" T5 e
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 ! a0 s' A. `6 Z$ S% w2 c" G
2.程序源代码: " O. Y  ^& W1 @9 ^9 \) J' E5 k
#include "stdio.h" . Z1 v$ d" D( z
main() ( B. B1 G( ~$ U  z! Z- A
{ . m, Q5 q( ?' A, Y* K
int a,b;
) a* H% Y- w, n8 _a=077;
5 w3 c8 ^0 y0 e+ X, u0 Mb=a|3; ( c3 ?8 O! S( v8 n3 G' g5 m( c
printf("\40: The a & b(decimal) is %d \n",b);
5 F3 e, Q/ }/ W1 {3 fb|=7;
1 J* \+ L( z5 R9 U" Q: x2 }printf("\40: The a & b(decimal) is %d \n",b);
. z) s( `3 e2 b* X* L}
, B" @9 L3 g5 }==============================================================
7 |5 D0 {2 q5 u【程序53嵌入式信盈达企鹅要妖气呜呜吧久零纪要 ! [/ t2 x$ J( Z( f& C, [
题目:学习使用按位异或 ^ ' S* R& C; e8 A. o' T# J7 _3 a
1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
4 n: B1 S% ]) ~0 d: n" e2 r2.程序源代码: 0 L4 Q: R$ @1 d; G
#include "stdio.h"
: n' R% ]' Z- ]7 zmain() ! x; i! O$ R" k, F' x. s3 ^, Q; t
{ 3 X; Z* E) G% l) o
int a,b; ( _4 {* {; `0 S/ Q3 b/ G( X
a=077;   D+ i6 D. B' _% S
b=a^3; ) t) S& m0 T( [& [
printf("\40: The a & b(decimal) is %d \n",b); + y( J9 s7 U. A' E
b^=7;
6 q& X( p% ~  L# Pprintf("\40: The a & b(decimal) is %d \n",b);
' ^% U. Q& y7 w, p; G% h} : j  d1 o: Z6 J/ y- [" R$ ?0 T
============================================================== ! |# v% L0 q9 ?/ Y
【程序54
- v6 f' A- N# n# D5 }0 @/ W) V题目:取一个整数a从右端开始的47位。
% g9 u  ]" h  O$ Z程序分析:可以这样考虑:
- Y( {8 C8 G  n! o( N(1)先使a右移4位。 ) ?. m" A& S8 `0 N/ t/ z
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
4 }* T: x, J3 _- ]/ {(3)将上面二者进行&运算。 % k' L" L3 h% X( ]
2.程序源代码: : l7 y. Y! F$ E  y/ L" w
main() 5 I+ q  C3 Y& E' K3 r
{ % o0 |" \/ t2 K3 D
unsigned a,b,c,d; 2 k% }% t+ o% ?3 i
scanf("%o",&a);
6 h  }! ~% }2 @b=a>>4; 5 j: G  C2 O* `
c=~(~0<<4);
$ s: D6 ]) h' L3 B/ j, J; Bd=b&c;
6 B* h3 S  g- \; `1 Z- {0 u: mprintf("%o\n%o\n",a,d);
3 n: [8 a& b' p} * R" ?: B6 k2 H7 j( u
==============================================================
/ Q  D6 O- K- L! |【程序55$ V% e8 ~* u8 X2 {0 S
题目:学习使用按位取反~
4 l( e5 ?) Y, @. O% }3 e1.程序分析:~0=1; ~1=0;
* j3 q8 m' ?1 ^$ m5 U2.程序源代码: ) Q/ T: U3 O% D( M
#include "stdio.h"
, c! J0 b/ z& t' v/ Hmain()
$ o$ v& l* `6 p, F& j* {$ |9 R{
6 I, S6 R2 m3 @' U" t9 r+ `6 k) @! tint a,b;
) F6 ]' d7 q7 r3 F9 }* X  f: ~  M2 Ja=234;
/ U; i" G- i, h  z1 H0 `b=~a; $ ^2 R2 F  q9 o* }% |0 ]  k# f
printf("\40: The a's 1 complement(decimal) is %d \n",b);
  U5 d# D6 n: m* s) Sa=~a;   b: U, _/ R) z% y5 F% k
printf("\40: The a's 1 complement(hexidecimal) is %x \n",a); # ~2 m  @4 |' I$ [: v/ d
}
( T6 i9 _) Q: @8 s0 a  w============================================================== 5 o1 g" U2 x& _4 ~$ t+ w0 {8 ^# A+ @
【程序56
1 u; A6 `8 q; J, y. w) b题目:画图,学用circle画圆形。
6 D$ ]* t% g& ?. e1.程序分析: # D! _6 u) ]' J' X8 V* |& p" m5 H* B
2.程序源代码:
  P8 i9 \" J% \% a$ L# C! |/*circle*/
, n$ k) H6 m9 z/ P0 b+ O8 [/ e6 L#include "graphics.h"
6 G! X& f5 _( c: Q' smain() 1 `9 K% ~) U8 G! G* q
{int driver,mode,i;
' ^$ a7 O! m) X: [) L, ofloat j=1,k=1;
- X7 s2 K$ u$ O  j/ ~driver=VGA;mode=VGAHI;
9 q3 O% ?9 @" l: ?8 h( xinitgraph(&driver,&mode,"");
$ w1 g$ c- u3 m& D; a9 {; _setbkcolor(YELLOW);
) D6 b% `$ {8 U2 \2 Ufor(i=0;i<=25;i++)
# \6 p2 R# i' w  N9 s+ T{ ) ?7 O% P6 [# L2 l! l
setcolor(8);
* i8 e* f; Y$ e5 ~1 y# w8 tcircle(310,250,k);
1 N) W9 A% p( x+ Qk=k+j;
7 g$ o/ u5 Z( Wj=j+0.3;
) t8 ?. K1 B7 e! f}
! E- L+ b+ ]* P' \}
! n* z* r$ a) a7 e+ X==============================================================
, [4 {! t! V9 l' Q( i* O! d3 i【程序57
6 S5 R- ~; c' }7 o3 O. [题目:画图,学用line画直线。 . f1 b- }+ H5 H; Z9 ?
1.程序分析: & E5 V0 m% i: G  s! v; g1 `0 g
2.程序源代码: - g* s% @( S! `: b' x1 v
#include "graphics.h" # {- R+ d2 T, n4 `& t1 i
main()
0 v5 k, ^# k8 ]5 R{int driver,mode,i; & h9 Y4 _% D0 g! Y' {
float x0,y0,y1,x1;
2 U( v4 C# P. l) qfloat j=12,k; 2 q/ o! ^5 s: }# o/ ~0 z0 Q5 N
driver=VGA;mode=VGAHI;
( Q, c. Z  }* E1 cinitgraph(&driver,&mode,"");
- o% [. Y6 b4 {" @setbkcolor(GREEN);
/ |# @1 Z# K6 jx0=263;y0=263;y1=275;x1=275; # w/ s+ F8 a% C$ O
for(i=0;i<=18;i++) . R( ^" _; S6 b0 A% W. o$ @! Y
{ 2 O* z$ f& q. m8 d: |6 B* M
setcolor(5); + H6 }; Y: T, M9 Q* |
line(x0,y0,x0,y1);
. N) f( X1 G& Nx0=x0-5;
8 W) N9 G& K7 q# M% i" f( b4 Vy0=y0-5;
8 Z* {) Y5 I% A% }+ {1 Nx1=x1+5;
& i  l( E  n0 H: O  \7 B: [7 a# Sy1=y1+5;
7 K2 g. V8 ^& o- uj=j+10; , g3 `& p6 m, S9 h' t
} ( Z8 Y7 F' R9 Q1 U# z) W
x0=263;y1=275;y0=263;
& H9 I% k7 _0 @- F' V, r% Gfor(i=0;i<=20;i++)
# Q4 h  O+ @  R" G5 {( M% e{
: e: J3 {% B: b& ?( |6 Msetcolor(5);
  ^  F! O) l# k6 ^! Bline(x0,y0,x0,y1); ' Z( C( z/ L, F/ L  l, m; \+ q6 C
x0=x0+5; , p7 d! A5 v! N% I
y0=y0+5;
; ~  q9 A7 n) A8 M+ J0 Hy1=y1-5; ( m; g6 Q& ]* G) [( A5 r0 G
}
. ]- J$ V. k0 f) o( h2 R} 9 l8 q6 r* `  e2 ?( D3 ?
============================================================== 1 m# A5 Q& o6 q- o% [% U
【程序58; e  [1 B# f( l& Z
题目:画图,学用rectangle画方形。
8 u, ?+ T- _: i# @9 y1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
! o* ]' p: C5 D0 U9 O3 Y2 L1 V" S, g2.程序源代码:
, c' }) A$ Q7 ?: {* a& }5 V#include "graphics.h" 4 y* A- _/ U" q( t
main() 7 a6 C1 p: v' M& z' J" l+ q4 K
{int x0,y0,y1,x1,driver,mode,i;
4 q8 o2 {  k- o; X9 xdriver=VGA;mode=VGAHI;
: M3 ^! q: Y& i" ^( e2 vinitgraph(&driver,&mode,"");
' h. R; u( Y  p5 Vsetbkcolor(YELLOW); . O1 a2 C: W! Z$ W  \& v; g; I! n
x0=263;y0=263;y1=275;x1=275; 5 O( p9 l7 }3 S: ^
for(i=0;i<=18;i++)
2 M' G( P- o6 H6 ]{ . S# O# Q; V0 u9 x+ ?' D1 u# \
setcolor(1);
+ Z3 n8 S& ~5 p& N) erectangle(x0,y0,x1,y1);
/ }$ T/ u$ a8 s" zx0=x0-5;
+ t& X4 y: Q5 C/ yy0=y0-5; - Q2 N6 O- o! O/ |$ E* }% l
x1=x1+5; : I* r3 T, P7 p% s  C5 |2 n
y1=y1+5; ; ^( S( |8 O8 i- a/ ?
} 1 v0 v& M' i0 R$ I7 H
settextstyle(DEFAULT_FONT,HORIZ_DIR,2); 4 y3 U9 ]+ ~' i/ H
outtextxy(150,40,"How beautiful it is!");   Q) f5 T% I/ G/ J4 L9 U: T
line(130,60,480,60);
; z) V9 K4 z" ~setcolor(2); 0 w# X" o' u8 p2 {- |% W4 |
circle(269,269,137);   L! @% j8 m  ~! k
} ; r, H) e* T$ o' o
==============================================================
/ A% Q$ H& k) c1 q7 t【程序598 L& W* {0 E- t4 k6 w
题目:画图,综合例子。
: v5 y6 o$ k& T" l: u* x4 W5 Q1.程序分析: ' ~- x. r: K1 z, W, k; d3 w
2.程序源代码: $ Q) d+ X! V2 g1 c) u- ?0 c
# define PAI 3.1415926 - x  T# s) V- _0 H1 S
# define B 0.809
5 a% @% F- e' n4 q+ _) z% N6 a# include "graphics.h" 5 }3 [) z! H  {; a$ D9 b; E" `
#include "math.h" : P! y# F$ V. J# M  K/ K9 F
main()
0 d+ k6 f7 a3 O* D# u( C# [{
) w8 ^1 P6 x3 o, t4 Eint i,j,k,x0,y0,x,y,driver,mode;
, i6 C+ F: z* E) f& w8 yfloat a;
, [* J" Y) L  V2 C, C0 }1 Y: Rdriver=CGA;mode=CGAC0;
( a* m3 x, `/ S1 C2 `initgraph(&driver,&mode,"");
3 A2 @1 P' h  usetcolor(3); " n1 t$ i# L- `3 X
setbkcolor(GREEN); / L) ~: ?: z9 [2 k3 Y* ]
x0=150;y0=100; 5 B8 J2 \+ f4 k7 J1 i  C$ r% x# f
circle(x0,y0,10); ! r5 t; n( M0 l2 O2 {
circle(x0,y0,20); - q4 A. W0 o' Z  ?( [. Z" W- E8 e" n
circle(x0,y0,50); 4 s7 H& [& f4 m7 }. z
for(i=0;i<16;i++)
5 q/ R3 ?, {5 r$ V) d{
5 O) o; J* O2 R0 `a=(2*PAI/16)*i;   S- k2 \6 l( |2 g
x=ceil(x0+48*cos(a));
% I6 I2 {3 |; o1 l' \y=ceil(y0+48*sin(a)*B); - M- y! R6 `; P$ X
setcolor(2); line(x0,y0,x,y);}
+ s+ M  T& L! a- i* j, ^setcolor(3);circle(x0,y0,60);
) A. q7 C- i& q2 t6 K9 p/* Make 0 time normal size letters */ 5 m; }1 {) J- u* j
settextstyle(DEFAULT_FONT,HORIZ_DIR,0); 2 v8 d4 J8 ~; j" f
outtextxy(10,170,"press a key");
8 q' X. v) L) ?, O% ngetch(); ) m* G2 z# o6 f: k4 I& k9 L8 ]
setfillstyle(HATCH_FILL,YELLOW);
% |  J( r0 y, q3 U% k1 bfloodfill(202,100,WHITE);
5 \" V# t6 P( N# R7 G4 Z* sgetch(); 8 \: s3 @( \& b
for(k=0;k<=500;k++) . h9 i9 E% F: n1 p% h: x) Z
{
, H! }7 i7 M: }- x' h) a; psetcolor(3);
5 d/ F: s" h; i7 c6 ~0 E9 ofor(i=0;i<=16;i++) " P; Y* r( W' t* w6 ^9 M4 L  r# k
{ ! @0 K  f6 a- N6 [  K& ^
a=(2*PAI/16)*i+(2*PAI/180)*k;
: k  |! Z9 y' nx=ceil(x0+48*cos(a));
: R2 ^, {- S. E2 N* B1 j3 _y=ceil(y0+48+sin(a)*B);
6 `  d1 P6 q: ~: A4 c0 q& F7 osetcolor(2); line(x0,y0,x,y);
, y2 g7 T' T0 h3 t" z6 ?} 7 T6 [# R8 y2 w* j3 Y
for(j=1;j<=50;j++) & r" m: a' Z. K% |+ d
{ 1 M6 E& y: e0 l/ B/ z2 i% x
a=(2*PAI/16)*i+(2*PAI/180)*k-1; ! x+ T$ ]" ?' t/ Z0 @
x=ceil(x0+48*cos(a)); , `. F( s* x9 b; w% ~2 m; V
y=ceil(y0+48*sin(a)*B); - t1 U& d9 f+ u5 M8 a% l
line(x0,y0,x,y); % s: j' I% X+ r+ c9 e' v
}
; t# s' D: y' a  H/ [, b% h}
4 ?/ z' c* c6 K! qrestorecrtmode();
5 {% n8 \0 v2 H) y1 C+ d+ N/ a/ s}
7 }% m! ?$ l3 [2 N+ z==============================================================
0 F& w% e* B8 I) L) h【程序60
2 }1 G0 l0 |$ e" \/ n6 {题目:画图,综合例子。 - w$ Q0 y4 C5 [
1.程序分析:
* Y4 l* j3 |' ^2.程序源代码:
' v# ?- w* m6 s5 P8 y#include "graphics.h"
% q' S2 d. i$ S2 F' {& ]#define LEFT 0 ; `1 d  T( P+ l5 ^8 H( W, k
#define TOP 0
9 a8 p4 c4 T7 b( K, M0 R) D#define RIGHT 639 9 v" d" b+ |. t
#define BOTTOM 479 3 @% n6 L7 }9 s1 G6 t- F1 \0 K* W
#define LINES 400
5 {# I4 \  V' `& T+ Q# e#define MAXCOLOR 15 * B! U: o2 o, c  {: j
main()
8 A# i. F9 |& I{
- F- P$ b/ t4 V" r/ X6 K& r9 Vint driver,mode,error; 6 z1 e# f: k4 U5 s
int x1,y1;
4 ]8 `6 L2 N& \$ zint x2,y2; 7 r/ t% ]0 M# B3 m% i* [
int dx1,dy1,dx2,dy2,i=1; 6 ~" E7 x% y8 \/ y- R* X0 o$ p
int count=0;
  S& ~( u/ m: N- t$ e2 jint color=0;
" L* I% f; x/ h" [2 ?driver=VGA; ! }5 R, I5 x+ h
mode=VGAHI;
  L6 B7 r& C2 S6 _5 a/ W! ]6 jinitgraph(&driver,&mode,""); 0 p9 M* p2 e* ^/ p4 k1 V3 Q3 j
x1=x2=y1=y2=10; ( [) `$ B: _7 g( L2 L5 ~
dx1=dy1=2; 5 ?( o0 |% k! |$ q9 v5 V
dx2=dy2=3;
  c- q, A  \" v! n+ b: awhile(!kbhit()) + i) ]) e) L6 Q' `5 y4 N- A
{ + E8 v; [) U% y2 ^" P
line(x1,y1,x2,y2);
1 ?" a& I& H4 [, a6 b3 l5 Ox1+=dx1;y1+=dy1;
# l, Y( W4 K/ c6 |5 Dx2+=dx2;y2+dy2; 9 i: |  i0 z- t) Y/ \  X+ O
if(x1<=LEFT||x1>=RIGHT)
# A8 s; o; ]0 P& a6 C! cdx1=-dx1;
7 p& @, Q  T' X8 Z) F$ N' F7 U, Gif(y1<=TOP||y1>=BOTTOM)
9 I6 h8 R% T/ j5 [( F. qdy1=-dy1;
5 q0 h/ G) p6 o& P( \if(x2<=LEFT||x2>=RIGHT)
: [/ F2 O6 k2 O9 `0 zdx2=-dx2; ( y% z# {+ @" X
if(y2<=TOP||y2>=BOTTOM) 5 J7 v' t! Y' a% Z
dy2=-dy2;
0 r1 E1 q6 X* o' zif(++count>LINES)
! D# T' G5 ^( E{
  d' p6 A  W0 L6 V0 Vsetcolor(color); % {' A2 p' l( @/ L
color=(color>=MAXCOLOR)?0:++color;
0 o* g+ m. O; P# C}
( [3 Y% |) t9 T( s- f  `, }} & b; ]& w1 o/ ~4 u; J! ]) T
closegraph(); ! A/ o) h: E- q
}
【程序616 B" B# t4 ~4 J; F
题目:打印出杨辉三角形(要求打印出10行如下图) % H0 T5 w2 c2 D$ ]: U  A1 C
1.程序分析: , [: Z" n4 `, t" u; P
1
9 V8 V2 V6 z3 {" O) \' }. w1 1 & |+ x) J4 b+ m0 v3 ?( \" q" h( Q
1 2 1 + j7 R4 F) x7 k! @
1 3 3 1 & b: C% h3 T7 [
1 4 6 4 1 ! O( i, @8 ^4 C. f
1 5 10 10 5 1 5 S0 H% y/ X+ j
2.程序源代码:
' K- Z: c" R- F4 n4 |5 ]2 ]- Dmain() / x4 c, W- ^" j+ |# x: x& R4 I" D5 U/ o9 _
{int i,j;
* q0 P* j, }* g$ |5 R) J& w4 W0 fint a[10][10]; ( K% c' G6 C$ ?, c9 N2 p) O$ q: J
printf("\n");
/ ]% m+ K7 U  k1 yfor(i=0;i<10;i++) 4 o9 `; l1 Y( W; n# H4 r3 ?8 N
{a[0]=1;
; ?! ?6 u) Z' P  _: H/ la=1;} ) A9 _! T/ t, y# I
for(i=2;i<10;i++) . k5 q! F9 ^$ i6 w7 M5 @
for(j=1;j a[j]=a[i-1][j-1]+a[i-1][j];
9 B9 b9 b3 k8 k& o* p1 X' V# x% x% G" qfor(i=0;i<10;i++)
3 V* d! w( o. j- E{for(j=0;j<=i;j++) 9 z0 N! v2 e. P% L
printf("]",a[j]);
3 o+ |& u, N% Tprintf("\n");
0 |1 }1 j# v9 _% Z}
( X" d$ @' D, {; K3 M4 J} ) e5 b' G5 R. P; z
==============================================================
" r" z: N2 e8 |/ [【程序62
" M; }8 u2 x1 K; r, M+ k( i  o3 S& Q题目:学习putpixel画点。
0 C) X* S% f, I1.程序分析: 5 R- H( x$ B8 d5 D; V2 A! @
2.程序源代码: 5 g8 C! G7 n) x: N
#include "stdio.h" 1 I1 r3 y0 {" z( \! T+ N% @
#include "graphics.h" - a* M" f# U6 s6 o% [8 W: E
main()
' L5 H8 I% W! E{
: u( @/ q" o3 _: t1 lint i,j,driver=VGA,mode=VGAHI; ' A1 z6 N! s) B7 d' V" l
initgraph(&driver,&mode,"");
: g  A5 L1 F& B; }2 Q+ b0 P1 q) Vsetbkcolor(YELLOW);
9 F/ q, L( p% Qfor(i=50;i<=230;i+=20) * ?0 v8 ?. _- B; \1 I
for(j=50;j<=230;j++)
4 P& C: p& U5 }- D5 p$ oputpixel(i,j,1);
) P; n' c3 L0 u. ifor(j=50;j<=230;j+=20)
& n  `! n0 ]( q% C6 q5 a5 Y/ C+ c  @for(i=50;i<=230;i++)
6 k& l6 Y/ f  d; T# Y7 V$ Aputpixel(i,j,1); 7 B0 j# ~* U2 }
} 1 i8 W( @3 K+ _
==============================================================
) A1 s! R7 l2 H- p0 J$ i9 p/ M9 F【程序63
1 r' m* K) d- `( |8 l题目:画椭圆ellipse
3 _6 |  J% p% j1.程序分析:
  D1 K0 o2 ?9 [4 y2.程序源代码:
; L' p& z7 \6 e) J2 d#include "stdio.h"   l" c3 C# q: v  D
#include "graphics.h" , I7 I# y9 S. p8 I
#include "conio.h" 9 i. }+ @) V6 r) L
main() 0 {9 u6 ]( x. h) r4 |7 {: G
{ 5 y5 y' {- n1 i0 o" n% E/ f  {5 |% Z
int x=360,y=160,driver=VGA,mode=VGAHI;
) Q9 q! T1 X# }$ I' vint num=20,i;
' s1 j: u" b7 J$ pint top,bottom;
9 y  w% p5 E" h8 y' w9 c$ X9 y, m0 uinitgraph(&driver,&mode,"");
3 m9 d0 z, F7 @$ A1 Atop=y-30; 4 j' e: n) x0 Z0 ~. B6 C3 S% l/ Z
bottom=y-30; 2 g( L! D; J7 E$ ]0 c
for(i=0;i{ ; U7 a1 Z& F% L3 ^* P5 v  B$ U3 k
ellipse(250,250,0,360,top,bottom); ; l& A, O1 J, G; v7 m
top-=5; $ `, j$ a' j* @7 z' ]6 d
bottom+=5;
7 c0 M, G5 o3 N7 b} 1 h7 M4 }& I' X2 Z
getch();
- ]; L( c6 f- y4 g, `& m) E} . E. L' P) n0 ~  P" i
==============================================================
7 g/ |8 j3 r. i9 w* I【程序648 R5 l' m3 I$ G: m
题目:利用ellipse and rectangle 画图。
" {& x2 U3 M7 W. A0 a/ r3 E! v1.程序分析:
. n+ `6 N: {) H2.程序源代码:
% r2 }! i6 g  V" j- K#include "stdio.h"
7 T( @* B6 m( H1 h2 U#include "graphics.h"
" D# r  {1 r2 w3 Z9 U#include "conio.h" 9 l' O9 k! ^$ U8 U- q1 y/ h
main()
* B* [9 R' F: e- d& E{ 4 W" a8 `+ \) G: z4 n* Y4 \$ e$ R
int driver=VGA,mode=VGAHI; - F1 X3 s6 M9 N, D. e  y
int i,num=15,top=50;
  F' H7 u2 l+ ^9 D8 Gint left=20,right=50; 3 @( F7 \9 N' T. i
initgraph(&driver,&mode,""); ; ~" y* f2 d2 `: E" }
for(i=0;i{ / c7 a: u* z, L) L5 J3 y( S
ellipse(250,250,0,360,right,left); ' |7 T9 n: u7 w* R" J. m& E/ Q2 D+ f
ellipse(250,250,0,360,20,top); # n- g9 ?/ q, R7 m& `
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2)); & B! M& y3 ^$ J( B8 ^- V
right+=5; 2 z$ w2 l9 ^  C, \/ I$ \
left+=5;
' N! e. y3 @) J& ]' Atop+=10; 4 @5 q/ V- P0 L. |2 x# r
}
  i! Y% r' }, ]! s* H  }' j9 Zgetch(); & m, d, ~; t. E
} 5 B, j* u$ h+ V
==============================================================   r! U! x5 r  w. D3 E0 T- Z
【程序65" {& z, o4 f5 T+ |. j! K! H
题目:一个最优美的图案。
/ x' C: @0 g- }+ s9 H1.程序分析: ( a( d& P$ W# ?, z
2.程序源代码: ( B+ \- C7 k5 f- U+ X# I! R0 i! B
#include "graphics.h"
: H( N! v, w7 N! s% n2 u#include "math.h" 6 |) _) q8 ^1 p4 W- F
#include "dos.h" * p" [, h3 ]6 F1 U- i& f6 b2 D6 \$ E( [
#include "conio.h"
" Y- q+ }4 h( A- D4 Q& o) U' @#include "stdlib.h" " G4 Q5 T1 V7 v
#include "stdio.h"
" C1 L1 e7 m0 X$ h# \#include "stdarg.h"
* d% V) ]' z1 Z) g# I8 e. m: R#define MAXPTS 15
% ?% w$ b* G, {9 n; @#define PI 3.1415926 ( [+ W) _3 @( B- y9 ]  {
struct PTS { ! u# B. m' |7 I% |5 B* Q( Y
int x,y; ( K4 S" r- l( g
};
- s9 `/ M! j* H. jdouble AspectRatio=0.85; . V$ D' y7 p, G8 k0 z- z
void LineToDemo(void) - g  @5 t5 H: o' i0 l
{
6 ^5 I( @; b" e% Ystruct viewporttype vp; & ~$ H2 |# y: q6 o4 n4 Q
struct PTS points[MAXPTS]; 7 ]1 `: q' K, E) f5 S' I
int i, j, h, w, xcenter, ycenter;
* a! S9 x1 ?; Z$ Mint radius, angle, step;
8 n# l% ?. o; V% s2 w) K6 |double rads; * j2 L- J7 f# j' U' b! H
printf(" MoveTo / LineTo Demonstration" );
4 E; V, d8 p6 j1 z0 R& jgetviewsettings( &vp ); * V+ F! v% Y. R& p
h = vp.bottom - vp.top;
& ~8 j+ C9 y  Z& @1 }w = vp.right - vp.left; 2 k7 H& T3 e8 _0 N! V$ W+ Q
xcenter = w / 2; /* Determine the center of circle */ 0 g* H4 {5 n1 r6 A2 Y
ycenter = h / 2;
5 i5 k3 j" t  |radius = (h - 30) / (AspectRatio * 2); , o3 r% Z# M" _
step = 360 / MAXPTS; /* Determine # of increments */ " J* i6 B' S% N: M( Z
angle = 0; /* Begin at zero degrees */
, c5 N% i" L; j8 \for( i=0 ; irads = (double)angle * PI / 180.0; /* Convert angle to radians */
' |" {6 n6 W1 b9 G# B1 s; Ppoints.x = xcenter + (int)( cos(rads) * radius ); / e3 J% q7 k( t
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
& {9 q# p8 _/ p9 a" {% Rangle += step; /* Move to next increment */ , t! N; q5 }8 m/ p7 h& X* `. ~3 F
} 3 p: Z: G8 m+ E, z$ c8 F
circle( xcenter, ycenter, radius ); /* Draw bounding circle */
. F: p( f7 ^9 l) Xfor( i=0 ; ifor( j=i ; jmoveto(points.x, points.y); /* Move to beginning of cord */ / Y: r% E5 |) s/ G
lineto(points[j].x, points[j].y); /* Draw the cord */
# Q" ~! x. `; }2 k} } }
* _& H$ o) L" C! E8 I" Emain()
2 |# l2 R6 j5 K2 o- D/ x: r4 v{int driver,mode;
1 n6 r7 Z* z. z# tdriver=CGA;mode=CGAC0;
. w2 z9 n) j$ c4 {7 sinitgraph(&driver,&mode,"");
$ \6 E8 j( x9 L) Usetcolor(3);
' Q' B7 y, t* h; R$ {- [: v4 Fsetbkcolor(GREEN);
3 q2 L' Q- `5 |3 j' }# ELineToDemo();} ! q4 Z" R; r4 Q! T6 m, u
==============================================================
( q7 u/ y0 ]$ Q【程序66
6 E; A2 ~& {* i( h% _题目:输入3个数a,b,c,按大小顺序输出。
! Y  j# s5 z3 u8 `/ j  b1.程序分析:利用指针方法。 ' M# e2 W" u, q3 ~. W
2.程序源代码:
' \& y9 a* x) c: t3 }9 T9 ~/*pointer*/
" e  Q' p1 u. E) k; y7 Qmain() : s8 Y* q9 G9 W5 h( t- W1 \" t
{ ( f& K/ ?4 N8 y
int n1,n2,n3;
) f/ u0 Q# d1 R, o( |int *pointer1,*pointer2,*pointer3;
% D4 p0 A" F: I% b+ Y1 W, [4 g7 X" wprintf("please input 3 number:n1,n2,n3:"); ) i/ j! g# A. f# D$ p- P; d
scanf("%d,%d,%d",&n1,&n2,&n3); : _4 t( n' h1 L0 }
pointer1=&n1; / g. q1 |9 y- L+ ?
pointer2=&n2; ) C: F3 {9 D1 n0 \0 k8 o3 ~5 W
pointer3=&n3; 8 m" M& I. q0 W
if(n1>n2) swap(pointer1,pointer2); & h7 u/ H% y0 }2 @$ O
if(n1>n3) swap(pointer1,pointer3); # u3 U3 G/ [( O+ w; ?
if(n2>n3) swap(pointer2,pointer3);   ?- B# ?0 i+ S+ q0 J
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); 6 F" o8 g! r; l0 X- d1 v
} ' S) B4 w" Y- w2 J
swap(p1,p2)
7 O( ]- ?# y/ c6 Y$ L  mint *p1,*p2;
8 @3 Y- B* s% ~! F: ~{int p;
1 q' Y6 |- \' Z: m; t+ A+ Np=*p1;*p1=*p2;*p2=p;
  D4 \* ?: Q( m( H% ^% M}
8 g% y) m4 h& ]) o============================================================== , y  P4 K: s6 O3 I
【程序67
$ a$ N  T5 ]" y5 D( ^% h题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
4 S; i; s! r/ }7 |1.程序分析:谭浩强的书中答案有问题。
, a9 {/ w1 A+ X2.程序源代码: 7 J" K/ D8 [9 y' U- m
main() & l: i" C3 I; K4 m+ ^6 ~9 _8 i
{
6 c& s8 _" N$ x; ~) j, n$ t) }6 z: Zint number[10];
& ^: \5 A+ a; S& W, jinput(number); 5 Q+ P" m  ]. ?1 A( U- n& C
max_min(number); * J" I  I: k4 \8 O5 g
output(number); + g. U' w! y8 J
}
- T1 @( Z& s; o  m" J2 f! Binput(number) ; i. a* L) q7 A; m  R0 v; q! S' f
int number[10]; - m" j9 O! R& _; ?
{int i; " N9 U4 G% r( ^5 m& Y6 c* v0 L9 F: E2 L
for(i=0;i<9;i++) - l2 x; r' P0 a  d& _+ e! ?! ^
scanf("%d,",&number);
) `6 ]) h# a6 K( I& D3 _% P$ Fscanf("%d",&number[9]);
8 l5 \+ @4 N1 M9 T( k! ?}
$ Q5 Y4 W. J5 I* k5 gmax_min(array) / K0 K0 m. ]6 ?( G& y
int array[10];
7 z! W, a; {  ?+ B{int *max,*min,k,l;
* e! V0 a' C0 A2 I% L- U0 nint *p,*arr_end;
, [; m: z. }% Earr_end=array+10;
; R( A% A& [3 m9 Vmax=min=array; ! ]5 b. B8 A2 Q# y  T7 y% {  F
for(p=array+1;p if(*p>*max) max=p;
3 o) D) m* S' c5 m& L* e9 d) ?, U$ Eelse if(*p<*min) min=p; 4 ?* s+ r/ J6 M! I, Q
k=*max;
+ c( D% G, N5 A+ ml=*min;
- p# F; j& ]. A# S*p=array[0];array[0]=l;l=*p;
! S% N; e0 y  K, n5 ]3 H*p=array[9];array[9]=k;k=*p;
  N% \7 M1 Q2 k6 l1 B2 Xreturn; 0 b" o  P. r- R! X2 m
} 1 J4 ]  d; H$ G! t& j6 s
output(array) 9 \! D, r% j# V
int array[10]; 9 Z$ {& S( T% \- P9 ^. g. b( Q
{ int *p; % j( z  q! s9 Q) k8 T0 X
for(p=array;p printf("%d,",*p); / L+ G/ X4 c6 j  i, P7 T! W
printf("%d\n",array[9]); : q+ N. `7 t) T3 W4 m8 S
}
' a0 z6 P8 d, B& g; x. V==============================================================
( F8 b# v5 Z2 v. X
. [) `$ n$ k* x# H: Q

作者: ayu1808    时间: 2017-11-25 19:59
我开始考虑从google的影响了




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2