|
【程序61】
+ T% }/ y7 j2 z题目:打印出杨辉三角形(要求打印出10行如下图)
8 f" `+ T/ n @1 k5 _; ^6 u1.程序分析:
% [5 U6 c% L" j: s0 ~9 G; |$ i 1
6 C; d: K: O2 F 1 1 L7 E8 G* ?5 c% ?( j2 y, ?, W; E
1 2 1
" N: K" o/ V, Q2 F/ a( C0 a- J- j } | 1 3 3 15 `. U$ l; j; `2 v! ^6 C
1 4 6 4 1
1 w2 f9 s k9 b1 P 1 5 10 10 5 1
/ W5 k; L5 w2 k9 p8 l* v2.程序源代码:' f" {$ m4 |- B% {2 o& f. u# R
main()
: q$ z/ o f! I: m{int i,j;$ d% H$ a! p" g4 T% q1 d0 l, Y; s
int a[10][10];
) C! d5 R# p) N) k5 hprintf("\n");
/ X, e& P" ?; i2 _& Gfor(i=0;i<10;i++)
+ ^7 ?* r2 ?& c- W {a[0]=1;
1 P7 T) s9 c. |$ e. d/ `7 x a=1;}% T6 U9 n% g; D/ U3 n, J8 g
for(i=2;i<10;i++)9 h" `1 f5 J* w
for(j=1;j<i;j++) V8 U A" H0 I' v2 I: z
a[j]=a[i-1][j-1]+a[i-1][j];
' y: {3 o6 ~# g$ v5 d. L# V7 bfor(i=0;i<10;i++)7 P& Q5 C& d, r; r `& I: V
{for(j=0;j<=i;j++)
9 H7 I) \7 j- D' Y printf("%5d",a[j]);3 F; n0 g2 _8 i. V% m) o J* {! i
printf("\n");
! x5 k, f! J1 v) I6 ~ }
7 d3 P+ \6 y3 Q: }7 S& l}
: w+ }' z6 j" H% ?==============================================================( ]' m( l% w2 ]+ Q# A
【程序62】
) i% p. U" |% z4 X0 P: I* q: G# z题目:学习putpixel画点。9 ]; q0 T. O$ F# p6 {( V
1.程序分析:
; P1 F% W; n- I2.程序源代码:1 u5 n$ ^6 ~5 `
#include "stdio.h"
4 ]+ T6 e, G- ~: Z1 V! m#include "graphics.h"5 Q. O, {& [% C+ `
main()- ^6 G1 z0 o$ p% k# j
{
& X z7 P; O2 p8 @ m$ F1 Sint i,j,driver=VGA,mode=VGAHI;3 h0 v- U: X, J; k
initgraph(&driver,&mode,"");" A: Z+ \9 b7 r) k% {" @- L& l+ A
setbkcolor(YELLOW);6 E2 d3 q# q* t" v6 c2 D' j7 J2 A/ e
for(i=50;i<=230;i+=20)
! s7 P" f% C$ B8 I" J% I for(j=50;j<=230;j++)# [3 y' k4 G) e/ l
putpixel(i,j,1);
0 E! \( n( Q! L Yfor(j=50;j<=230;j+=20)
6 ^2 R" S5 b4 Y B for(i=50;i<=230;i++)3 W X4 ^7 R7 F
putpixel(i,j,1);
6 B- v. o& x: x}' o. a4 x# b9 U) ^9 P
==============================================================
/ ]1 W6 ~' D) J% _' F& k- f【程序63】: z* f5 V! J0 V* G
题目:画椭圆ellipse
9 W- \) l0 I: A- J; ^1.程序分析:: I* h# e; o- o1 T+ ~, [
2.程序源代码:, z3 I' K- y0 K5 t
#include "stdio.h"
I _7 Q. ?% |& U5 w#include "graphics.h"+ C2 _4 y( n2 y/ e" O
#include "conio.h"" }) L0 z5 [* S3 y
main(): G( D( M% R- v1 E; D0 d; o* ?
{
8 y5 m. v: n' z6 d. Q) N3 Eint x=360,y=160,driver=VGA,mode=VGAHI;
: Q1 ~" k6 ~& C8 s7 cint num=20,i;/ j' z) M4 r; M3 W+ p/ d8 g/ A3 t
int top,bottom;
% i& ]2 S3 w+ P; u9 K8 einitgraph(&driver,&mode,"");$ S! b, T+ Z1 s2 p
top=y-30;
8 J1 _) J/ u/ k O% G$ ^. xbottom=y-30;5 m& E# D9 e7 I7 c8 S0 w B& t
for(i=0;i<num;i++)
9 f) I* E8 K$ G4 p, o{
: a/ {' j8 w5 i3 d' tellipse(250,250,0,360,top,bottom);& L, D" j$ \6 Y m2 y
top-=5;: n& ?2 o! u" F% C1 N: `
bottom+=5;
6 w" H+ m& c! G6 P$ Q0 z}8 O/ N/ K( |( A9 I- t4 T
getch();
2 f+ `/ d1 V: K2 j}
6 O+ _% N+ e" I2 n* O4 y' H3 Z==============================================================
# J4 [( Y2 r8 }* m9 T3 ^2 Z! @【程序64】7 X8 G, E, w8 v3 P6 G
题目:利用ellipse and rectangle 画图。
# U! `6 n2 t' g1 \1 A1.程序分析:
. k4 z# v# c# {6 c2.程序源代码:* e. e0 u+ \( X- u+ m; ?
#include "stdio.h". R: z3 L9 T" v, j& Z& u
#include "graphics.h"/ F/ O9 q. A6 c
#include "conio.h"
+ _; ^; C+ X# q! E, P3 jmain()
0 X% N5 b) U( g' w9 a" |{) z3 ]0 H4 X" f; _
int driver=VGA,mode=VGAHI;
) ]# X- v( w& M8 p! K$ Qint i,num=15,top=50;# @2 ^/ G) O$ U0 u
int left=20,right=50;
7 \$ o, g5 x2 n) l6 {initgraph(&driver,&mode,"");
# l$ W5 ]4 h5 jfor(i=0;i<num;i++)2 E' r( F6 n" J( z m- r
{; G. S0 ?: L$ R9 E
ellipse(250,250,0,360,right,left);# h" `% ]% c$ _0 D
ellipse(250,250,0,360,20,top);) ~5 P9 Q+ j) k$ F* b3 Q
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
/ Z5 g3 y3 T) u& k- P7 `# gright+=5;
% `! T& L- K4 B4 K: g$ Y4 Xleft+=5;
; d+ |/ ~& [% S: w- P4 v) gtop+=10;+ L* o, s2 y" r5 a% Z" M
}7 {$ w$ N- g% I& U3 x M4 x5 X& Y
getch();
9 q& B3 d/ n% ~! E}
9 f0 }0 d. |! c) s9 @==============================================================
7 z& d3 R8 E8 y【程序65】8 g% ]( x2 p! L/ A. V4 Y+ G
题目:一个最优美的图案。
, a- r4 _1 s9 d8 z1.程序分析:" _) L* z) _9 Y/ D1 K! ^
2.程序源代码:
- `# y! f/ P1 K# e#include "graphics.h"1 G+ Q8 P( i2 w6 X4 \5 _5 F
#include "math.h"
" v% E) l2 U/ T9 @& |#include "dos.h". x( ~- E# J5 Z7 E/ i; P; \
#include "conio.h"7 O3 W+ j1 ]/ ~- N, ]6 r
#include "stdlib.h"
7 o* u7 R$ h# F3 q% f% f#include "stdio.h"
$ V# k! B' K8 R% a; @#include "stdarg.h"! H7 w" ?. l; F/ J
#define MAXPTS 15
( @5 m3 n: ]( y4 G: Y#define PI 3.1415926
& b5 f5 G9 z* b2 B9 tstruct PTS {
7 z4 W3 D1 K$ I% h4 b6 |' bint x,y;9 B0 s s6 X& v' e% t" K
};
" y% w( M8 f& @; C( p$ Xdouble AspectRatio=0.85;
* ^5 {8 \1 |. k* g: evoid LineToDemo(void); d: N F8 x+ A9 r/ M
{
: o6 d5 A ]* e: b: P9 zstruct viewporttype vp;! t8 r7 _4 N2 {" ^+ U
struct PTS points[MAXPTS];* D/ b8 d4 h! V( Z. C; _5 t( X
int i, j, h, w, xcenter, ycenter;9 n N4 e. a& v" z
int radius, angle, step;' l% k; |/ l e, y& p; I# L
double rads;7 o4 Y( n' ~6 }! l( L3 R5 ] X
printf(" MoveTo / LineTo Demonstration" );7 M8 ]5 ^. i: [% K& c
getviewsettings( &vp );
4 l: S: v2 }2 h/ k" [h = vp.bottom - vp.top;
$ N/ y2 H; ?% ]9 r1 s6 ]9 z Nw = vp.right - vp.left;
) ~( o3 R, Y7 S3 e S$ t, |4 `1 vxcenter = w / 2; /* Determine the center of circle */: Y8 c6 j$ h% l9 r, o
ycenter = h / 2;
) ?) N. [: V& cradius = (h - 30) / (AspectRatio * 2);4 o% J1 M3 z2 g" b# j
step = 360 / MAXPTS; /* Determine # of increments */& r8 J- O4 p$ v' `
angle = 0; /* Begin at zero degrees */
: y8 R2 B( D1 W% t7 nfor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
4 [9 z7 ^% @9 Vrads = (double)angle * PI / 180.0; /* Convert angle to radians */
9 ~5 C% k+ _/ h% g8 ppoints.x = xcenter + (int)( cos(rads) * radius );
t7 _& g4 a4 Fpoints.y = ycenter - (int)( sin(rads) * radius * AspectRatio );$ F2 D) Z8 C6 G# U
angle += step; /* Move to next increment */- z) X4 n2 s7 c. }1 t c
}
& U! [( O6 l; d' d3 T) P) Hcircle( xcenter, ycenter, radius ); /* Draw bounding circle */" P- X) W4 ]4 h
for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */, T0 @7 c( ~6 k. k6 n
for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */" `% K8 _; M: D% U& b% W1 N9 H* v
moveto(points.x, points.y); /* Move to beginning of cord */4 ]7 O$ E1 b& B3 U- }. X
lineto(points[j].x, points[j].y); /* Draw the cord */* g3 D' a' f, F2 S9 \2 x
} } }
$ y8 t& u, q; w1 I' \main()
; K9 g! O& s+ C! ?3 f+ g{int driver,mode;
2 P7 L( }% F: ?driver=CGA;mode=CGAC0;
8 R3 z1 h5 b {9 Finitgraph(&driver,&mode,"");
# E% x+ Z) Y; @: T2 G- d# E- ~ wsetcolor(3);! V5 `" j8 H3 F
setbkcolor(GREEN);
! D! w$ i- h/ \# }( E% TLineToDemo();}
1 V) U# {/ ^# C; R; Q% p; d==============================================================" m) _* F3 Q! b/ [
【程序66】
# q# z+ X9 A( f3 l题目:输入3个数a,b,c,按大小顺序输出。
6 q- |* o9 i& S* o* s1.程序分析:利用指针方法。# k5 W2 w7 R6 f& V7 y
2.程序源代码:! c/ c" @6 N# V+ x5 R
/*pointer*/, m2 ?+ o1 N4 t) a4 i
main()
- X+ ^0 r- ]2 L" [( ~{7 W. X: N7 G$ m+ _" k" y* f
int n1,n2,n3;3 A$ o, d) }# S B
int *pointer1,*pointer2,*pointer3;. l* Z6 K( g; Z2 E# \) h9 X( ~" |0 C
printf("please input 3 number:n1,n2,n3:");2 m6 j- u3 i! c# r; M
scanf("%d,%d,%d",&n1,&n2,&n3);
% g: n- _& u8 J* O! D3 V( apointer1=&n1;
/ N5 m" @$ P; w ^3 Apointer2=&n2;
& |5 [9 |, \. R7 v$ {4 ~$ cpointer3=&n3;
G8 W2 E5 @$ h* M0 Vif(n1>n2) swap(pointer1,pointer2);+ I4 n" u& X* ]/ E9 `
if(n1>n3) swap(pointer1,pointer3);
8 r7 y* x1 _: a ~) ~if(n2>n3) swap(pointer2,pointer3);
7 y& S5 s$ h6 m- u' G$ Hprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
. A; @# t- Y9 X4 h: Z+ [( _}
5 f9 M- I9 z" l' E5 hswap(p1,p2)
; P% v7 ]' \ l" cint *p1,*p2;) N8 @$ O" C2 p6 W9 {, X. G* f
{int p;+ f9 u9 H( T9 m) n$ ?+ y- Z0 |
p=*p1;*p1=*p2;*p2=p; H. P& G9 k7 I9 s& X
}( V. r' e# M; Q& S8 _1 x
==============================================================
1 j- E* `5 `1 e2 h$ W& I【程序67】
, Q4 h# K9 \/ D6 `. d2 L8 |题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
6 \0 ~. ]$ z6 f2 G4 |/ S. y8 Q1.程序分析:谭浩强的书中答案有问题。
6 Z7 q+ P+ Y/ R- [2.程序源代码:
* J% k) s5 v# f7 [9 _main()
; E) p; @7 `5 k4 k4 G! b8 `0 T{8 w M3 |9 h6 N8 Q& [5 e1 V1 u
int number[10];% N5 k0 U* v. j& @; O0 y
input(number); O! L/ @' V& C
max_min(number); T* _4 F) @. o# l
output(number);
, q7 y1 H J( f' u1 l0 b( H3 o}4 k; ^9 t9 T8 h5 {8 | V& ]2 ~
input(number)* h* A: B c7 G5 H
int number[10];
) w, h& [+ X& ]& D{int i;
7 b4 b& Z' [% P0 }& _for(i=0;i<9;i++)& Y A% I& f8 i6 }5 b) q
scanf("%d,",&number);# _9 ?) Z/ j# b( ?* g
scanf("%d",&number[9]);
/ z% y* T4 I3 k+ j }}
+ S% H$ @' }2 b( bmax_min(array)
. p/ p" o3 P3 f2 @0 |6 e3 Oint array[10];
: c C0 Z9 ?/ J4 m{int *max,*min,k,l;
) } j* X5 k: D# d: pint *p,*arr_end;4 I+ Z- ?$ H3 D y& d1 T, e& [, P
arr_end=array+10;: a& K7 w5 q% k( n& a$ O
max=min=array;
# w1 Z! }: f* d3 r& m9 a3 Wfor(p=array+1;p<arr_end;p++)
/ O# G: D2 }8 {. I5 I if(*p>*max) max=p;
( ]) E, i+ B& y, ~4 Z S else if(*p<*min) min=p;
) W# S$ o, k, L$ P0 }6 Z k=*max;3 d8 T1 n2 V1 X6 l; D2 I
l=*min;
( j0 T1 B( M' u( V *p=array[0];array[0]=l;l=*p;! c/ b5 }1 I" l
*p=array[9];array[9]=k;k=*p;, p+ p# E3 |: C7 U. e
return;4 s7 h9 H `& a
}! R) ]6 m# Y2 T' s. i% d5 z
output(array): T2 u! y! E. h2 B$ R
int array[10];
# D7 m6 g6 l0 l! Y+ t% z{ int *p;* J0 O1 s7 v1 J" S; _% n
for(p=array;p<array+9;p++)/ w2 _, Z- y$ b" b( j2 f: c
printf("%d,",*p);, G- \' e' S( M. W/ A9 @1 E
printf("%d\n",array[9]);* E m3 `- c1 c; w M' {; ^* O5 z
}6 @ ~4 Z# D# |1 }) |# l0 S
==============================================================' [$ Z9 G/ ^. L9 D6 w" Z$ c8 v
【程序68】& u- {! Z9 w% r. [ E" V
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数4 P _8 h: C. Y# @
1.程序分析:
9 z! m# H& [0 j: c" Q2.程序源代码: u3 _; y/ {/ [# H
main()3 o& O) S# i* t$ _; |
{
: W' i0 t/ G) _+ B2 H7 @int number[20],n,m,i;
! y* h7 X1 p2 o3 @printf("the total numbers is:");8 k7 @9 J& ]6 r* @
scanf("%d",&n);
" p' l0 Z/ f* I1 R4 m. F# c/ \printf("back m:");
' h1 B4 @1 d* jscanf("%d",&m);
" Z! K: a5 E3 N/ j/ P% [for(i=0;i<n-1;i++)' l: p# B' {3 T$ R0 L2 {
scanf("%d,",&number);+ m! ?+ g, W& P9 @7 T4 D
scanf("%d",&number[n-1]);6 a7 _9 w, d6 P s+ o5 R. n
move(number,n,m);
* e& W/ @$ l0 Z; ofor(i=0;i<n-1;i++)) o) K* X* K0 \
printf("%d,",number);
, Z1 }/ k! t2 a: |3 w( Aprintf("%d",number[n-1]);
' s. G% D% H( Z6 n' Q& s1 ?2 u}
9 k& A* |$ b* V- nmove(array,n,m)
- d9 f4 [* ?3 N+ @int n,m,array[20];9 ^4 i' u/ }) _! F! \, H+ Z, X, d/ {
{* ~% T7 w! p( D0 g: T
int *p,array_end;
$ y! x) D0 v- `, a& z9 f6 n( earray_end=*(array+n-1);$ g/ Z& `$ Y' {( ^
for(p=array+n-1;p>array;p--)
, D b" u0 w8 d *p=*(p-1);
. B( J- E; X9 ?) ?5 ~8 e7 u *array=array_end;
2 W" F, V; _5 L* S! w. \1 Z m--;) \6 O* F. _( ^
if(m>0) move(array,n,m);
3 T3 J# H% h) y. B" p. p+ _}
2 W3 i% m' k7 M0 I) L% M$ A==============================================================
3 e6 i/ O" p( W) a4 R: t G8 K, v【程序69】
6 D |! K& y* b$ w9 T题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 G: j) K" L( o& R
圈子,问最后留下的是原来第几号的那位。 A, O- R# | ^
1. 程序分析:
' k: H! X! F+ ~ c2.程序源代码:- e( M% d- U; ^0 t, H# b
#define nmax 50
: H$ e" p+ k! A- s7 zmain()
5 h/ X; g; V8 v. l' K9 p{( Q9 [! n' p# x0 S. g- J/ A3 @
int i,k,m,n,num[nmax],*p;- a& f5 t( g" X/ K
printf("please input the total of numbers:");7 G2 Q& ]4 {1 W/ v5 Q
scanf("%d",&n);
- S3 }4 G8 S. y# C" Z+ l% k$ l+ y; pp=num;
; \/ S6 h7 U' b0 Ffor(i=0;i<n;i++)
* J& c7 X5 G `: U' R *(p+i)=i+1;' T1 k0 N* P/ } c1 e0 D: l
i=0;: F& i& T' g. e6 K+ V9 n0 k% V
k=0;7 Q% v' W4 L5 e* W) @( O
m=0;9 O" E$ R+ J3 n1 _5 p, S# ?3 {2 K5 D
while(m<n-1)
0 w& G) {% x! }" Y! K0 V r {* }8 B) \6 B+ o9 b9 {! G
if(*(p+i)!=0) k++;
$ y0 s/ x0 {1 _* I3 Q e if(k==3)
" U1 f. j. X6 F( j3 B# A, F m { *(p+i)=0;5 V/ i1 r9 z% ~1 K, J0 L
k=0;
7 k# Z7 H! O% z$ K5 q5 K m++;
1 F3 P0 c; K, }2 L& i4 {. m2 I }9 R/ T" f( i6 L
i++;
+ N- \; b. u5 x: {if(i==n) i=0;
?+ |" A) d; R& x {( N2 W}
% E7 p# \4 ]8 g6 C& }2 Twhile(*p==0) p++;& J) R0 [5 k1 H1 A f. V
printf("%d is left\n",*p);9 D4 v# X8 {0 C6 J4 o
}
2 H3 C! G- T9 ^' I p( h0 N==============================================================
2 k, B2 M" ]+ F" p9 X j' y ]【程序70】4 D+ x# d0 o6 Y, h1 H$ V
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
, b1 @9 [& e m: c8 R1 Q" p1.程序分析:
* B* } d0 \% R) i Q8 e& r2.程序源代码:: C+ t6 O# ] |1 J) L0 }. A
main(); _- `7 U# ]: t+ p
{! D- f) Q% C# |. |
int len;9 Z" ?9 `, T4 k! z# D/ Z
char *str[20];
; a" v8 L0 K% v3 P1 ^printf("please input a string:\n");
* u% H! {3 q& B) f: G- P5 T$ \scanf("%s",str);
% {7 w3 y7 s) v6 w/ H) l! xlen=length(str);- H ^. s- z/ B' P0 G6 E. s3 U
printf("the string has %d characters.",len);
6 |- G+ ?# b5 T) }, y h" D U3 N6 y( _' s}
& \, u+ h& D0 D$ G8 `. z( w' Alength(p)
- _* g: |9 i2 J2 ]3 Achar *p;; V# g9 A( e% ^/ i5 e
{8 K* G5 D" h6 y: F& U% ]
int n; @& e/ K3 u8 U7 h2 F& R+ `: J
n=0;
$ |' M) c" N( p/ v8 {5 S) Lwhile(*p!='\0')% [( v& D7 z/ v5 I" \
{
. h) f; f$ ?1 s" R$ ~% q6 { n++;3 q, A. x8 w0 I6 O
p++;# C" u1 y/ U9 ]$ H) f9 f X
}! s" _; }6 i/ b1 x9 C- w. U; h
return n;+ R- g0 }! L5 Z3 F7 p+ E, Q
} |