|
【程序61】
& a5 p9 |/ V5 |. {/ {) }4 N8 P题目:打印出杨辉三角形(要求打印出10行如下图) , V& i4 `9 C, h3 T/ e" D& G
1.程序分析:
: X( ]8 r: ^* K3 P+ n2 N 1# J% R) d: g6 R" \$ o6 Y: K, M
1 16 ~6 |5 U: w2 G0 u( J4 P
1 2 1: K( p1 y) g. i8 b: J! ]
1 3 3 1
- s- O/ b2 E! x- ^ 1 4 6 4 1
/ B9 n) W9 Q# W2 o 1 5 10 10 5 1
- B9 B9 T) H$ i4 L2.程序源代码:
+ i, y% Y2 z( T% Omain() `5 K& ^( x, U/ d( Q
{int i,j;; o$ r. x1 r- B
int a[10][10];- j5 V: y" d$ Z G# u, Y7 m( R
printf("\n");
$ ]- v0 f" |2 W8 a; jfor(i=0;i<10;i++)7 E! {' X4 |5 t D" T
{a[0]=1;
# l/ n6 L' K% l9 U# U% h a=1;}5 q( ^# ?5 I0 [% x$ f/ r3 J3 ~
for(i=2;i<10;i++)
( e3 E: P5 ~9 Q( Z- b; @- _ for(j=1;j<i;j++)
7 o" y7 n: Z! k3 V. q* L% Y a[j]=a[i-1][j-1]+a[i-1][j];5 w% A# y6 P& m& Y9 |& G: l) Y! ~2 h
for(i=0;i<10;i++)* [9 G( H: C- P6 ^$ t' n+ n, j2 q
{for(j=0;j<=i;j++)
3 D, z. x8 w) ]; \% K printf("%5d",a[j]);
" T3 G; L# V6 I/ b. Y$ [# s printf("\n");
a! p5 n. `+ U; H! V. R, E# ~ }
& R* S" U$ i# K}
. P' C, _. ~6 z8 L I==============================================================
- V% C2 V; O. S" d$ [【程序62】; L( I+ u( q4 W+ K. g- A% h
题目:学习putpixel画点。
3 D: i5 [8 }# |, `9 l1.程序分析: 8 w2 ]; @+ a6 a" J' o) r
2.程序源代码:% A; J" A0 [1 i& V, `) b5 }% t
#include "stdio.h"
0 B+ ^# \3 k% k7 J+ Q#include "graphics.h"' ~. u s7 E* n# g) Q$ k
main()
0 h& L* M; B) f! J f4 p; v7 k{
( Q1 |: G G2 Kint i,j,driver=VGA,mode=VGAHI;6 b* U- y0 [' N. W, n
initgraph(&driver,&mode,"");' n. t. |' b" Z% a; K% i
setbkcolor(YELLOW);
. Q, S. P# M. ?+ a @ N0 Wfor(i=50;i<=230;i+=20)
! D9 p5 z7 O/ p/ B- D for(j=50;j<=230;j++)
4 a Z( Y3 S1 s6 H1 O putpixel(i,j,1);- R, d2 h1 T8 p6 P! n
for(j=50;j<=230;j+=20)
2 S1 _- W( X. s! g; g for(i=50;i<=230;i++)3 e/ k2 B5 a) _/ Q( ?
putpixel(i,j,1);! `! @* s$ E. e
}
: G: V& v1 D2 @4 V0 ?( U5 P& S7 u==============================================================1 M1 b6 Z, k& Y2 _1 O3 K! u
【程序63】
5 ~( P# G. P$ w4 i) \2 ?题目:画椭圆ellipse
9 S/ B( Q8 v/ d9 h1.程序分析:! i4 _' [& D; `/ U7 j+ Q E2 v( D
2.程序源代码:6 l5 K7 j0 ]4 F; c) U+ w1 A2 ?8 w- M9 U
#include "stdio.h"# X! a2 k3 q9 N- Z# L2 {, H- N
#include "graphics.h"& c' h/ m: L; o' _, [& M% a
#include "conio.h"
; b. C! T, Y! D3 Hmain()- I9 f) }9 ?, Z9 S8 Y
{$ M) ~, S! ^5 e k- Z
int x=360,y=160,driver=VGA,mode=VGAHI;
7 [- C# R. ~; C& F6 Eint num=20,i;* \$ ~( j0 Y" p+ J- I
int top,bottom;0 I5 r# M" Y9 v& E
initgraph(&driver,&mode,"");
( r( z, k/ Z0 A2 D5 n, Ttop=y-30;
2 b7 T! J- N5 [8 N9 a5 }0 A; Y* Q4 pbottom=y-30;+ {% O5 A5 ?7 S: ]) X/ T
for(i=0;i<num;i++)
+ ]- R L0 X; x) I{0 r, f' L1 w. @, [- m$ R0 b
ellipse(250,250,0,360,top,bottom);
' K/ v( e5 j; t# O. C4 Utop-=5;
# @9 G- p X! Xbottom+=5;$ P' y' u" e5 \7 V3 a
}
7 i+ m2 z" C, a8 E" R( vgetch();7 o, ~2 V; p G- T9 Q
}
+ r) |6 l( W$ b==============================================================
5 A0 U( D, m! B# _- @【程序64】3 J+ }0 G9 E1 r a
题目:利用ellipse and rectangle 画图。( l: A. K$ Q+ F
1.程序分析:
( [4 I* i, O9 d; c$ }- g& Q& m& T2.程序源代码: V6 z7 q9 \ w k9 F0 q1 Q
#include "stdio.h"
4 @: _+ i$ }$ E8 d#include "graphics.h"
. B' ]9 j. [9 \; L/ a#include "conio.h"
5 e; d. F- h1 V) @9 o4 Vmain()
* q) O: k* x- m& d; M1 G( w' H% a{2 y8 S$ i! h. I2 J* \, f M
int driver=VGA,mode=VGAHI;
/ K% f: }: B9 hint i,num=15,top=50;
! n$ b% n8 D) `6 a2 e2 Kint left=20,right=50;
# m v8 p6 |0 k+ B0 w0 @initgraph(&driver,&mode,"");
/ J. _6 k8 t! j7 }for(i=0;i<num;i++)# M+ x* X n9 v& ~* A
{7 Q' R* X/ m5 b4 Z6 C4 C9 J: G8 u
ellipse(250,250,0,360,right,left);+ F+ j, @$ L8 }% c7 {' v1 V
ellipse(250,250,0,360,20,top);3 X7 Z7 c7 ~- X
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));, t5 |. m5 d7 J
right+=5;& |5 @: d* a0 c5 Y* G
left+=5;
, w O' O! V* ~, }, w! n8 mtop+=10;
0 X1 e* O9 N+ ] u" b+ ?}
# K* K/ Z( e5 K T. Zgetch();4 r1 y }/ a, c9 ~6 v7 o! r) @
}
+ |/ e$ N0 J' G% `( R==============================================================! E/ }, b* ?& K0 _$ l, [; i6 |
【程序65】9 E0 C! X8 p/ \' H
题目:一个最优美的图案。 # m$ [6 B3 z0 {3 {3 q1 u
1.程序分析:
- s! x9 n7 @# s o0 w9 `2.程序源代码:5 {6 T! \% U. a
#include "graphics.h"" T! {1 ?. D ~- u8 s
#include "math.h"
' g* }& j; d. m; S! ]5 D% s#include "dos.h"7 G5 t, P6 f: m/ D
#include "conio.h"
, L& l1 W! G, ?0 v5 ^* K# ]0 U#include "stdlib.h"
' k) a0 S4 m0 r/ X; U8 @8 H1 C#include "stdio.h"
2 q- [& u& `+ X( U/ P& k& ~#include "stdarg.h"3 s0 v! B& D+ ~: Y. m! R
#define MAXPTS 15/ H2 e: N. a$ Y$ g" k6 M
#define PI 3.1415926
" D/ z- ]4 D2 s3 cstruct PTS {
. l# z. j* I6 e Q; v& Kint x,y;
0 l& d8 {% t9 V5 o2 W};
' e9 R9 s& h& b" N! E; H: ~: vdouble AspectRatio=0.85;
. \: k+ t& @8 {5 Vvoid LineToDemo(void)* z0 w, n& O& M$ M& \/ v# v; E9 z4 U
{
0 f1 G3 Q6 _- L8 Estruct viewporttype vp;0 d, @' @1 x1 A5 ?+ t9 D# l4 A
struct PTS points[MAXPTS]; @6 ]: M$ x( {; M
int i, j, h, w, xcenter, ycenter;
6 d5 K* P3 T* Iint radius, angle, step;- Y. m% T6 ^% D& | p9 z7 Z. g
double rads;+ \" S, s& q |) f0 X8 I, o7 R
printf(" MoveTo / LineTo Demonstration" );3 z$ v7 G$ b2 [) | }
getviewsettings( &vp );! A! q& c; B3 }' [3 T# x4 F
h = vp.bottom - vp.top;/ L* ]4 K: O% I
w = vp.right - vp.left;( q' f/ T3 H4 A7 E$ k& c
xcenter = w / 2; /* Determine the center of circle */: E2 B- o% k6 N1 V: W' D3 S
ycenter = h / 2;
6 E' u7 c4 N7 E/ g5 jradius = (h - 30) / (AspectRatio * 2);
* { X! o d- M3 N- `7 H4 U4 jstep = 360 / MAXPTS; /* Determine # of increments */
3 S9 C6 x7 {1 j7 F# s, Dangle = 0; /* Begin at zero degrees */
# L/ r$ U$ ?5 d5 q, Ufor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
. N0 A) I1 T0 p4 {2 Arads = (double)angle * PI / 180.0; /* Convert angle to radians */0 _+ _% p& D7 T! W
points.x = xcenter + (int)( cos(rads) * radius );# j+ s* w% u4 G( |! A, ^
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );% O/ j9 f" i: z9 ^
angle += step; /* Move to next increment */$ b& y: B$ k! A& Q
}' F: f( L9 `8 ^) p G4 h% T& \
circle( xcenter, ycenter, radius ); /* Draw bounding circle */' c1 X$ j5 t$ H0 Y) q- V+ K2 L
for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
, @% G" w2 n& ~$ q6 x" V: w8 k8 pfor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
- l3 m: Q h& n1 fmoveto(points.x, points.y); /* Move to beginning of cord */ R) v1 W+ b7 P, Z" s; k/ Y3 h
lineto(points[j].x, points[j].y); /* Draw the cord */
1 l: U: t q; v% w5 p& G( |6 m/ |1 j} } }3 m5 m# o9 ?7 \. T3 h4 C- p4 S8 B
main()& ]) @' m) d" V" y- c- s: U. S
{int driver,mode;
' M+ V! j, C9 Q/ Ddriver=CGA;mode=CGAC0;
' r1 E2 G0 o! S2 Xinitgraph(&driver,&mode,"");1 s$ J* B3 ~) q; o/ W8 m( A
setcolor(3);- t* ~6 w5 [- D C) U
setbkcolor(GREEN);
6 g$ F0 P S2 e9 q {" o3 J+ S6 BLineToDemo();}1 S+ k. {# l; ?/ A# x6 E
============================================================== n; y" q' E- f4 B
【程序66】& k" N9 s5 X$ ~5 a5 y' h# G
题目:输入3个数a,b,c,按大小顺序输出。 % |7 f0 A; F2 a' P2 X! i
1.程序分析:利用指针方法。# r# Q9 A& O8 D; ~/ ^% C
2.程序源代码:( l. a" x7 Z6 x( R6 M1 H& X
/*pointer*/
1 T% X! \$ x4 R5 l5 |( ?8 {main()
; p* U# b3 _0 W, a$ l: i2 i{
$ j5 [$ W( g; O, a' D& E# x( kint n1,n2,n3;
: K2 F% V; [! kint *pointer1,*pointer2,*pointer3;
+ C5 v9 {9 c$ e. Wprintf("please input 3 number:n1,n2,n3:");9 c$ x5 y/ z' \8 x
scanf("%d,%d,%d",&n1,&n2,&n3);, z1 \$ y5 R% Z$ R P7 O
pointer1=&n1;, ~5 O+ k) q9 S6 _. P
pointer2=&n2;. w5 A& _( C5 K
pointer3=&n3;) M. z7 q3 v& ? p4 o
if(n1>n2) swap(pointer1,pointer2);
1 {% y( Y/ z8 [/ j& K! Jif(n1>n3) swap(pointer1,pointer3);' V% f G- P$ C
if(n2>n3) swap(pointer2,pointer3);
2 s ]: |2 ]8 T2 c" x% y- Yprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);! U: A+ P1 `7 w$ m8 F* O% a
}( I ^3 N/ R p6 |
swap(p1,p2)7 _" t" l/ {7 l
int *p1,*p2;
2 \; U9 y8 v& I{int p;. U( i# h$ Z1 @4 ?& d7 M
p=*p1;*p1=*p2;*p2=p;
1 J; k( l: ?# N( C- x/ V}
# T1 p% `: a+ T==============================================================
3 ^( u$ W0 A$ E) _【程序67】: l* e8 `) C, E z% N
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
* n8 ^8 y: T7 S( H z1.程序分析:谭浩强的书中答案有问题。
4 _6 y/ t" x7 Q5 J2 n2.程序源代码:
" x" \- t/ z% i, ~9 _main()
5 \7 Q7 u& J) G3 @6 e5 ]! ?{
% p P P. d" j- i# Bint number[10];2 ^1 M6 C+ r3 {7 S) j4 |) |* F% |
input(number);
* a* ~; B8 \' J% T0 h" cmax_min(number);
- v7 |& e y! `9 K/ ]4 c* Loutput(number);
1 k h' \7 r# e3 s- U}
) S" M( B" \% a$ d3 G- ~1 q0 x' ?input(number)
4 [1 r; v4 x% }, U: Wint number[10];7 G: [( O# W; ~2 {7 i2 \7 ?* N
{int i;' Y" x! q) X$ q( ^8 N$ Y
for(i=0;i<9;i++)
. Z- n# X$ B* d* k9 @) U scanf("%d,",&number);
0 k" G- `5 G- I scanf("%d",&number[9]);' q6 {* R, `$ E
}
+ Y& ^# V( S) ]max_min(array)- [6 c2 \9 V/ X: ?, l
int array[10];
" u. \5 D: f, s: K8 k{int *max,*min,k,l;, i i2 x8 z$ |+ v
int *p,*arr_end;
9 U( F! @% s _! darr_end=array+10;: O: `0 J- S- K7 S4 m
max=min=array;8 T' b6 t: V# b
for(p=array+1;p<arr_end;p++)2 t; K8 t8 I- d0 o. C' |% _6 w* I
if(*p>*max) max=p;! U9 G9 d% E$ Q5 U& g4 G
else if(*p<*min) min=p;
! ^! {3 y2 o7 m k=*max;
# n" ^5 x7 l+ u l=*min;2 y3 u$ ?7 A+ e6 Q2 ?7 j: f
*p=array[0];array[0]=l;l=*p;
T' R9 Q3 T/ K5 p6 C" S, U *p=array[9];array[9]=k;k=*p;
+ x6 o1 ]( v; g- f( i/ n return;9 U0 t7 N* k9 U9 X8 M1 Z
}
' q- {; b& U4 o0 [; i) doutput(array)
) a4 _2 j% M8 f* |: {' iint array[10];; F: \7 V: q1 H) N& U/ j+ a
{ int *p;
8 k& b+ m' H! G! f6 zfor(p=array;p<array+9;p++)
& u6 y; s. k- j7 z! O. x printf("%d,",*p);
& n% y- h9 Y0 l3 [/ k9 Iprintf("%d\n",array[9]);) O2 t8 U( J. D( D! ~% M$ D# u
}* h: y& x9 S- ~. {6 E& S; H, Q
==============================================================) `1 k0 ] w) K
【程序68】
0 C9 @' L% A# }4 N题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
6 J& r9 n$ B3 p2 F! i7 s% w1.程序分析:
" }2 O* {- L7 c4 }2 D% J2.程序源代码:; J6 d$ h+ J1 n9 I
main(). w0 X9 s* E+ X0 c- @" h& k
{& k2 L( W6 m% b8 k% Y1 H/ O
int number[20],n,m,i;
+ f3 c |! c" M8 Iprintf("the total numbers is:");
7 T9 I+ S1 T0 j9 O& o5 Qscanf("%d",&n);
+ N1 H. t9 _0 d. A9 _0 d1 Wprintf("back m:");
8 t4 d7 A, j( j1 iscanf("%d",&m);- L3 x. |0 H# v
for(i=0;i<n-1;i++)
+ I8 Q$ v' C$ j) r( Q( [+ j' e scanf("%d,",&number);
0 E* }4 D% w7 N0 gscanf("%d",&number[n-1]);
5 m" U3 h' o+ e* rmove(number,n,m);! ^* E9 P% e0 z3 J6 k$ T
for(i=0;i<n-1;i++)0 w$ [7 i u3 v
printf("%d,",number);
$ o9 t& `: [# E# }; g2 eprintf("%d",number[n-1]);
7 r( Z, K+ l3 ^# b/ L}7 Y1 z) P" i2 q. `; }! D
move(array,n,m)2 ~& B6 \ X; ?- n: e* p/ c
int n,m,array[20];4 u. x$ T0 R6 q
{( N+ @9 D$ ?# o/ z5 h0 o8 {
int *p,array_end;
5 d3 n- O5 k C9 e" r- V" Marray_end=*(array+n-1);8 m2 _7 }0 Q3 z+ V
for(p=array+n-1;p>array;p--)0 S0 S) `: I1 |* |4 \% Y
*p=*(p-1);
, o: K3 p% E2 T" d: f/ H; h *array=array_end;
3 y( E" U" V2 {# z$ _ m--;
9 b; u2 z1 f5 m3 `0 Y if(m>0) move(array,n,m);
, p3 K1 e' Y7 \& Q}. I2 Q, f; C* u( A( H
==============================================================6 C# l6 W5 C$ ?2 A0 d9 o: |9 V
【程序69】" D! J; ^( c/ Y( Y
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出( Q. w( M3 |0 W; I4 i5 ?
圈子,问最后留下的是原来第几号的那位。7 `" C7 p4 k2 v. h/ v4 Z+ e& p
1. 程序分析:
* ` m! w% Z3 X1 s& ~4 f2 p; V2.程序源代码:- q, f5 B5 Y- T2 N" |/ V' o
#define nmax 50
- E) Y) v. c+ L8 S9 E! nmain()( o3 P$ b) b8 b1 x: g1 \
{1 G* d$ N. E. l" K. Z* v
int i,k,m,n,num[nmax],*p;
?; Z* _3 S6 ?5 h. fprintf("please input the total of numbers:");4 W& B+ F# z! J% l' `4 H) j9 U
scanf("%d",&n);( l j( y8 h% v6 r7 A9 w
p=num;4 b; K4 f* ?/ ]" r
for(i=0;i<n;i++): S* j/ I9 V: @# E
*(p+i)=i+1;9 p) J! j* ]% D* G, ~
i=0;" `: o7 s, u3 u9 @; H7 ^
k=0;
; b) W3 U. I a/ R6 s m=0;& v5 t4 r/ n- J9 J6 ^" u0 c/ q
while(m<n-1)
, H1 V0 |0 p: s {3 [# B9 d) [; z5 t
if(*(p+i)!=0) k++;
% ^/ T; p/ @) P0 R if(k==3): g% }/ S7 e$ X2 [( g
{ *(p+i)=0;
# z8 s% V% g' i6 N# S k=0;
4 S5 B- d O1 n$ n8 b m++;
/ V! N; F R5 Q0 C0 u }
* g* @& k/ U# K9 ~9 Wi++;
% r* @( B8 J- ^if(i==n) i=0;
+ G! l2 t% a1 B}
& B' @5 b1 Z+ ?) X$ f8 V3 t) J: Qwhile(*p==0) p++;
/ `! ^( M$ z Uprintf("%d is left\n",*p);" ~+ j& i' C0 { A) E
}
0 s8 u8 B# ?& w6 L1 `1 g9 b==============================================================0 L% s& @8 d) C2 q9 o0 V. c
【程序70】5 F( @* U' u6 J0 c- W5 I0 N
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
7 M+ n c& s& E8 ^' q; D9 W" O1.程序分析:, G9 Y% E# R- b+ L( n' ^; E) E
2.程序源代码:# G% `8 U- ^& { _
main()
( d3 g- f7 l: Y+ N9 m3 k) Q5 V{- v/ m/ f4 z2 q9 f7 M
int len;- M3 N. ]' F7 n6 `5 \1 Q
char *str[20];& P& W' s6 f7 r+ f. l" I
printf("please input a string:\n");$ |, T/ U4 P7 ?3 @) y" K
scanf("%s",str);
/ s( f/ [" V5 y- m L) f Xlen=length(str);7 y3 {, I+ a( u- M9 N! D0 V
printf("the string has %d characters.",len);
. o; O! f* V- h: ?! c' @+ v" _& I}0 I2 w. B4 @. |$ {: ]
length(p). p" b* ~, @7 j" a7 A" R
char *p;
0 {5 y) Y2 m/ d: z6 |{
/ D" m" k7 K" r) A. a" E* \, V( E3 ]int n;7 i" b! g! Q! b. d: }
n=0;
, K8 p. K4 f5 A T# L; U- vwhile(*p!='\0')
7 x, d5 b+ {* I3 z+ i; `9 i{) C" y# B) R8 W6 }! M8 F5 s
n++;$ {# g! A; d Y
p++;1 z5 x& [# G! E' ]+ @
}, Y4 U/ K) v- h8 x' t \
return n; z8 @7 ~ v2 S0 c7 L+ X; b$ V
} |