|
【程序61】
. L9 s# F% x3 u; f4 Q. W题目:打印出杨辉三角形(要求打印出10行如下图) ( h8 S0 T: `' {5 Y& @% k4 A
1.程序分析:
x! M4 U. \' r 1: E: r% ?6 o0 \
1 1
' F( Z# u7 i/ S/ Q/ E3 L# g, ^3 w 1 2 11 `# ^' b: p- F) z8 z9 x6 E7 d; |
1 3 3 1
0 O0 g, a! I- q: O, N' l, Y 1 4 6 4 1! E: q& \2 k! L
1 5 10 10 5 1 , b! O/ w6 A8 h6 C
2.程序源代码:
% |: `. \9 V: h4 J3 \3 ?' r/ t5 ?main()4 k6 m2 t3 y6 a( k, w
{int i,j;( L$ q. ~; b7 a& l3 Z% d6 P
int a[10][10];
8 b1 \/ a" o" w8 o% N, J1 oprintf("\n");. }) G l- T2 i; r* ^& i4 l' u
for(i=0;i<10;i++)
3 e: ?! ] i. S! g9 R' H9 s {a[0]=1;
' `7 y) j% V# v: ?' d a=1;}
4 Z# j I. x; W& q9 g! Y; e8 a5 Yfor(i=2;i<10;i++)2 W/ w! n7 Y$ B. s" I
for(j=1;j<i;j++)
& ?, \( L- w6 Y: n9 |& Y$ H a[j]=a[i-1][j-1]+a[i-1][j];; T: `( r0 ?0 Q; o$ ?
for(i=0;i<10;i++)4 ~ e; T, q' ?0 i1 X
{for(j=0;j<=i;j++)
/ t! a3 i- f8 ~0 G9 Z printf("%5d",a[j]);
$ e C1 j8 N$ A$ q& {% U. U printf("\n");
6 v9 w1 R1 o) s6 W }
. z. R% N2 l4 j h0 W; X1 [7 B}! G! b2 X1 i) P a8 H5 u F1 k
==============================================================+ d6 e" r o( Z, |, {1 U
【程序62】
8 r5 k1 e \3 g, w$ f题目:学习putpixel画点。
6 c! C8 s3 u( N1.程序分析:
' x6 s; t! `/ r1 m, E/ Z2.程序源代码:. V$ d+ D. t; u1 u1 a( |3 ]
#include "stdio.h"# ~' d+ i+ _ M) N! Y; {3 s
#include "graphics.h": H- S+ O: ^0 S' M5 M1 p- o
main()9 E; J, @" x( i
{) N% F4 ]/ e+ J/ X+ E' A+ E
int i,j,driver=VGA,mode=VGAHI;
: R& V# U& N# y4 Z2 T7 Oinitgraph(&driver,&mode,"");
4 S% ]) R0 \5 q" lsetbkcolor(YELLOW);, @; U, i! S. @% u2 q$ ~
for(i=50;i<=230;i+=20)
# q, C) E8 p4 {7 X- t0 O for(j=50;j<=230;j++), n; k% x) T8 C! d
putpixel(i,j,1);3 ?9 R7 l$ B6 \: u7 F5 v
for(j=50;j<=230;j+=20)5 D, }' t* g" b6 w0 V$ s( o
for(i=50;i<=230;i++)
2 G2 [ [3 W7 q) c+ ^ putpixel(i,j,1);
. {. f/ i! M+ v: f) Y- R9 i}" {$ A( Z4 Q6 E, M' d! v
==============================================================
/ f& V7 Y2 n' R" k$ m# {4 L* Z% N【程序63】& L% a: j. t! T' H& I1 e4 e; U) i
题目:画椭圆ellipse u6 N# l! F# \6 H* i
1.程序分析:
6 a. `* h ?' a2.程序源代码:
* ]( t- S# m6 w#include "stdio.h"
. M2 M% @% r9 F. w6 ?0 B#include "graphics.h"
# A+ @8 Q' t% d6 q/ P' m! ]#include "conio.h"2 |' H' M* t; y P
main()2 i6 R* F1 r6 K
{
" }$ @: z6 z r; ~. N- _* Q% gint x=360,y=160,driver=VGA,mode=VGAHI;
8 I9 S+ t. I. b v" Wint num=20,i;
; K/ m& z0 I" m2 _( k5 `int top,bottom;( o" x1 E# w+ p/ G' G
initgraph(&driver,&mode,"");# \) R# M& j( C% f K
top=y-30;( Z; r4 y% g( \
bottom=y-30;
8 C% P0 V6 l: h( afor(i=0;i<num;i++)
3 o* b, P1 K# g8 r{
|. ^: ^ K* V5 g0 P% zellipse(250,250,0,360,top,bottom);6 p( k2 w! m5 T; u0 |
top-=5;
/ x) T6 U, o) }1 b+ {& z! a" sbottom+=5;" e- x9 p. V& K8 `0 u( I [
}
0 ~, z! ~- s$ T: T9 O0 x. z1 w% J: i( ogetch();! J! [: a+ b$ y! x
}+ Y) l1 s$ V; `/ Q( k; E
==============================================================
& N p$ [( x5 m9 f: m【程序64】 \8 g* B* l9 I) d( S5 `0 P' U
题目:利用ellipse and rectangle 画图。
% e1 ]' e, q% q' f- o, P/ V' z! _& s1.程序分析:1 R$ k9 j Z* j
2.程序源代码:
5 d$ \! g/ O; i#include "stdio.h"( x& i% G" J9 H' U1 k
#include "graphics.h"
6 A0 l8 p0 u- g6 ~' ]# C0 W8 N$ s#include "conio.h"
3 X T5 N: K4 m. T# t. ]main()
/ n/ L0 O! T: |) i" H( E0 L; _4 `{5 Q+ n$ x- q2 ^6 `7 j
int driver=VGA,mode=VGAHI;
7 g) M6 b+ L0 ^1 Sint i,num=15,top=50;" Y( z6 N+ }" d. D8 O
int left=20,right=50;1 d+ l1 ~0 T# w) s
initgraph(&driver,&mode,"");& @1 b( I; h" b6 W
for(i=0;i<num;i++)
7 }5 U8 W" Z9 T" H3 w& {{% F, v4 T( ~ ^2 Y2 Q0 W7 ?
ellipse(250,250,0,360,right,left);3 _3 Z9 t, v# E( F
ellipse(250,250,0,360,20,top);9 K7 @+ {' P, Q# ?1 `. Z$ W5 q) {
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));, C: j L- `9 b/ Q: a e
right+=5; p, I7 V: ~) Z- \9 V$ ?( P4 l
left+=5;
* U2 m, @2 ~9 wtop+=10;7 z5 y3 c& j8 w
}
0 Y( x. W1 T* i* X: Tgetch();6 V7 t3 v0 ^2 [1 _ e& ^- u' u
}/ M' V6 v- C7 F! ?6 U# ]& Q
==============================================================6 p/ r% M0 c/ W% j8 g, P6 Y
【程序65】7 `0 S$ B% c3 g0 V8 p5 j8 y+ }
题目:一个最优美的图案。 ; Y) x$ m: V, z* u, A% d. v
1.程序分析:7 C' _ o, C4 H/ m4 p3 d1 o( c3 u! @+ }/ Y
2.程序源代码:
& i! M, {# H* m$ A4 @#include "graphics.h"- `, i; H$ ^' p; n4 j- [
#include "math.h"
0 |0 ]: W7 S+ L, |7 I* [! x#include "dos.h"+ N. w# _4 X5 X" s0 W! u5 i2 X- W( F
#include "conio.h"1 B: S! t) `, @# m5 b! g2 t
#include "stdlib.h"0 j% a w* ~( A3 {- K: s) B2 C
#include "stdio.h"9 t% j! i. h) I9 A9 o
#include "stdarg.h". p% |) f+ Y1 c7 n6 V
#define MAXPTS 15+ r# `" p: z1 N( S
#define PI 3.14159261 A1 v$ e* n# X0 }, @; b
struct PTS {
- I3 X0 j5 S- I1 Rint x,y;
; ~) P4 z: M/ x1 R/ M- L};8 h; r/ W7 q9 L/ x$ w: s
double AspectRatio=0.85;) ?' I6 \8 q" ] W5 ]4 F1 M! n
void LineToDemo(void)/ {$ g& m% E. L' m( u9 ^- e% r
{
. X+ p8 n% f) s2 _struct viewporttype vp;8 H8 I% p6 U8 \
struct PTS points[MAXPTS];
- v3 g \ P* l; e1 Zint i, j, h, w, xcenter, ycenter;8 a# s" U% H8 P# v
int radius, angle, step;
) M) s$ t2 c' ^$ s! Cdouble rads;4 u8 |; z! A) A' K: ~5 b
printf(" MoveTo / LineTo Demonstration" );
J4 c6 g A3 k) Z9 [9 cgetviewsettings( &vp );4 C0 Y. N9 y9 g0 q% H0 q9 {
h = vp.bottom - vp.top;' ?- e2 c1 z" H( U
w = vp.right - vp.left;& l* Y# R* {3 W; I4 B) Z% u4 W
xcenter = w / 2; /* Determine the center of circle */6 c! V, m9 @3 H* n
ycenter = h / 2;
' e2 ?& N9 _4 G3 R- d: a+ Yradius = (h - 30) / (AspectRatio * 2);
" A; ]7 F2 M- x8 I9 istep = 360 / MAXPTS; /* Determine # of increments */1 A- G2 n* V3 p+ e& Q
angle = 0; /* Begin at zero degrees */
$ b. [; a/ Q+ R6 M; Kfor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */+ }; R. s+ j/ O) s8 B0 B
rads = (double)angle * PI / 180.0; /* Convert angle to radians */4 N& A6 d4 A6 a+ H2 Q. e+ K
points.x = xcenter + (int)( cos(rads) * radius );
" t8 c! B1 w) m. t( B3 M: a3 }points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
& u7 t- x* J. c' Rangle += step; /* Move to next increment */
K$ i( y' Q/ l7 L7 r}; s% p8 U& A' a, [, r
circle( xcenter, ycenter, radius ); /* Draw bounding circle */
8 \# T% w# X/ y6 J; H; mfor( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */# S E2 o& e3 P1 y8 a7 }
for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
! t" }, w: }- A* g$ s2 R, I; Fmoveto(points.x, points.y); /* Move to beginning of cord */
$ A0 L: V5 `. Jlineto(points[j].x, points[j].y); /* Draw the cord */3 G( r; Y+ O5 A F/ w
} } }
9 B o+ } t: W( P6 U7 v: Amain()
8 f; ^" B" ]1 b/ h{int driver,mode;
4 Z7 u6 l6 ?( Q: Udriver=CGA;mode=CGAC0; l9 Y/ c% C1 c0 y
initgraph(&driver,&mode,"");
$ r6 G; H7 @$ W5 {4 rsetcolor(3);
+ ]# P4 @4 U9 N8 i* J+ Ysetbkcolor(GREEN);6 W! F6 h* r' t, J% `# r1 Z
LineToDemo();}
1 e3 o8 {& K- E1 J; Z1 @==============================================================
* |( L5 b5 g1 N【程序66】5 W2 b. V6 h6 ~% u) I/ B
题目:输入3个数a,b,c,按大小顺序输出。 * a! b6 ?! Z/ Y0 G- s t( \. |- N
1.程序分析:利用指针方法。8 r& i0 Q' A& \+ s& h
2.程序源代码:
3 Z7 Q- I: t2 f, X3 C/*pointer*/
0 v# G' f0 {0 W- ]main()! m) O$ @% N7 i9 o
{5 y5 X4 E- u9 E6 f; W {
int n1,n2,n3;
! M2 C& |: _# ~ N8 c9 fint *pointer1,*pointer2,*pointer3;
, b8 Q7 @' X* g# |' d4 Dprintf("please input 3 number:n1,n2,n3:");; }" Z( _3 u: l& [
scanf("%d,%d,%d",&n1,&n2,&n3);1 K( \2 U9 N6 d4 i% q& ^& E
pointer1=&n1;: `1 a7 a7 u! k' f& x
pointer2=&n2;, R f$ y, {$ p% j; l6 N
pointer3=&n3;7 c, _! D( K/ R( p
if(n1>n2) swap(pointer1,pointer2);" F# y6 e3 ~) l
if(n1>n3) swap(pointer1,pointer3);
% `5 c5 E. m) }; W& O5 ]if(n2>n3) swap(pointer2,pointer3);
8 D* w' R% ^% C3 V5 I5 I4 b2 G. Hprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);5 Q$ d2 E R( B
}
0 ^5 m( L* C# i7 ?. P, c2 L4 V/ w5 ]+ Qswap(p1,p2)* \2 ^8 p$ U; {
int *p1,*p2;
' ]1 v' [; F1 T4 p4 w+ ?{int p;
" z% [8 `: p3 H6 rp=*p1;*p1=*p2;*p2=p;6 k9 y% ~* z/ D( I1 M5 d& Q9 V
}, k, Z) B! c1 |. t4 ] X0 C
==============================================================$ K# k( F% M2 {! r
【程序67】
4 |2 B$ {) B: P8 C& T2 U题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
}2 e( b) T l; @9 @( }# l% f1.程序分析:谭浩强的书中答案有问题。 * S7 c! S/ ~$ B. d8 `1 t5 s5 g
2.程序源代码:
5 s4 a" a8 I1 }' {% dmain(); v+ D0 S5 ?0 F; ]# D9 ~: h" K. A( r! E
{
0 {8 B3 ?2 S$ ?1 u- a5 M1 C* z3 J8 }int number[10];
' q* J5 K* D+ J& | h4 W7 P [# Dinput(number);
4 A* `/ L+ O6 z3 Tmax_min(number);- x) o3 }$ ^/ e5 P" w4 Y
output(number); X: h7 ^# \7 V! c- @2 H7 K; Z
}9 d7 l1 r5 T, N# t
input(number); J& a2 g3 C; c* Y, c' l' g
int number[10];* ]! C5 J1 S$ R- y
{int i;
7 A4 l( G% x/ Z. |for(i=0;i<9;i++)
: R2 x0 R( x5 [0 M* Z" d scanf("%d,",&number);- r+ z3 Q* v* w) D' x/ Y# E1 v/ C& p
scanf("%d",&number[9]);; s( L' i6 T! b" N. p7 ?
}# g4 q9 f& K1 \. [% X# v; U
max_min(array)7 w z/ I1 I7 C& ~
int array[10];; n0 E( X% k5 t% S8 z/ ~7 b
{int *max,*min,k,l;7 p4 i# H+ Y; j/ [; v6 i8 E
int *p,*arr_end;# g; }8 T* r4 T: `6 T+ L
arr_end=array+10;8 R: }/ X% x- A6 Q. `6 N3 [
max=min=array;2 v8 W$ V( u$ N+ d" j; G
for(p=array+1;p<arr_end;p++)% `: P @3 Q. e/ Z
if(*p>*max) max=p;
* s( D* [! |3 b else if(*p<*min) min=p;2 ?9 @, i1 p6 J$ r. M4 X
k=*max;
3 O3 L. ^) |2 k0 M- Y l=*min;1 Q+ ^7 ^# h# [/ Q( |
*p=array[0];array[0]=l;l=*p;
9 p) ~. h+ S. d! Z *p=array[9];array[9]=k;k=*p;! ?: U, ]8 p' ?3 }/ K3 O# Y
return;. z+ u, s% S4 k2 [9 b, U" w
}
K# |9 `5 W# Q- P& qoutput(array)
! A% `1 n* f# R3 @8 b @int array[10];, A2 s5 p9 m( m- A- _9 @& N0 G
{ int *p;$ U. f- ^$ @1 s/ C8 E3 P
for(p=array;p<array+9;p++)9 J2 `& m! G7 [7 ]3 D
printf("%d,",*p);' Y) p) T( H/ q! ^6 V
printf("%d\n",array[9]);5 R( ~. Q; J; X) u6 z$ {2 |* y
}
# B& P. V) H: U2 r9 F( G==============================================================
1 @0 A; P! G5 b& E* A( T1 I【程序68】
0 n: G5 d$ s7 c" |+ u; u" H( D( g2 `7 y题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数; n/ b* M9 e, Y5 |2 R
1.程序分析: m' K8 J- `- d8 N8 U* m) P Y
2.程序源代码:/ a* \% S6 j& ~# a; R
main()4 a8 J4 g* y1 X3 h4 J2 L
{
7 @- R- ^: c; f& Kint number[20],n,m,i; {( O% F& Q) N
printf("the total numbers is:");! f4 c4 p# T5 i8 L7 k6 V; Z& U, _
scanf("%d",&n);
2 Y5 j! r+ C7 I+ _( sprintf("back m:");
4 @* ~0 ~$ d4 X) {* E8 a# l1 Lscanf("%d",&m); H1 b. k4 c9 @# H/ z! j( O
for(i=0;i<n-1;i++)
+ E/ D) J* ]' H! o& y& I9 y scanf("%d,",&number);
2 {7 u! d" R0 }6 @scanf("%d",&number[n-1]);
! D% d l" |. J3 imove(number,n,m);
/ a+ ^, S" v; Q0 r2 jfor(i=0;i<n-1;i++)
# m$ P/ R, z. e) l1 U, P$ n printf("%d,",number);: [ Q8 R# }0 O% b* v. @$ `
printf("%d",number[n-1]);
/ K; X8 r( Z9 [, l* c' H" D5 a% w}
. H. H& }9 H0 [: K- ]7 t6 ~ {! p6 rmove(array,n,m)
6 Y' z# |: R* j4 J3 Fint n,m,array[20];
! [) S9 S& v, E3 x$ M! X{
4 o0 q/ U: H' c; g8 ~2 l8 C) {int *p,array_end;
0 R( R* z' f2 ^) H0 B4 uarray_end=*(array+n-1);
& I! D9 Z- T. p0 W- X n$ {" ^for(p=array+n-1;p>array;p--). L8 [% n. W, d- p7 {0 y7 [6 R
*p=*(p-1);1 B+ a5 R' L, l
*array=array_end;
9 P. T; d# e+ B+ F' m( E/ l1 X, s- B m--;
% A- [8 ?9 J) a/ @" z% n( V1 f if(m>0) move(array,n,m);
& z* X) ?( h- G8 U/ L: u}
- Q6 z) c5 ~9 T==============================================================
$ }9 t$ [' `6 E/ |# v0 P【程序69】
$ K2 |' @1 U0 B5 h3 R题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出' {" L' h' X$ @9 |7 H0 d# W0 B
圈子,问最后留下的是原来第几号的那位。- V6 e, h. \( c! V3 J4 w x/ ?
1. 程序分析:
9 b0 r+ Z C) Z8 g# c( k8 |4 w2.程序源代码:
5 P& a$ }5 Y* L* }& H4 X+ {8 U4 B#define nmax 50
9 i! h) w) g/ I0 `main(), J$ H' L) G( Z9 c
{
2 A! \+ `, g: l& V) \/ g9 S( zint i,k,m,n,num[nmax],*p;" P2 @8 c( o+ f, F) r
printf("please input the total of numbers:");$ ^* j6 b8 B I) F) }8 Y% ~+ W* q/ u, f) A
scanf("%d",&n);9 U, p& ~( p. k7 c- S) e" y, a
p=num;. x% g8 _# b" j2 F B9 B/ Y5 t
for(i=0;i<n;i++)
) ~6 b& b2 z. p. i/ {) h *(p+i)=i+1;! y2 k3 |+ Z0 U, t8 q/ b4 ]
i=0;
/ }# W5 |: B6 L3 H/ }+ h k=0;
% p9 Q: D9 ?- d# Q) v7 w m=0;
, ]1 x8 E' }8 t- I while(m<n-1)) z C% h. h, z0 i" w* s3 @
{
$ L5 u3 S; O+ T- N if(*(p+i)!=0) k++;) R& d4 ^% E, _: Z% \9 Y( V3 p
if(k==3)
1 S+ z2 R8 q: V6 G" F+ H { *(p+i)=0;
" e$ l& ]3 r" b o k=0;
7 U1 R( w9 X3 p( k3 F6 g m++;* h4 b) j. N6 q5 J
}/ Z. {5 o$ H( o0 r3 R- M
i++;
( o" G8 [, f0 e) _/ Kif(i==n) i=0;. \4 n. u& ^: N/ C+ l, U7 V
}
7 D# p. ]: j8 Z2 `! L; Q+ t- Q& \while(*p==0) p++;9 m' q$ Z/ X( R: l# |% \
printf("%d is left\n",*p);
7 O$ H: T; L( `( G}$ C# J5 Y. Y2 l1 @; q
==============================================================
$ j$ E8 I7 W5 I. _3 ?0 x' L/ j【程序70】
4 S9 Z% @- C4 P; O( v题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
! L( Y* y. G+ E1.程序分析:$ j. H7 T u! _
2.程序源代码:' E# b. X6 Z# Y' f+ g. E/ g9 D8 @, B
main()
, N- f* I3 x3 _" a: u/ R z{/ D9 ~* ~9 K) r, u o' n2 |- l
int len;) y2 F! r9 [2 ?2 g( t+ d
char *str[20];9 I7 |% ~6 ?7 b+ ?" a& U6 |
printf("please input a string:\n");
|( J5 v/ q! ]/ S* O; pscanf("%s",str);& p* B) a7 i" i* p( Y+ e
len=length(str);
1 V5 Z3 S1 F% L2 X6 ]' h5 ]8 xprintf("the string has %d characters.",len);
! q; N, D0 |: h F}
. N: p: A7 }5 ]# Plength(p)
5 u6 s# g. M Tchar *p;
7 f q; a& i( Z{
R- B; T# E0 l( h& l+ j5 K" qint n;! s$ A: I5 F- f9 K4 N. }. E
n=0;
3 F7 A" q1 S) M. [while(*p!='\0')
" u$ l5 `/ |2 W- n) n8 [5 N3 e{! }7 I; O0 N7 W/ i D- k
n++;* {+ r+ f# I: c
p++;# f5 s4 x- ^# t8 P* ^. B& |$ }
}
) ~$ N, f) A3 `9 D% x, {, o5 ?1 |- greturn n;
' q" g8 U! f; S3 U* }6 X} |