|
【程序61】# s# ~* G/ I1 c) U
题目:打印出杨辉三角形(要求打印出10行如下图) 8 w; V8 {! \1 _; `( J
1.程序分析: _4 ] a9 _" q7 w# K) H+ x
1% C8 }8 [; v0 Y
1 16 G+ U" K. {! \/ i4 _$ w
1 2 1
; e' c F' o4 p. F$ S. } 1 3 3 1
! F- I: B; E1 T9 o/ u# I 1 4 6 4 1
3 f8 N; ^0 l3 F/ h5 a# r) M 1 5 10 10 5 1
. k# [. D& a9 K2.程序源代码:2 A6 ^4 \1 a% C% b* b9 b
main()% ^0 O/ n6 g8 o& l% o: m( h3 F5 W9 _
{int i,j;) M$ z2 ^/ f( n1 w9 T, b+ ?" s4 r; `
int a[10][10];- y1 }1 k+ V( ^. v0 g; a+ _
printf("\n");. |& e. R8 ?+ ]8 C' c: F
for(i=0;i<10;i++)* d" i( B# ?5 K+ R- E9 o
{a[0]=1;
' d% B4 h& Q1 h1 H a=1;}, F* e5 w* i1 r) C
for(i=2;i<10;i++)
5 A1 w8 \. w" N7 E for(j=1;j<i;j++)
- A' K# r; z# R( E7 K6 J a[j]=a[i-1][j-1]+a[i-1][j];: [- O+ C& N% h+ H8 ~* f5 x
for(i=0;i<10;i++)
6 f" C# q5 P# n# X& Q {for(j=0;j<=i;j++)
/ }$ N# y7 O7 L2 _% m printf("%5d",a[j]);
) Z1 f) k9 g# y) I# g printf("\n");6 J3 U' a0 P5 w9 H4 d7 w+ P
}3 f* a: t# ~+ R- u. N& W
}! h/ e% b; f" \
==============================================================3 F, q D7 `5 N+ \- i
【程序62】
9 x/ T1 X# U: j" j* l) }2 t }/ z题目:学习putpixel画点。; m. r9 M& m$ u: A
1.程序分析:
0 C5 Q; _8 V! I6 g# G- y! x2.程序源代码:
2 m* b p2 d- U$ b/ y) d#include "stdio.h"- d* T3 ~- P# [! i
#include "graphics.h"( j3 n3 D$ w4 I Z" ?, y% `
main()
- C" h1 o, r4 x# x{- C# Q0 }$ H9 B8 C% s1 K5 L. {
int i,j,driver=VGA,mode=VGAHI;4 }1 X4 ]: b' G8 c ~, g( W" \; z5 r
initgraph(&driver,&mode,"");& o0 k! s- j1 H
setbkcolor(YELLOW);5 C* z4 _7 |3 B! d+ y
for(i=50;i<=230;i+=20). s7 e6 V+ R" u) d2 {4 @9 p1 U
for(j=50;j<=230;j++)# }; K! n0 C% h9 N* u
putpixel(i,j,1);, j. R. n$ q: c6 _
for(j=50;j<=230;j+=20)2 B0 s" e$ y, x* X, U6 T# H' x" n
for(i=50;i<=230;i++)
' ? j5 C# R: C0 I putpixel(i,j,1);- |4 w K2 A ~" B$ O6 A
}
* C& `2 M% z* |% W* \8 C==============================================================+ I- Q( ^2 ~0 s+ C% Z5 s3 K$ v
【程序63】
. H# w6 g1 E$ A# R# _" g题目:画椭圆ellipse
. b/ d1 ]- S+ L* g/ |' A1.程序分析:4 ?4 l, Y9 M2 a4 O) L+ o; M8 U
2.程序源代码:6 O1 l8 o$ j4 B% U! G5 r, [8 t& g
#include "stdio.h"
; h4 w+ F0 F4 d- f#include "graphics.h"" E* F% Q8 i) R
#include "conio.h"
0 i: Q3 \# \8 w amain()' l, {9 z2 S Y* H
{# x x6 z: c+ _% \
int x=360,y=160,driver=VGA,mode=VGAHI;2 x3 g$ W# S) r7 z2 X
int num=20,i;6 f2 s* G) g- r, ^
int top,bottom;
J- E5 C4 _2 v/ dinitgraph(&driver,&mode,"");
% g- O ]; O8 ytop=y-30;
& j+ a; u% M/ t, M4 ?bottom=y-30;
! J6 k4 ^ g5 y, r* [for(i=0;i<num;i++)/ x0 I: s& }' j
{( I' d$ N6 }5 @! Z
ellipse(250,250,0,360,top,bottom);
; |4 H7 k) d% y2 B6 Y0 etop-=5;
$ T2 Y) V, x+ O- _8 n2 u, ubottom+=5;' h- J5 J. @" g; E
}7 F2 j+ G( H! N: h' x- T% I9 P
getch();& D/ T& M* v' W
}
0 s' d! Z8 G8 K, d, _6 {============================================================== `' \8 v9 a* p. q
【程序64】0 i: T) t, P, |' v
题目:利用ellipse and rectangle 画图。9 C6 `' u$ M/ J8 P
1.程序分析:( {* k! c( \; p2 [2 G0 l6 j8 q% G
2.程序源代码:
" i; f4 t, W* P' ^#include "stdio.h"; \' X5 Y4 Q. ^
#include "graphics.h"$ \" [" X* {3 s
#include "conio.h"& U' R0 p" T. f" m$ I$ C$ G
main() ~' z/ [8 r! J% [
{
$ y+ b; L/ m1 s$ t& s! U5 b; F3 _int driver=VGA,mode=VGAHI;
+ \3 v* h: P9 {( z5 `int i,num=15,top=50;
) s" y. [* D0 |$ U6 [5 vint left=20,right=50;
B! ~5 t: G# }initgraph(&driver,&mode,"");& _6 q1 o( n: v/ U0 U" K
for(i=0;i<num;i++)
[( G4 Y% f" A6 H# l{* j: |/ I0 i, t1 c+ m+ k; N
ellipse(250,250,0,360,right,left);5 |; s7 K, y7 F, J
ellipse(250,250,0,360,20,top);9 O# @. A9 E4 x$ q
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
' n, D# A1 `! G6 [2 N& Sright+=5;% y- ^# e9 ~9 m
left+=5;& d) ?9 E" P" K7 O& s
top+=10;
8 W6 S" r l1 i' r( N/ p6 H}3 [# B* F( a, @; h: m/ O' M5 H
getch();4 u1 S. U4 c# b$ v' S( h7 r: I
}, k' x" s) D" C/ M6 c
==============================================================
4 Y$ \) o0 K) H L5 @【程序65】
8 v$ E" f- L' f题目:一个最优美的图案。 8 N. R' g/ i1 o) C# c; P
1.程序分析: R5 |2 J$ k, A& A: a8 B
2.程序源代码:
$ T$ q }! U0 O# h& p; x. L: k#include "graphics.h"
/ n7 }/ ]! T3 G: n#include "math.h"2 M) _3 g6 i( | @( A6 X
#include "dos.h"
2 B6 @6 y) J( ?, ~, O#include "conio.h"0 c E( u( }! k3 z$ B6 b
#include "stdlib.h"
# m G9 x5 {& Y4 q6 G+ i% I#include "stdio.h"" z, o" D( p& {4 o( J& B$ D
#include "stdarg.h"
8 I5 R2 C% }3 D/ w2 T( J8 ]7 X$ H#define MAXPTS 15
8 k* O% A3 f1 m8 ?9 D#define PI 3.1415926, V8 J- z3 ?( R/ W7 C1 i
struct PTS {
, s% z- J/ Y# Aint x,y;3 c* Q" q! K" ^5 g
};# T% ~/ F" ]6 t9 \
double AspectRatio=0.85;
% |$ i0 G; C2 \; g# Z1 Wvoid LineToDemo(void)9 [. h5 s' Q/ h! h
{) w1 X* b) w3 l& t; B
struct viewporttype vp;# Z) W' E' b V: g1 B, f
struct PTS points[MAXPTS];
# n7 `8 s# Q7 y: w% ]9 H' b' bint i, j, h, w, xcenter, ycenter;
6 I9 P) C( N* F' _$ }int radius, angle, step;
2 ~/ B( G) \% R3 M+ C" Cdouble rads;: ~0 l# B1 x' q4 N. Z
printf(" MoveTo / LineTo Demonstration" );
( X0 Q7 g7 }: p& m0 [% U2 V; Agetviewsettings( &vp );
! k' }4 |/ x1 v% A0 w/ A5 X W. t* Wh = vp.bottom - vp.top;( C& N; M0 \9 t6 J+ F6 m
w = vp.right - vp.left;: q# Y$ G0 Z G6 ^1 M# ^
xcenter = w / 2; /* Determine the center of circle */
9 j7 [/ t5 b& B1 b1 Qycenter = h / 2;! Y, B7 `& U- Z8 b
radius = (h - 30) / (AspectRatio * 2);
0 s' T$ U: {$ V6 \ w9 dstep = 360 / MAXPTS; /* Determine # of increments */
& h3 s+ f) F4 Yangle = 0; /* Begin at zero degrees */0 o' d2 j: i3 W$ R4 E3 X8 w
for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
7 a: a5 ^; i0 g9 Zrads = (double)angle * PI / 180.0; /* Convert angle to radians */
- a% D5 `$ l9 Dpoints.x = xcenter + (int)( cos(rads) * radius );: Q" y# l$ m+ W* P L
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
5 X4 c9 D/ _7 aangle += step; /* Move to next increment */9 c4 n* e6 ?4 @/ Y$ b6 l
}0 N& ]$ R3 R& W
circle( xcenter, ycenter, radius ); /* Draw bounding circle */( ^; K, _3 |* w- L9 [. r
for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */- c% e+ A6 Y0 [/ ^2 [1 R" q' u
for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
v f6 Z6 N, K3 @moveto(points.x, points.y); /* Move to beginning of cord */8 U1 p( }$ A4 `) D
lineto(points[j].x, points[j].y); /* Draw the cord */
" |$ \6 k' |- l5 k6 t# @0 E( D8 o} } }
* `; ^8 S: V# smain()/ N/ g% M/ F+ n
{int driver,mode;
2 S# L: _$ T1 cdriver=CGA;mode=CGAC0;
. a9 K/ l: s: ?8 P7 ]initgraph(&driver,&mode,"");
. O: C; u3 n- u1 ^6 l3 W" A4 @& Bsetcolor(3);
2 e* B5 V! \0 V/ K$ rsetbkcolor(GREEN);
& V% \' b- g1 h: p( vLineToDemo();}
$ X. q' T" i8 ? Q/ q3 y==============================================================( _. P: o$ o1 L( E
【程序66】
' x' L J' q& }+ ]: g w% B题目:输入3个数a,b,c,按大小顺序输出。
, E! }2 o: C u4 G/ y1.程序分析:利用指针方法。1 L7 B# ]2 p0 B# ~
2.程序源代码:
# G l* c; y3 u* m" N3 m5 e/*pointer*/
5 R( n* ?* U3 H7 T$ amain()" v- u& l3 e5 u! d1 S
{
$ z5 R+ n, r( I6 Iint n1,n2,n3;, x$ U) {0 t5 Y- _, ]
int *pointer1,*pointer2,*pointer3;: V9 c, l( @+ Z7 o' z
printf("please input 3 number:n1,n2,n3:");- @7 o- \, H5 t: X+ g
scanf("%d,%d,%d",&n1,&n2,&n3);6 d, ~& M: e6 I+ i- O
pointer1=&n1;8 _3 G2 h! r. }- d: w: b, P
pointer2=&n2;
+ N& k$ K( [6 h4 o6 h( t, o6 {pointer3=&n3;" G2 U! n9 F8 Y: z9 k) t8 d+ I
if(n1>n2) swap(pointer1,pointer2);
$ y& Q- k' a2 \$ s* b6 Tif(n1>n3) swap(pointer1,pointer3);
( m+ S+ d0 ?1 Mif(n2>n3) swap(pointer2,pointer3);
' d# A* u2 b$ |$ p. ?' G* k bprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
2 a) u! e/ I# r9 H9 B# Z) l}0 j0 C' f8 N% m4 R2 f0 T
swap(p1,p2)5 E; z) ~- H6 S& X4 A) w, Q
int *p1,*p2;
3 E7 a; Z8 \0 Q4 G{int p;
; L) T p2 Y1 {( q# }* op=*p1;*p1=*p2;*p2=p;9 C% j7 Z; a' ~) O. A! x$ E
}
, R# z9 t6 j$ u0 v: o==============================================================* b5 T( |8 k0 I8 j" R, _
【程序67】8 s& s) c, M! e. \% o
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
9 N% v" A' a5 [: R1.程序分析:谭浩强的书中答案有问题。
5 Q" l$ E# E1 q9 U) Z! ~4 d0 {2.程序源代码:' ^9 x% a( b+ z) C$ ]9 o
main()/ e$ {+ p. E1 ^0 t! M
{
# L2 F1 [8 D, \2 g" N% Q1 w6 Zint number[10];
& v, u k- i0 B8 e# w3 |input(number);4 r9 O% J8 H9 c/ [) s6 x6 i
max_min(number);
- z; c' Q t: @' }7 ?output(number);! T$ g4 T& ~2 D+ \7 D
}
* _- T4 `# O5 z# b2 sinput(number)( }) ^4 z9 O8 [ o; ]" F& Z
int number[10];* \5 ]5 e' Q. _8 `6 ]- h
{int i;
n7 D9 {& [; k1 Xfor(i=0;i<9;i++)
6 w i: L6 O- h; Q6 {4 m5 W scanf("%d,",&number);# e% k. O7 K4 W {; l$ ~
scanf("%d",&number[9]);
: d7 Z9 h/ _$ j I$ J" u* V( L* c/ A" B}
6 s/ G4 s! W# @, D$ I5 dmax_min(array)
- Q3 M4 S& ]+ z0 o. p9 _' Zint array[10];
) n% K- v0 e4 h) T! W{int *max,*min,k,l;* S! v7 @) D3 k
int *p,*arr_end;
% _$ v& l/ P- z, N9 ~$ i' Xarr_end=array+10;, v! D' u$ ]: R
max=min=array;
: X# m6 @; C3 X3 ]% l$ J/ ?for(p=array+1;p<arr_end;p++)6 D8 W' [+ H9 U9 x* _" y
if(*p>*max) max=p;
* a2 L' t9 e, Y: ?3 w; f) j, e0 g else if(*p<*min) min=p;
7 E% j$ d: i; k2 F3 V" K% }! A5 G k=*max;3 u0 s/ p" r7 v% b! o# c
l=*min;
7 v, }# w# m& ?; C& e+ p# f4 v- v *p=array[0];array[0]=l;l=*p;
0 ?; Z" ^) y9 U9 y p *p=array[9];array[9]=k;k=*p;
( j4 s& ~! ~4 Z/ x; [ return;4 ]4 M% r! L" K9 |2 _
}
; y# n, @2 [1 d- x/ Joutput(array)9 n H( H2 n6 X: I. y
int array[10];4 A9 _7 _. y& y/ x- ?$ x
{ int *p;, L+ W. w3 ?1 G: d% R9 D2 j
for(p=array;p<array+9;p++)1 F, T7 T, a0 k% V o
printf("%d,",*p);6 h) h6 `+ |7 H/ p
printf("%d\n",array[9]);
& j4 y, {& h2 X! U4 _; K7 ^}9 T% j& ], G2 `& u
==============================================================
( S! k7 |7 j" m( K7 J【程序68】
1 `% m8 J- }; `: ~题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数3 {2 Z! w: J5 g0 j
1.程序分析:- e4 z3 E3 l, Q" f: F
2.程序源代码:
% u1 N; I6 o, \% M. m) Amain()! a9 b% l; v6 `
{8 k1 a* F% A1 b5 r V
int number[20],n,m,i;
5 ]# W1 w& }& e9 f' J/ lprintf("the total numbers is:");- j9 ~6 h, F4 E {" G$ m5 Z1 W
scanf("%d",&n);/ r2 D) r. U' q y% b6 ?, A
printf("back m:");
/ G9 ~, h' o ?* P3 Jscanf("%d",&m);
5 M; |/ z# {* lfor(i=0;i<n-1;i++)
4 R0 s, P5 s7 O& Y) V scanf("%d,",&number);5 n6 T" x% H/ m, O, x2 z+ h" Z
scanf("%d",&number[n-1]);
0 o; r3 }2 H% s: nmove(number,n,m);
$ U. ? t9 S/ u7 xfor(i=0;i<n-1;i++)9 ?3 {0 L0 Z$ l6 x }; A
printf("%d,",number);
6 \! x6 Z$ [0 E6 Q: r) H0 eprintf("%d",number[n-1]);
' i7 W. N+ M, n/ s" w}6 k8 j5 a @" w4 ]
move(array,n,m)
! M5 W6 ~) c1 H9 b: c7 Aint n,m,array[20];- s" ~0 y+ W1 I# M& y7 A$ }
{
# m7 R* N9 y8 e ~int *p,array_end;2 {2 V9 Z8 k2 l7 x
array_end=*(array+n-1);
. f. G2 v z, {& rfor(p=array+n-1;p>array;p--)
3 { J$ i, K% z1 Q% K! Y *p=*(p-1);
) `; p3 i. [8 P; A8 L+ h0 ^7 H *array=array_end;
' F3 z( ?9 O0 R; Q m--;
. P. n: D$ `; c' x. D if(m>0) move(array,n,m);1 d) L- V9 l8 b/ y4 o, r7 r
}
0 [$ G/ n4 ]! H5 _8 q1 Z==============================================================
+ r# g( R$ g% M) E/ c【程序69】, E$ M+ @ P4 j0 N) ]9 H1 T% d0 r
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
+ v9 ?) k& ?/ B6 F$ m- v9 H4 l( a 圈子,问最后留下的是原来第几号的那位。, V' {, t( a! D; O0 A& q
1. 程序分析:/ j- j) y0 O5 `, a- w
2.程序源代码:+ I. K: m7 ]" S8 m! y& k+ A
#define nmax 50* ^" _$ Z/ {3 p. M
main()- E4 \( M$ H: N) _9 c
{
4 z! S6 s# D n5 \2 u; Kint i,k,m,n,num[nmax],*p;
! Q+ V: E' q% pprintf("please input the total of numbers:");
" @0 Q! U: Y' P, _scanf("%d",&n);! _# @" j- n# V* y+ Y( O
p=num;
. X: F- k# G0 M8 A% ]for(i=0;i<n;i++)
' d* F+ V, y9 K( P *(p+i)=i+1;
& @9 O) R# c/ `7 D: o* | i=0;% h# w. V1 v- i8 O# x) n9 z' r1 k
k=0;, m/ t, E ^( h* v- a
m=0;
: T# X) d! ]: y: M7 R0 x c0 v while(m<n-1)
/ F. E* L- q* [9 d( u9 a; X2 p. ]" n {
# j2 L, U. N0 M* B4 E; P1 X9 z3 W. ? if(*(p+i)!=0) k++;5 h; @0 t: z4 [$ e6 z
if(k==3)
3 r# h; @: L! S: ^9 o+ { { *(p+i)=0;
/ \* s# S" V* ~7 b3 f" X k=0;
1 P" |7 D! W: n" |7 P- t m++;. S+ X2 R4 q6 {" H1 C
}
8 }, ~" S3 k' x* d- Y" C) Ri++;
* _1 b2 Y E+ P; k iif(i==n) i=0;, j4 b# O! f7 q3 y, N1 l
}# [/ [/ B, e3 m6 o! F/ {1 C9 }
while(*p==0) p++;
' h% e5 Y, D6 Tprintf("%d is left\n",*p);
/ P3 Y. H- O. M% T+ o) L3 M5 t8 V J}
4 l* H1 b/ `4 [4 X6 Y==============================================================- X" T& T' _ I
【程序70】$ W `7 _+ Z. [8 d |& u
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
9 N& x9 ]) F& h6 s( ^1.程序分析:
& z E9 [( c. P2 _5 G: C) ^2.程序源代码:6 _; I$ j, s5 q& V& U9 h1 _6 a! o
main()) J/ |8 _3 Q2 X4 z4 I }. i' y
{
; i, F5 a7 A {6 _8 f3 ^ e9 c0 V) ^1 C% Dint len;
+ `) k. I/ Q) k0 Z) F' r, M4 x4 dchar *str[20];5 j4 B5 {! L7 `: A- x+ P
printf("please input a string:\n");
5 F M6 f3 l4 F' U$ t& fscanf("%s",str);
% _( W6 d+ I r. Plen=length(str);& P* g: y9 p9 `" H8 c- Z% V2 `9 A
printf("the string has %d characters.",len);
' A; J& }) [# f2 P7 t+ ?; @}6 @ S4 s& x3 S* a0 Z/ v1 }+ r
length(p)
7 i* ~1 A0 X" j# t+ A J! j9 G" Dchar *p;" f5 N/ Z8 L$ [2 ^ Q3 k. p" L
{- l4 S1 k. T( V1 _
int n;7 P4 Z& u. [" v/ a# v# ~
n=0;7 ~, s( j* I/ e G
while(*p!='\0')
3 ]4 v# H* C0 A O( I# y{" m) w- q+ {0 O4 `* R
n++;, P) \# O+ u# p1 \! _2 P
p++;
! U9 S5 j* O+ k9 P}0 c' D1 x7 v2 I- V$ E
return n;
5 }9 L# `8 `+ G* m* D} |