EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
【程序50 】 8 u0 l" Y) |7 {
题目:#include 的应用练习 ( v( g0 e6 k, U
1. 程序分析: w- R. h p7 g/ y [& @* l, @
2. 程序源代码:
5 @! C+ v# ^6 i* G7 itest.h 文件如下: " T$ ~+ [; ?# B& V* B% ^6 A; |
#define LAG > 5 [. c" _/ T) |9 t& |' u3 ~- D
#define SMA <
% ^" h; |* e% ~( U#define EQ == ! @3 f7 o/ |; J: i) M* M
#include "test.h" /* 一个新文件50.c,包含test.h*/
9 {) v, o$ ]5 }( w$ V2 s$ A. M* |+ I' x#include "stdio.h"
0 O) ^$ }# s! ]+ x0 D3 k. hvoid main()
6 I5 K8 D; r& y4 W{ int i=10;
5 M0 V# f2 l' c" W4 ~4 p D7 t( @int j=20; ) o5 c. @5 G, x% _8 f& d
if(i LAG j) 3 U$ Y- y) E9 R7 i
printf("\40: %d larger than %d \n",i,j);
3 o' J/ Z/ w& J5 ielse if(i EQ j) : Q7 z0 k! k7 {6 z: d5 P! X: s5 o
printf("\40: %d equal to %d \n",i,j); 9 q# p [- k8 d9 J6 x: K
else if(i SMA j) - }# F( {8 z7 W O' K3 F8 Y: E# I
printf("\40:%d smaller than %d \n",i,j);
. q' Y$ M& ?" a/ X5 t4 Welse 6 _" q: O* C1 G0 C- q( m
printf("\40: No such value.\n");
, I& S, M8 B5 y}
2 u4 k7 X8 R8 T【程序51 】 9 T) }8 F n& k+ L
题目:学习使用按位与 & 。 # d7 Y/ C. T& m6 L
1. 程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
( u0 A) ?9 L; Y4 `2. 程序源代码: 6 x$ T$ i: g; K8 m; n, H
#include "stdio.h" 7 F9 |* e* |2 [- K+ e8 y
main() 4 o" j# @/ O% N- E" C
{ # K6 ~) C* K- p
int a,b; ( {+ [1 W' h) h( x4 z% \; F# ^
a=077; * t- y/ X7 P- g. n2 h1 U8 P) _& c J6 m
b=a&3;
" m( V0 D4 E* g) X( T vprintf("\40: The a & b(decimal) is %d \n",b);
& e8 R6 T& u6 e2 @b&=7;
! Q1 F4 }8 z; _9 V0 hprintf("\40: The a & b(decimal) is %d \n",b);
$ a$ m6 f, v5 _/ T" I* x8 W$ B} ?" ^3 i+ a0 s
============================================================== - R9 @; Y- Y% g9 ~! `0 ~
【程序52 】
4 o/ M f9 D' ?% ^9 m5 l" Y题目:学习使用按位或 | 。 6 _+ X" J8 p1 ?+ B) |. Q
1. 程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 , v: m( Y3 x0 S4 ~* h
2. 程序源代码:
2 d2 V. A# w9 Z- ^" r' L4 _/ j#include "stdio.h"
2 q8 {& V1 ]% \: K% `- L1 C0 \main() ) G* \! H; {/ Q" D1 l. c: O
{
+ W' M$ ` h& S M% L5 ~0 F; yint a,b; . v1 h. {0 ~+ y M
a=077;
6 x' j7 C3 J/ ^( ]6 Z2 d; k; qb=a|3;
6 Q6 m7 L5 c6 ?$ N$ {9 \8 ]- I' z! Bprintf("\40: The a & b(decimal) is %d \n",b); ) @& _7 c1 I" K& n( Q* b# z
b|=7;
4 P2 s9 z1 a* p& z2 z7 y) mprintf("\40: The a & b(decimal) is %d \n",b); ! ]" s+ N2 U8 P$ v1 U
} 5 I: |1 B) V5 i( s1 t% a# |
==============================================================
) k6 I4 B Q2 k& ?【程序53 嵌入式信盈达企鹅要妖气呜呜吧久零纪要 】
) A0 ?" e1 ^1 v" n题目:学习使用按位异或 ^ 。
% P7 E& T% f1 I- h* Z1. 程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
/ Q$ z# ~: @- b9 q7 K- B2. 程序源代码:
% l! n- {3 Q" M: J) J% E#include "stdio.h"
* Z3 @1 @: N3 b3 \, E% T. mmain() : O/ i- X3 n# k2 G6 A+ t
{ + r: t# s' X: s' U
int a,b; 0 o* D! c( u/ C0 T
a=077;
4 _2 F/ @ f: Ob=a^3;
5 \" M- O" ^) J7 T9 `+ rprintf("\40: The a & b(decimal) is %d \n",b); 8 `7 o- f7 J& G8 E9 N
b^=7; * G$ L, g7 W$ A
printf("\40: The a & b(decimal) is %d \n",b); & H) V: t, O! g# ^4 R
} : S1 Q( ]( U6 u4 Y
============================================================== " o7 G" h5 s8 r' _
【程序54 】 , u0 f: k2 S! H W4 y6 X3 t( ^ o) t/ o
题目:取一个整数a 从右端开始的4~7位。 6 r, H5 o2 d+ u! Y# G$ N
程序分析:可以这样考虑:
/ R1 r7 R/ L& S% {, u& l(1) 先使a右移4位。
# y6 A; @$ z; J1 `$ L( ^(2) 设置一个低4位全为1,其余全为0的数。可用~(~0<<4) * t* L# x1 c1 ]' l
(3) 将上面二者进行&运算。
% w. C" }# z, t, L* w2 e9 V2. 程序源代码: 9 T5 A+ E; g/ x' D6 s
main()
4 a, x8 C. B+ P' r% L5 I* k0 {9 }{ 9 k4 h8 g8 E8 d# h* K- y: }" R
unsigned a,b,c,d;
: ]! G. c# q4 [0 bscanf("%o",&a); 5 N2 N. N3 Z) ^& G8 v3 A
b=a>>4; . C4 y/ B7 m% X2 g; N u
c=~(~0<<4); & q; E! X% Q( } v
d=b&c;
1 j7 r5 l/ a& S" P4 cprintf("%o\n%o\n",a,d); # C1 [+ v1 ^/ t0 G, B$ j
} $ v/ o8 W8 V- i7 i
==============================================================
' h" v7 L2 {$ o. I【程序55 】
: z3 }' S# |( T1 q+ h: i% G题目:学习使用按位取反~ 。
& B" q) D5 P# }- a+ Q1 z1. 程序分析:~0=1; ~1=0;
; X7 d3 \% z7 ^- K1 k- C2. 程序源代码: * e. m) _/ j! g+ M$ e
#include "stdio.h" / ~: O2 @- s- P$ ~) Z/ E6 @8 C
main() 7 B8 S- V: c" O# \! o# `1 @( s
{
0 M/ Z: O' T2 e4 q: l' |, Nint a,b;
1 z" F! X* o" Q% Qa=234;
% a: m' p2 F! A' K( jb=~a;
" \7 _- F) M, D" d; [6 sprintf("\40: The a's 1 complement(decimal) is %d \n",b);
- Y; l2 Q) h9 a6 ya=~a; " j# a4 X6 \5 R9 p+ @ U
printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);
: h8 @4 @. d- `1 U/ l1 n}
. V( Z+ @; M# Y! Z==============================================================
( \$ i- y& Q* O2 s- t% M X【程序56 】
" d( v+ [ D! ^( W& B题目:画图,学用circle 画圆形。
" }$ V) I. n0 z. S1. 程序分析: 9 ~3 h0 B! Q: e, Q
2. 程序源代码:
0 | }' n3 n/ u+ x8 k1 P/*circle*/ " U0 u& x3 I. p% i
#include "graphics.h" 2 I: D* z" m; a/ \% [
main() / v: U) d: \# V4 S, |
{int driver,mode,i;
1 L- k' E3 [# `% I/ ?float j=1,k=1; ^ m9 |, u# g) C
driver=VGA;mode=VGAHI; ) X7 X. {$ f7 \$ E" H1 ~5 \/ l
initgraph(&driver,&mode,"");
# s+ e1 C. ~: l: ~% {* N9 Vsetbkcolor(YELLOW);
7 C6 f" F) q5 C( B4 Q0 N6 ~for(i=0;i<=25;i++) 9 W' d0 k1 R( p8 V% T/ W
{
3 ^" s. A( V0 V; y! w. k) F/ r2 Asetcolor(8);
|/ \" y: o% |7 V! u/ zcircle(310,250,k); * v; z' ~' p: D: l
k=k+j;
" ?' y" j" D. o: kj=j+0.3; - A) C( A/ H7 T4 v4 c4 H
} ( N3 _6 d) ^ `1 w4 S
}
1 u3 A; y+ ^/ Y+ J============================================================== - K) u) x9 e* M# `8 K' Z
【程序57 】 : j$ p2 G8 W5 Q- p! Q. h& u
题目:画图,学用line 画直线。 . p7 j# p" ^- I5 X3 O. j/ [8 R3 F2 _7 _3 E& P
1. 程序分析: , D+ i8 B5 K x0 v% Y& _
2. 程序源代码: 1 }9 l6 ?* V4 n
#include "graphics.h"
+ e5 n% H, l' g0 W4 @9 {; \- `' rmain() % ^/ [8 Z; l m; r
{int driver,mode,i;
7 \, t' n' T. efloat x0,y0,y1,x1; " r' X; w! G4 g* g
float j=12,k; / Y8 s* W% \/ t3 r9 H1 {
driver=VGA;mode=VGAHI;
- h" g. j& Z2 g! V8 }( Oinitgraph(&driver,&mode,""); + G' O+ {6 y3 d9 I, R2 v
setbkcolor(GREEN); 7 a, o: I. H" K# B' U
x0=263;y0=263;y1=275;x1=275;
( T0 `# A' r! h4 I+ h6 ]( Gfor(i=0;i<=18;i++) ! D$ N0 u) H0 Y: y6 t: j4 p
{
2 V; \( y& i7 I8 U4 esetcolor(5);
4 k; q! y& I5 j' e8 W- \line(x0,y0,x0,y1); # y$ v' b) g+ ~$ H' X: N
x0=x0-5; ) C" J/ V+ c6 z" ~5 }
y0=y0-5; 3 S5 I5 t5 h0 X0 M: Y* s% J: Q
x1=x1+5; 2 T; |/ Q% X/ l+ ], ]" ]
y1=y1+5;
- K" E' E+ g+ f* [4 Oj=j+10; F" P) Q' `: H. x, v- z |/ s
} 8 _% H4 _5 Z2 z1 M& w, V: K1 r
x0=263;y1=275;y0=263;
0 l" S. j Y# N" s3 Efor(i=0;i<=20;i++)
6 U9 p2 t; F* l( ]{ : T1 P- y3 E3 p i8 W0 ^2 q
setcolor(5);
' a, q1 K6 ]7 P$ l, `( cline(x0,y0,x0,y1);
3 ~3 {3 Z# N/ w: o0 P4 c/ px0=x0+5; + q( [( R# d) l/ i, h
y0=y0+5;
' ?' T8 X2 f6 {+ Ny1=y1-5;
5 n5 K% \' H3 ?6 O}
5 o9 Z: a ^4 T5 ~/ u% j; ?} ( H0 v P) y, V' ?9 Z! X
============================================================== , D7 V, u7 O1 _( l( \8 J
【程序58 】 1 w6 v7 A( C. P' j3 c: Z
题目:画图,学用rectangle 画方形。 ! Y6 b3 Y0 A; a; @; N% d
1. 程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
, z; A; h3 R- S# j2. 程序源代码:
$ S) Q+ H4 P# Q p( u( f" k8 u#include "graphics.h" + Y+ O/ W$ G4 D7 n7 I- u& L
main() " P4 ^5 A# `7 ?( u/ a" q+ D) O
{int x0,y0,y1,x1,driver,mode,i; , w1 e" ~# k* C' H! m! a
driver=VGA;mode=VGAHI; 2 l( {1 b, D6 n* h6 x
initgraph(&driver,&mode,""); 5 m% W3 q4 j. ]4 z. q
setbkcolor(YELLOW); * C9 h* W+ u7 m5 p: o! l0 C
x0=263;y0=263;y1=275;x1=275; ( z0 b& Y6 ~$ D% y E& ?
for(i=0;i<=18;i++) ( m& d) y, P$ O; L3 N9 z. z7 {
{ 0 f9 W. L. y. H& g# Q% k
setcolor(1);
r, a8 T9 }* D- s- Z, Nrectangle(x0,y0,x1,y1); 7 u7 L! D$ L y9 P/ ?0 B( b
x0=x0-5;
1 j, ^- ~ F- Z2 h# {. @y0=y0-5; . R+ J* b. i. u3 v" `! F/ _- }6 C
x1=x1+5;
* _2 b+ r: {' ?: N! Fy1=y1+5;
, {2 z1 n: w' H c9 }}
6 o: @2 w& E: `. u5 nsettextstyle(DEFAULT_FONT,HORIZ_DIR,2);
9 o5 A: R) z' S5 m1 Q/ b5 eouttextxy(150,40,"How beautiful it is!"); * o+ F; d5 X, D8 @
line(130,60,480,60);
( \/ u* S2 n. j& t6 }# n+ D+ Hsetcolor(2); ! O8 ~" ?. r+ Y1 y
circle(269,269,137); ( J% U; V( U2 s7 `. J
}
. [3 V9 f' C/ m6 k==============================================================
9 N y3 w1 A1 G* y5 k+ f. ]$ R, E【程序59 】
7 ]6 `5 v0 l3 a5 `: I) X题目:画图,综合例子。 ( p% O- N' A& I5 q2 U$ J# O2 O4 ?
1. 程序分析: ; B( B$ D4 w, _
2. 程序源代码:
4 I" |- e. f# n# _- E$ D: p" J; D# define PAI 3.1415926
& X3 }* r( S5 @ Z5 }' O1 |" b# define B 0.809 $ p1 n: A3 }! X6 \5 r* h4 ~
# include "graphics.h"
% d& p, W6 v7 b) Q#include "math.h"
# f. |, q% q8 n umain()
- w# [' [' \! O- p$ P' O{ ( @* y/ K; _; @& _" A$ M+ ?. |3 v
int i,j,k,x0,y0,x,y,driver,mode;
& Y, W' ?5 {) j# o! Z3 Tfloat a; 8 G* x8 e0 U& L1 N# B3 [6 t; m
driver=CGA;mode=CGAC0;
( b8 h* ^5 z: q' Y) ~3 rinitgraph(&driver,&mode,"");
3 r$ ~" j: b' \; J! s: ssetcolor(3);
6 m* y$ d' w7 c* isetbkcolor(GREEN);
* Z+ G( q7 N$ b, K5 nx0=150;y0=100; : D2 y `2 G4 D
circle(x0,y0,10); # p9 Y3 F# E t- T5 U
circle(x0,y0,20); 3 @9 f6 R. }* M& f
circle(x0,y0,50); 4 T0 d1 v, n0 D3 E, }; |
for(i=0;i<16;i++) 9 X7 B) x: C: ]- z" V3 S+ C
{
/ m% J6 E F# u6 u+ C) ]$ O& K! S/ Ga=(2*PAI/16)*i; ' }$ A [% {6 }0 I; T
x=ceil(x0+48*cos(a));
" `1 @. W" T/ oy=ceil(y0+48*sin(a)*B);
E0 r" L. v' s1 u( ssetcolor(2); line(x0,y0,x,y);} @2 O3 F# F6 f
setcolor(3);circle(x0,y0,60); 0 P* N. O* j$ \) z \3 l/ e
/* Make 0 time normal size letters */ $ L0 w1 R/ E1 A! D; L
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
# k. T) b- \9 h* q# zouttextxy(10,170,"press a key");
o+ D/ ]$ Q2 i4 `" T6 T; T9 zgetch();
1 |! P% ?6 W$ G/ y1 ?# Zsetfillstyle(HATCH_FILL,YELLOW);
$ |: P2 n( n& r8 ^6 ?floodfill(202,100,WHITE); : g1 N3 i- E$ y! o& e! o, J
getch();
V2 x8 g) ^! w2 @: H1 l+ Mfor(k=0;k<=500;k++)
* Y [9 |1 G f* T) m- ?) e{
$ s+ v0 B& t+ J0 {1 w! Bsetcolor(3); 2 _" L8 d0 N( ^: U# F
for(i=0;i<=16;i++)
: |7 J+ o0 ]$ }+ M- P7 L{ / V) S! K% e5 X+ J6 F0 b5 }
a=(2*PAI/16)*i+(2*PAI/180)*k;
, a/ I4 N0 c" [& |8 Dx=ceil(x0+48*cos(a));
% W' o k2 M: f2 M a4 a; |# Ey=ceil(y0+48+sin(a)*B); & ^, M3 O( M2 O. k* O& K
setcolor(2); line(x0,y0,x,y); 3 d2 V* ]( M6 n& d
} " F; I- I8 {0 o) C
for(j=1;j<=50;j++) % ~: z- q; d6 p( I5 R. Q% D
{ 6 F/ E3 D9 G/ Y" [# @
a=(2*PAI/16)*i+(2*PAI/180)*k-1; , P9 h- a( s1 \, d
x=ceil(x0+48*cos(a)); $ g. [: h( ]! K# L$ E4 Z% m
y=ceil(y0+48*sin(a)*B);
$ R/ L) k3 z2 C5 N' U/ a2 |/ Dline(x0,y0,x,y); . u2 Q2 R( r# Q+ k$ A+ e6 L
} & R" V- z2 ^- ?. U3 y
} : q: K% Z% f* u/ n6 ^6 D; |
restorecrtmode();
8 U: h9 m% U3 ]+ S& H# a}
7 D. j$ U- Z% X6 ~' T+ V5 ]============================================================== ! u: G3 u* l4 q2 |' O& P; u1 m, |
【程序60 】 : }" i: m1 g6 O6 K, i
题目:画图,综合例子。 & h# O W- Q1 d
1. 程序分析:
* { N, U/ u$ v- z* N2. 程序源代码:
! V3 @' g' X& e) b7 u#include "graphics.h"
% R8 D, U; \( o7 y5 _- g$ t#define LEFT 0 ) M: y% K# d8 O8 o+ i. _" j F3 J
#define TOP 0
+ N* j7 ]" g6 }. Y* U#define RIGHT 639 : V4 H0 @4 T& z* ^" E5 }
#define BOTTOM 479 3 o9 n$ K# i7 \ p1 m: A( {0 r+ K
#define LINES 400
. K+ l( K- g% P- U6 }#define MAXCOLOR 15 . c a8 y8 {8 n+ f$ Y
main()
% B' Y: f$ L% l% m{ ( H Q9 z8 a' Z" L
int driver,mode,error;
. {1 ?# z2 |9 s K5 hint x1,y1; 7 `2 o3 `( T5 E% \0 y7 a
int x2,y2; % h% F: ` j( w5 f6 P4 U
int dx1,dy1,dx2,dy2,i=1; 3 b9 M0 O2 D/ m8 G; W
int count=0; + \$ P0 Y" U% T+ J) I4 h* @
int color=0;
2 _' H7 o' q/ Q4 ydriver=VGA; ; S+ Z1 E8 E n1 F) ? m
mode=VGAHI;
/ o) c7 ]$ a! X% U; cinitgraph(&driver,&mode,"");
: m+ Z. @( V: Ux1=x2=y1=y2=10;
# h' A# W. r7 j' E# qdx1=dy1=2;
) J" I# t0 G2 _7 g/ Sdx2=dy2=3;
, \! H0 x* o {& B; owhile(!kbhit()) ) W! H0 ~) X2 g2 p
{ $ D# |- \" E9 L, q) ^. e/ p/ h% P$ E$ Y
line(x1,y1,x2,y2);
# O Z! \* ~' K: V5 D! ?( H5 E- D" ex1+=dx1;y1+=dy1; 3 |; y9 P: k# E/ X2 s: ^7 C |3 H
x2+=dx2;y2+dy2;
; n" x1 L' G- R: i$ t+ b" w. @if(x1<=LEFT||x1>=RIGHT) ' ?" L' R( T' s8 E
dx1=-dx1;
% H" p V6 }! @9 z1 ?if(y1<=TOP||y1>=BOTTOM) ; L& ~& L5 t8 }$ Z, J
dy1=-dy1; ' v O4 K/ B2 m6 c* ~
if(x2<=LEFT||x2>=RIGHT) 9 u0 o4 Y6 P( X( G
dx2=-dx2; ' E2 @' w4 @2 X' G& t8 M- n
if(y2<=TOP||y2>=BOTTOM)
( l& C. l$ a1 b0 r& v# Hdy2=-dy2;
/ y6 Q. Q. @% T: C) b7 X7 Mif(++count>LINES)
: f1 p0 ]9 Z$ I2 M6 f+ h( `{ ; {" w3 {# `5 g- Q( q
setcolor(color); ) F& m5 I0 E- ~
color=(color>=MAXCOLOR)?0:++color; }; M! I# ^& n
}
6 c8 T2 i0 v% B8 W7 S+ D& ]$ V}
0 p* A5 A. o* v& rclosegraph(); 0 I$ M* `- s# v g
} 【程序61】 , D. O6 _/ S% k
题目:打印出杨辉三角形(要求打印出10行如下图)
$ Z; o# C, G7 m2 m" U# x1.程序分析: ) h! }% G' w; S3 v; g: z$ ^
1
2 |* q3 ^! _" z# e$ D1 1 1 c& C; f# ^; L2 W5 V0 C
1 2 1
( S! S: ^) I# U3 }: @3 w/ C+ x& B1 3 3 1 # Q; f1 q' x3 Y) ~' f
1 4 6 4 1
$ L: v- I5 g- t+ M8 O0 H! o4 ]1 5 10 10 5 1 9 E4 W! G$ }: C. {" Z8 F
2.程序源代码: ; P" }% t8 Y' W0 B/ p% j
main()
+ ?/ S, d3 [! `4 I# F{int i,j;
* b: i4 c6 h; u* u; Sint a[10][10]; 3 x/ i$ U! \' Q% S& k& _
printf("\n");
; L8 z$ |2 a* _8 J6 b- Wfor(i=0;i<10;i++) # e8 o* J' D# J+ G
{a[0]=1; $ i$ t5 M e8 a1 s3 _
a=1;} & s" R0 q. V3 g
for(i=2;i<10;i++)
$ S c! a, r4 C: W* cfor(j=1;j a[j]=a[i-1][j-1]+a[i-1][j]; 0 @3 N* }5 y& M0 v
for(i=0;i<10;i++) * n h7 a4 E, P
{for(j=0;j<=i;j++)
" F/ v0 Q" C. M' Bprintf("]",a[j]);
* }7 \. n& u$ q( T: E( O$ _: wprintf("\n");
5 R! T; x, ~9 e& G} & \ N: A. S3 x
}
7 [" x3 U+ I8 I% b& o==============================================================
6 U. k! K5 k+ U5 `【程序62】
$ F. g; O9 f8 H o8 a: \题目:学习putpixel画点。
, U! z% [3 _$ w" Q. j0 q1.程序分析: 9 b& H2 ]) i w; e: o$ J; N4 G) l
2.程序源代码:
5 R4 P1 ]; j/ o#include "stdio.h" - |, U6 n' x Z' ?/ C! ~& Z6 i
#include "graphics.h"
6 `( W$ x7 Q: H, j2 |8 |main()
/ C, I- o# _: J7 t, C" m{
$ ~" q% ?0 F0 } p& g' iint i,j,driver=VGA,mode=VGAHI;
/ D2 J; q( H2 t2 w; linitgraph(&driver,&mode,"");
" {8 ^0 L1 Y6 y3 O. Z8 ~" r6 P3 psetbkcolor(YELLOW);
* r3 w* [$ L/ D& l l) dfor(i=50;i<=230;i+=20) 6 C& v" f. y* c6 d
for(j=50;j<=230;j++)
2 P T, L3 P7 W7 ]5 U3 M7 A4 M4 Yputpixel(i,j,1);
) A& z7 Q T) q- Z& R! N" a) qfor(j=50;j<=230;j+=20) - y# b. p# s# h& n
for(i=50;i<=230;i++)
& |; L% n' |# \) v& `( ~putpixel(i,j,1);
1 _; w' Q- {3 F" X9 S8 B} 1 d& f f( ?5 i" M+ W
==============================================================
$ R# ^2 O( Q3 o0 z1 }# f【程序63】
7 }6 e( c$ L! D7 x5 J# }' N% Z题目:画椭圆ellipse
8 t3 T- l* V& `( E9 N1.程序分析: ( ^( g- u7 J/ X. X& J7 U4 r
2.程序源代码: 5 `+ p6 z* A% v8 R- M
#include "stdio.h" % W2 y. O! o& U, c8 W8 l/ I
#include "graphics.h" v2 h: H, u. K- k4 \% s
#include "conio.h" + D) j% X; h; l. p9 V, C
main() 9 a1 Y# n/ M0 ~- o8 p t
{ 8 |1 J' N, c1 b* z0 T
int x=360,y=160,driver=VGA,mode=VGAHI; 0 Y4 W- W6 {! u1 S7 K8 c: z, g
int num=20,i; # a& ~# W8 w8 D6 M ]8 \( m
int top,bottom;
+ w: J" B$ e* R" W- b# dinitgraph(&driver,&mode,"");
5 C |4 W: n% ztop=y-30; " \1 J/ Z5 k2 I! {/ _6 l
bottom=y-30;
1 x) Y2 W. f& Qfor(i=0;i{
1 y3 ~4 f5 o* n ~: F1 x" `! Nellipse(250,250,0,360,top,bottom); 9 K# W( X5 X4 {0 V; l& P& D% j! ?
top-=5; ' ~* l8 J* ~8 |& r8 j
bottom+=5;
' r/ @/ v8 {6 {) Z e H+ x} , l3 C( i3 A/ x- R1 X5 w& ?1 ]+ d
getch(); 0 r5 S! }; B j* @9 x" |+ V
} 5 A, {% i$ Z8 \4 O* [. v
============================================================== ; H: r# f/ A! |" [
【程序64】
! a6 c4 u! e7 n l5 R, m题目:利用ellipse and rectangle 画图。
& T7 {- a. u+ x" B1.程序分析: 6 ~" J+ q3 G$ U; u; l f3 s
2.程序源代码: , G' Z5 L# `) Y0 c5 V9 K0 X& v2 Q
#include "stdio.h" : s0 Z2 n2 G# j0 H
#include "graphics.h" 4 @$ U' `6 K; ~/ _5 a. j. z3 K
#include "conio.h"
& Y8 f- \/ @# ]main()
0 r# ]3 c, e2 g. k{ ' O3 I/ X4 {' g0 J* ~. j' z7 V
int driver=VGA,mode=VGAHI;
, X9 K! z/ i- r. ]8 {int i,num=15,top=50; 4 Q' m0 |& H, h6 y( X7 h/ j% I
int left=20,right=50; , U# T Y; t2 B/ f8 b
initgraph(&driver,&mode,"");
) i* K, \( B, r2 w1 Nfor(i=0;i{ 5 y9 ~' L. X$ W* I& k
ellipse(250,250,0,360,right,left);
+ O9 B8 g) p5 e- F1 ~ellipse(250,250,0,360,20,top);
$ _$ u9 c% `2 D$ nrectangle(20-2*i,20-2*i,10*(i+2),10*(i+2)); , I4 i! O& m1 t2 C7 {0 c& N- T
right+=5; 5 ~3 m4 |; D$ E/ q; P4 ^
left+=5; 2 v5 X: J0 p8 Z. x: k+ u6 e! i( C, Y
top+=10; ! [' C) Q9 X% Q6 \' q
} & m1 ?! [/ E+ G3 K1 |. e% \
getch(); / b; l$ d! D# E
}
i1 M) v0 u) d r6 x. A+ }============================================================== & `* D8 `2 A1 G& Z1 }5 {: V( i
【程序65】
7 `* u8 s, C A! ~* N( x% D, G! T题目:一个最优美的图案。 ) L7 X- \' i1 z# K3 E; _- G
1.程序分析: " ]! U) f8 E o Y; b( D. n) F
2.程序源代码: ; M+ C/ ~/ ?* X; ^
#include "graphics.h" 1 j7 ^9 z4 k* j0 l
#include "math.h" ( X8 u# u" e9 w# A8 s3 w" e7 I. u
#include "dos.h"
3 [$ [ M2 {+ X* G2 g/ p" O#include "conio.h"
% m; u8 ^5 {3 W& O#include "stdlib.h"
+ G: i% }( b' O5 `1 d" J9 k) W( V3 [#include "stdio.h"
! C1 p2 \, H: ]# P9 z" G; `#include "stdarg.h" # m+ s1 t0 S8 m# u
#define MAXPTS 15 % \+ Y* s0 J/ ]! C/ W! e: W: m
#define PI 3.1415926
' Q$ H% c. s+ E+ Astruct PTS {
- V' J$ F1 |2 ?& Y* K" Wint x,y;
0 r+ K6 _( D% U4 N/ w8 P}; $ N4 t6 Y/ \; Y, d
double AspectRatio=0.85;
, ]; r1 }7 q b& |7 Zvoid LineToDemo(void)
2 U3 D7 K, a: d9 A{ 9 i- W; `2 ]- K5 R! M
struct viewporttype vp;
1 O6 g# E7 |9 r; Zstruct PTS points[MAXPTS];
4 B/ X! [6 f9 W7 R. U2 d# H: iint i, j, h, w, xcenter, ycenter; , Z1 C0 ] B2 y* m4 B5 v
int radius, angle, step; 4 _1 w: z# q! ], ]5 y
double rads; + o4 t6 P* R8 ~: k g+ W8 J
printf(" MoveTo / LineTo Demonstration" ); 7 {' @% G: Y( _( o f# v9 K
getviewsettings( &vp );
^, _4 T: t& p! l. gh = vp.bottom - vp.top;
- F+ I( d: P. Z% c* f: Mw = vp.right - vp.left; : L2 j @3 Z; E/ Q
xcenter = w / 2; /* Determine the center of circle */ z$ x7 @5 E$ g
ycenter = h / 2; : S" h6 R, V( K7 @; h& o
radius = (h - 30) / (AspectRatio * 2);
4 I0 q' v/ Q. c" x+ Nstep = 360 / MAXPTS; /* Determine # of increments */
0 S' x% ~6 O9 d, C) J3 `angle = 0; /* Begin at zero degrees */
' A1 }/ S% Z/ I0 Z: }. u: o5 Hfor( i=0 ; irads = (double)angle * PI / 180.0; /* Convert angle to radians */
6 [ u; A, P& E% z; L6 G- ?, \3 gpoints.x = xcenter + (int)( cos(rads) * radius ); 8 n. U/ W8 \0 a' l6 P8 E$ M2 E
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
8 E4 o$ V$ R0 S# z4 e% O2 Vangle += step; /* Move to next increment */ # C3 r% U3 ^* G: q) I _
} , e$ f/ H# n1 }
circle( xcenter, ycenter, radius ); /* Draw bounding circle */
) N. \8 |, ]" q) B+ cfor( i=0 ; ifor( j=i ; jmoveto(points.x, points.y); /* Move to beginning of cord */ # H" s, i) g; u/ X
lineto(points[j].x, points[j].y); /* Draw the cord */ * P9 Z* l9 q7 `: H U% N( N
} } } ! N3 C0 j* w0 @, [# X& n
main()
! P+ m* \; |$ V- k2 v3 L3 }) U{int driver,mode;
) V$ A3 O8 E8 w/ s+ I* g9 F% [driver=CGA;mode=CGAC0; 9 O9 u+ ?2 b* P
initgraph(&driver,&mode,"");
$ e5 D r$ a4 f& }) `: T/ c3 W# g" tsetcolor(3);
: ~' ?3 Y9 j9 U& Lsetbkcolor(GREEN);
; U: {. |: u( J6 nLineToDemo();} 3 H- T# A! \! Q( ?- @% e K6 W
============================================================== # b% e. i: f$ ?
【程序66】
, R4 L% T, O0 h" G& Q9 o题目:输入3个数a,b,c,按大小顺序输出。 ( c' z; g* k1 `0 B1 Q
1.程序分析:利用指针方法。
2 w4 O7 e$ Q* H$ r1 E. |7 p2.程序源代码: * J$ ?$ S* Z; s% u$ D
/*pointer*/ / j1 a2 a1 Z; c
main() 2 Q- x" f4 I% V7 Q2 B q9 O
{ + o) O; j4 H: Y
int n1,n2,n3; ! Z9 T D- U- A& v! H$ n
int *pointer1,*pointer2,*pointer3; 0 ]0 ~- b9 ]" E+ i8 G9 i5 ^# E# S( |
printf("please input 3 number:n1,n2,n3:"); * R9 t; V% X Z7 ^3 T. x1 ^
scanf("%d,%d,%d",&n1,&n2,&n3); - ~" L. K7 e- n; Z2 ^3 w
pointer1=&n1;
% u1 j5 ]& a2 e3 Cpointer2=&n2;
3 D. Z$ q. ]& ]pointer3=&n3;
. ^2 t/ }5 D+ U+ U4 m) Z6 Oif(n1>n2) swap(pointer1,pointer2); # y" [1 L" Q ?4 U; W
if(n1>n3) swap(pointer1,pointer3);
9 u/ X$ E7 e# C- gif(n2>n3) swap(pointer2,pointer3); 1 D/ N! O) c9 H& T Z
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); , T0 o1 h3 Y/ |/ R4 F2 p0 ]( i) ~4 C
} ( B3 @( V! V/ z4 `8 s" u+ N% T' h
swap(p1,p2) 1 D" j1 r! L& \, S
int *p1,*p2;
/ F7 s1 {. x) P2 Z{int p;
9 q, P, w0 n3 x' op=*p1;*p1=*p2;*p2=p;
' G% |) u. P5 o% R} , ], B8 c$ ~$ v, D
==============================================================
2 O6 d: I2 j0 I0 S2 F$ y1 J: x【程序67】
; `0 B: i+ I" F2 H1 N( U题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 4 M0 `- A: {" w3 {: M, H; D1 I( b1 g
1.程序分析:谭浩强的书中答案有问题。 8 t$ {, c; J1 o5 h$ r
2.程序源代码:
. S# _7 C# {. l6 j2 M6 m" ]9 Bmain()
; B9 E6 y1 m+ y( Q{
4 X9 d5 K+ v) c% t0 Y+ i$ tint number[10]; 6 O* Q& Q* y& t4 G
input(number); - G+ ^" `. p7 _* [/ U
max_min(number); " _. g5 n% a7 v) [: |& ?% W9 Y+ A5 Q
output(number); + Y. U) e% K' e& d
} 5 j* @; M$ {# S* t5 I
input(number) 1 I% B5 x0 k9 R! E: ^) m
int number[10];
$ n* Y3 f: `+ B3 q/ B! y{int i;
, H+ n* K1 G, ?- ]- Dfor(i=0;i<9;i++)
q7 _0 f& J8 o9 F$ Kscanf("%d,",&number);
& m8 g' V% X0 R& K' q9 D0 p% I9 ?scanf("%d",&number[9]); ( b- c& q5 A5 z6 _ B0 U
}
1 @! H7 _2 Y5 Y# g4 j2 ?max_min(array) 7 e; h* L( _+ `2 @
int array[10];
& i, W7 h9 S4 n& i5 c* E{int *max,*min,k,l; 9 \* Z1 X2 T* j* H4 k& W7 x" l$ Q3 e
int *p,*arr_end;
* E% S) o. {! c$ W' x5 qarr_end=array+10;
; }5 A4 Y$ L; l7 Imax=min=array;
. l2 z8 Q& [4 Dfor(p=array+1;p if(*p>*max) max=p; ; _5 W" H7 {0 ~% C
else if(*p<*min) min=p;
) F3 r u, {5 {( ~0 Kk=*max; ' D; I/ ]- x' P( ~ ]2 d
l=*min; 6 G2 O! A+ k1 z5 d1 a- f* u
*p=array[0];array[0]=l;l=*p; + a8 Y" o9 l1 P8 l2 Z8 C
*p=array[9];array[9]=k;k=*p; ) T$ n S2 E) T) [) L
return; 1 r' A5 _6 s F
} + d. ]! t, j ~- T2 I
output(array) 2 _- a. j; {5 }; A
int array[10]; 2 _, s* X/ x% t- ?" T& U) H
{ int *p;
# _/ |' }1 A7 g3 b5 m; @* s4 Jfor(p=array;p printf("%d,",*p); # ~+ K( Y0 ~7 j# a4 A+ u5 V
printf("%d\n",array[9]);
# K# K d: e* P8 D0 c! _5 A+ U} ( D" r, \2 a0 H! Y! h7 ^5 y. Q
==============================================================
4 W- x( N: y# B
g! c7 L9 t3 {, K0 a0 |5 ~2 X |