|
【程序61】& t8 @# {4 |7 O. }( l1 l( ?2 }
题目:打印出杨辉三角形(要求打印出10行如下图) * \$ D- x8 s$ |; R' f2 H: k: ~* C
1.程序分析:+ f, e4 ]5 ^8 K4 P/ p# y: u9 d
11 A: ?2 i1 V" w2 q) ^% @! X
1 1: i( l W- F ?" I2 y1 i4 j
1 2 1
* A& M6 [! U1 n4 _8 R 1 3 3 1
; \2 T0 N0 r c) E/ @2 Z [ 1 4 6 4 1
7 `" h6 w+ p0 I% v9 h* K+ A+ u 1 5 10 10 5 1 % J: f9 P' U+ O$ v( @" @3 X, d
2.程序源代码:. Z4 l" M/ i4 v" \7 A" u3 \
main()+ b% [9 c1 i$ L/ _5 y: N
{int i,j;
0 B6 e6 D1 {3 B! j" |int a[10][10];4 \- y& C/ z* e
printf("\n");) j" B9 e3 g4 d- u% }
for(i=0;i<10;i++)
9 s4 _/ x, t) U" c8 y3 c2 O {a[0]=1;# @* h/ v/ ?1 \+ k L8 K: K! p! g
a=1;}
s' ]* a% y! Y- d; pfor(i=2;i<10;i++); g* X: ? \' Z* a- B& W# |
for(j=1;j<i;j++)/ n0 Z- T% j0 _" J, S/ m- q1 h9 u
a[j]=a[i-1][j-1]+a[i-1][j];+ ?$ U1 ]+ d* }' X9 Q; ^$ K
for(i=0;i<10;i++), K5 _! k7 o" R& n
{for(j=0;j<=i;j++)3 f! ^; r3 n3 \6 ^# ^
printf("%5d",a[j]); U( {# \6 v7 v) u6 X
printf("\n");% J1 J7 J5 m1 ^9 y8 E, _
}
& p, s. S8 P% A4 d; ?% i6 k}% h c# n1 `- G. P/ K* [, o
==============================================================$ }5 B& s( V8 w8 V4 t! _! n
【程序62】
6 _" Q. `% A( p: }7 L. t6 J# F题目:学习putpixel画点。
1 Y. b0 \: B/ u: Y9 Y. M/ z2 j! o1.程序分析: 8 n f. K5 t [$ z" }5 ^
2.程序源代码:
5 Z) y2 V" O7 k/ m% {#include "stdio.h"5 l- M4 K9 V: S; y4 N+ Q
#include "graphics.h"' K* h2 l( A1 K! o5 X: n. i! `+ E
main()8 }. k( b. U8 ~6 \
{, z) t3 W( _$ [6 `: f
int i,j,driver=VGA,mode=VGAHI;
- J& E2 {; o i. `! x% a2 h7 A9 O2 uinitgraph(&driver,&mode,"");( T7 r& k' D- L+ P9 G& u
setbkcolor(YELLOW);8 `% B2 I/ h$ @* R4 L. S, e& z, G) w
for(i=50;i<=230;i+=20)
* ^6 U) n1 D2 r2 A4 R7 b' D% ?5 r for(j=50;j<=230;j++)* D, `, T3 X4 T! y3 j
putpixel(i,j,1);
% d; o6 z. {8 ~4 O3 A9 zfor(j=50;j<=230;j+=20)
/ v2 W% r2 D% |( w& w% a1 f) z for(i=50;i<=230;i++)
' m* b* ~+ R9 @5 @ putpixel(i,j,1);
! U8 y- h4 U* J: [" m}& |" f8 `3 |* J9 e5 E/ Q7 Q
==============================================================
' C- L* s9 S; ^【程序63】1 N' r' n, K, D/ G7 S
题目:画椭圆ellipse
9 S* k4 I% w. l* G1 }) H4 j T& \1.程序分析:: P! X9 o5 L: }. \2 |
2.程序源代码:) e$ Z, I% ?3 E9 i
#include "stdio.h"3 c/ a7 N0 u$ s# f$ c1 r( ~9 a
#include "graphics.h"
9 Z5 c* K$ l5 t4 b/ E" H# R- E) b6 W#include "conio.h"
i' H: |( p- e L' C' ]main()& z4 M7 }/ `; L# u2 a# h: ~3 V
{- e5 S" }$ J, j3 {0 D; b$ ~* p
int x=360,y=160,driver=VGA,mode=VGAHI;& D, q" C: o$ L8 f& S
int num=20,i;
+ Q) S' a& w4 P* ]int top,bottom;
6 U/ F3 t1 l& G# ~; k z/ V; H- Jinitgraph(&driver,&mode,"");. r) r# E6 g) \3 H* r9 p
top=y-30;; \+ K1 l1 {. s3 m
bottom=y-30;! g0 K2 j4 h% C: r8 X, Y
for(i=0;i<num;i++)
7 U; F; m3 B3 I8 z{
) [+ r9 k0 F) q) R! Lellipse(250,250,0,360,top,bottom);) q; z7 v2 O) ?+ _5 Y
top-=5;( O+ _& V2 B m# S
bottom+=5;* ^- m- U9 e; |- [) z8 V; T
}; z- b. r" _. b$ R5 ~3 e9 S
getch();
# S+ ~: a6 f/ G( }4 a: ?+ s3 _}; L6 c6 G8 b y( X
==============================================================
$ B- |) k7 \4 v+ J5 B. O+ K" i【程序64】9 m, n6 L) d, D9 [
题目:利用ellipse and rectangle 画图。
7 E. b* o( G j! A9 O4 U1.程序分析:
% o' h, t. E. G0 q; t) s/ y1 l2.程序源代码:6 N1 u$ u' }7 Y* V* x
#include "stdio.h"$ V8 f! z; K) h5 ~+ | i. u
#include "graphics.h"
6 o. S" Y( N. S9 N+ j#include "conio.h"
, J# m' n! t+ T5 G7 Q6 qmain()( a! p- R8 d A: r$ W
{2 L7 T/ ~& `+ h* K& D- G; a
int driver=VGA,mode=VGAHI;! H- R% Q/ @/ u0 N$ y9 _' d3 u
int i,num=15,top=50;
2 O# D0 G% P* v4 S+ p& m5 yint left=20,right=50;6 }/ W$ m. r7 z8 u# C4 ]
initgraph(&driver,&mode,""); m/ a6 \6 V% G6 K9 m7 O
for(i=0;i<num;i++)
' L' K7 N+ r4 a6 B9 M$ g{
2 ~& i1 ]# N9 ]& u! aellipse(250,250,0,360,right,left);
- v/ Z* \2 k7 @ k, P. r% m, m! U2 hellipse(250,250,0,360,20,top);
9 M3 g: i0 u. r$ t5 S1 ]; krectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));- {) c' `4 ^" F9 A8 \0 e' X
right+=5;
0 ^- [- [$ _# w+ lleft+=5;
! y- T% |5 e, i: Ctop+=10;
; ^& h4 {9 m* i& a6 C" T+ n6 B}7 ~' x i6 q# I; t- Q
getch();
" _+ c$ R8 z) V0 A/ j" S) c}6 U& j1 l: P u+ J4 O- r% }3 M& @
==============================================================
2 _5 a' j! k$ F【程序65】
) m, {6 t1 V( U+ q题目:一个最优美的图案。
" A2 t, Z) o2 |) {1.程序分析:4 T! j L$ M5 V B& m
2.程序源代码:- V0 A$ I" I0 A; h" Y
#include "graphics.h"
3 J$ g/ G8 \: I& Q1 u! T#include "math.h"
2 X+ h0 q& R4 t#include "dos.h"
l/ Z( h- A- f# A; S#include "conio.h"" f& m; Z; z( [0 A
#include "stdlib.h"8 d# I5 U p- H, J! L. F1 b
#include "stdio.h"
1 t) f9 J" p- E6 }0 }#include "stdarg.h"- C6 N8 b+ v( A$ }: k
#define MAXPTS 15
. P$ p- V4 v5 }* l" W& i6 R+ g7 M#define PI 3.1415926
& n( Q9 Q: ^) |$ M% `. K9 r/ l9 m3 istruct PTS {
# X% k: Z$ r/ i2 v5 G; c( pint x,y;
3 W' b E1 }6 [( B3 Q( g+ X! m};# C# d2 B W) |% Z1 Y& N
double AspectRatio=0.85;
/ b, B2 [" v$ {" q& M. C; Rvoid LineToDemo(void). ?9 a7 U+ v& P+ [
{
6 x8 g& Q4 i ]. z+ E% _2 cstruct viewporttype vp;/ g8 A9 |. s5 Z7 u
struct PTS points[MAXPTS];
; j, G) Z% H; ^& c, xint i, j, h, w, xcenter, ycenter;+ e v1 W: J! b+ q8 \, X8 \
int radius, angle, step;
2 }% P$ [7 r+ @' D, idouble rads;
" p2 d4 `9 d+ B* zprintf(" MoveTo / LineTo Demonstration" );
7 y/ K. \# @$ k1 M9 X+ O2 ~getviewsettings( &vp );8 W {: o( @3 ?
h = vp.bottom - vp.top;
# A6 i0 M9 E5 @- A6 yw = vp.right - vp.left;
+ @6 z# |" J3 r6 q: n( cxcenter = w / 2; /* Determine the center of circle */
8 S2 m) N! X. yycenter = h / 2;9 G+ }( Y g" }* ^
radius = (h - 30) / (AspectRatio * 2);
: i- r# m0 z" I W. Y$ y2 Zstep = 360 / MAXPTS; /* Determine # of increments */
, o. ^! O1 m Y3 Yangle = 0; /* Begin at zero degrees */
" }8 d; `$ o9 H- @9 G. r. Afor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */ X' Z4 e w r5 w4 U4 s
rads = (double)angle * PI / 180.0; /* Convert angle to radians */- p. F! h: ^" z. L2 R( K- \: j
points.x = xcenter + (int)( cos(rads) * radius );
7 C+ b8 V: N- o; xpoints.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
- s% q0 `* L' J+ m8 Eangle += step; /* Move to next increment */# f* {; H) d0 ]8 _
}
) \+ k4 `/ R4 o: Y4 A, o& @9 n) ecircle( xcenter, ycenter, radius ); /* Draw bounding circle */
+ C. s; s/ M% Dfor( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
1 w3 W0 X l6 W, Bfor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
. U. |. B' H; `$ ymoveto(points.x, points.y); /* Move to beginning of cord */; \! [+ v5 u0 T% q
lineto(points[j].x, points[j].y); /* Draw the cord */+ Y6 f! G- T4 O$ T, R
} } }" V6 R* P, @! ^( o8 d7 C
main()) a$ L z6 X. F6 G
{int driver,mode;
, j* f9 j/ \5 p; r" odriver=CGA;mode=CGAC0;
. J! d" c9 h$ Y' \- i. p! sinitgraph(&driver,&mode,"");
' ~" f3 |& |! \setcolor(3);* u2 e. Z. q7 E- y- J* X
setbkcolor(GREEN);( W2 x- h% V+ k5 ^
LineToDemo();}
0 g( |) J5 q: ~- ]. E. O& l5 O==============================================================
( l+ ~, f% x; }1 r6 b, ]5 [【程序66】
# n' k) \" [9 V题目:输入3个数a,b,c,按大小顺序输出。
* x' r) U( h+ i6 D3 B" k1.程序分析:利用指针方法。
8 Z1 U1 H# j; g5 G) W5 d2.程序源代码:
6 X; j7 w3 p# h: m! x/*pointer*// n/ C' s" ~* x( |- q) \% [# p$ i( ]1 V
main()
; a* `) K! G" a% u0 c. ?# X# L4 S) S, h{' F; `( C; r4 I% s: I" o$ H
int n1,n2,n3;' N/ T4 C H7 y% k9 y
int *pointer1,*pointer2,*pointer3;7 D0 D( i! }1 d. {# S8 D* ]9 |
printf("please input 3 number:n1,n2,n3:");
6 g: {4 p& [* @! fscanf("%d,%d,%d",&n1,&n2,&n3);; S' ?" K) m& M8 Y# e* E
pointer1=&n1;2 Y) M+ q& @" k( t
pointer2=&n2;7 O1 t0 |8 {9 I4 R" H. c0 r
pointer3=&n3;
5 V! j2 r/ E7 n3 V! _if(n1>n2) swap(pointer1,pointer2);; K2 D6 C! j- i5 U1 J, [
if(n1>n3) swap(pointer1,pointer3);3 V. H- C& w2 W3 k) e
if(n2>n3) swap(pointer2,pointer3);; ?; t0 \- M6 y4 H$ M1 y% m6 {( H
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
- ?0 k1 |9 C; R}. y- X6 Y o, N' {, ~
swap(p1,p2)' C0 H$ O5 N/ K% W
int *p1,*p2;
& u$ B8 O0 ]- E/ W% E7 C& A9 N* T{int p;6 p" l! U7 c; U8 @1 }/ ?" F
p=*p1;*p1=*p2;*p2=p;
i" _) m7 t! @2 @7 m+ Z3 B}: @: S- G0 l7 \3 Y
==============================================================2 H7 r0 D1 h6 A4 }! n8 C, D
【程序67】
+ W' S# Z( i; u- j0 z+ t+ D题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
, C7 k6 p% s2 K" r' t, F1.程序分析:谭浩强的书中答案有问题。 9 k n; c: p* e) D" `& q# Q4 }+ N: @
2.程序源代码:0 G, y! f, x" v; Y7 ]# S% N( G8 u
main()+ u) A( S! E1 G* R# I2 ~: q- w
{
4 ]2 X! G- X& Hint number[10];# K! B6 U+ u4 ], \, G) z
input(number);
, ^5 h0 \4 C: Qmax_min(number);7 q1 d x: u2 y9 M# @% ~
output(number);/ I3 u0 u6 _; v& [1 Q9 H
}
' u/ H9 B) L9 L6 ~input(number)
7 L* i" Z; R3 u; S& K0 d3 X, Dint number[10];1 n/ a5 |1 t! c A
{int i;
! d5 L% U$ K& s ]2 T# ifor(i=0;i<9;i++)
& Z" F+ ~/ ^; O- v6 F( ~) Q% } M; E scanf("%d,",&number);, _" y+ h) h$ r
scanf("%d",&number[9]);
/ @" P2 M1 x. X" k/ {$ [( A* e, D5 Z}
X9 K8 y+ x! ~' N5 ymax_min(array)
9 [3 e7 ^' K* ^2 }: w; n$ W3 Y5 fint array[10];/ [. m1 \, E6 Y: J b) ?0 I
{int *max,*min,k,l;8 g( Y1 g+ E5 }9 B" L- Y3 }% u; O0 |
int *p,*arr_end;
# O' C6 U" o2 j0 Z8 B: P6 Aarr_end=array+10;" x( F$ [; E5 ?- D8 T
max=min=array;
1 K( A5 X4 p! p. p3 H" Bfor(p=array+1;p<arr_end;p++)7 }+ H% ^5 v0 K, |7 P( x3 I7 q
if(*p>*max) max=p;: W0 m, E. g/ s; R$ A
else if(*p<*min) min=p;4 z; E4 S7 \0 H) D9 j
k=*max;$ H" H0 i! h% X+ I0 l# z
l=*min;4 q4 M& c+ z) N- b. r4 d
*p=array[0];array[0]=l;l=*p;
* I! P4 m3 F8 p. e( x4 b/ ] *p=array[9];array[9]=k;k=*p;
$ [ u" I! `9 z' |0 |' A9 W return;
) C7 P% W/ J' J- Y( a" C# |}
! R' U, k$ I' v6 K0 Moutput(array)
8 E% t( K/ b$ }3 T7 G9 Xint array[10];, x* v+ {; s+ B% o( O6 f- P
{ int *p;: H2 p; H% v: ^+ }8 o1 n
for(p=array;p<array+9;p++)
! x: d; d: o6 {: F9 b printf("%d,",*p);
& X$ ~1 J/ T+ I7 Yprintf("%d\n",array[9]);3 J$ o7 o' H# q Y7 J
}
o, j' u# M, x7 V. }==============================================================/ E, f" A8 |* J3 e: ]6 z8 |
【程序68】; h5 Y9 l+ Q: G
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数' b+ `! T7 ]) m: p3 X2 v U h
1.程序分析:: Y# `/ ~9 {: P% C/ A/ _8 v4 c
2.程序源代码:
: Y: z3 J2 E" \- e: Fmain()/ f9 h* l+ V* Z7 ^5 X& m+ S. C! ^6 B
{, i7 z% R1 w7 Y( Y
int number[20],n,m,i;
" x6 P) K$ V* `+ a; N6 X4 o% {% Zprintf("the total numbers is:");
2 w7 P/ W% {+ `% w1 E7 bscanf("%d",&n);) O/ Q5 f- r. r& m9 _- {* C" ?, F
printf("back m:");: W4 ~1 J* h( }2 L" h' J' I7 m# e% O
scanf("%d",&m);' D5 ]7 j4 J% O: l4 c
for(i=0;i<n-1;i++)
/ _$ ]7 o* u' u scanf("%d,",&number);5 N, p9 f! N ~
scanf("%d",&number[n-1]); H& H& N0 Y0 X2 d- H" k* n) q3 A
move(number,n,m);! c/ U* i; d7 A+ S# m
for(i=0;i<n-1;i++)& J# d: o; O' N
printf("%d,",number);
( F# f+ T- B8 d& F" p7 rprintf("%d",number[n-1]);
: j# q3 v: O: S: z! @}
" N! e K0 i8 l" o/ J. c+ \( b, amove(array,n,m)
& S: d _* z* x# W( ]9 xint n,m,array[20];
5 R5 J' v! Z9 K, s{. M" l0 G# M5 m9 b5 H5 j2 _6 i
int *p,array_end;
( D4 d. t6 G" c! k1 u. @array_end=*(array+n-1);; U( H# }" X: m( Z& e$ v
for(p=array+n-1;p>array;p--)
; M: n, s w$ N* D7 l *p=*(p-1);5 A* L" x$ k7 ~4 r
*array=array_end;
4 S! r6 i% g: P% F* k m--;/ _. B1 D8 T3 D# ~
if(m>0) move(array,n,m); Y) o( h+ F% T' r& s+ X7 ~( s
}
: E# i, h' e7 |/ h==============================================================
+ \, U" u' Z3 z$ | I3 T: a0 ~$ x【程序69】
# @) R- ?9 o7 x" o2 E+ l0 }$ g题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出# G: H7 A- ?# J' _& ]
圈子,问最后留下的是原来第几号的那位。 A, }, ~7 ^' C& o- C) T- X
1. 程序分析:- J4 e2 B( P, \# f6 I
2.程序源代码:
" B- a% |. A) @9 a' H- b#define nmax 50+ I& N0 u- h. R* m
main()2 a) [( E" t( F; G
{4 k$ J! v* F9 N* Z3 F
int i,k,m,n,num[nmax],*p;6 Z! p4 H; M9 O- E; G: k0 ] \$ n
printf("please input the total of numbers:");6 u3 w* P; h1 Q1 y* h
scanf("%d",&n);
9 H" _* A u+ j; M& a( P2 D" l0 Yp=num;
. A3 f E: X& y! v' X( Nfor(i=0;i<n;i++)
: T3 z! B) p/ S( z. f *(p+i)=i+1;
( T u! v' R+ R$ Y* W5 X i=0;
6 ^8 m# Z" G) Y, y) I, i7 E k=0;' i4 e! T. ]4 e' u3 v$ {/ z
m=0;4 f* F/ |- ]7 K2 s5 g) o
while(m<n-1)
( z9 W3 N* l8 K# f' D {/ d# u5 S" Z; S4 j$ H/ |& N
if(*(p+i)!=0) k++;" c- I% J8 _; q2 l
if(k==3)
" x7 ]% H% ]/ J6 O3 Y { *(p+i)=0;
9 L- S% }' G% W5 M k=0;
: z/ i$ g( @5 n- M m++;( p+ K( ^+ M) x2 {& m
}4 _. I [: \' \
i++;8 U- J& \% s* G, }/ h) c
if(i==n) i=0;
- c0 t4 T B$ z1 ?* L}
" j/ o; I: u j' f7 Jwhile(*p==0) p++;0 A6 T8 I( J" E0 S5 o
printf("%d is left\n",*p);
% z" t( N- c3 z}" [1 u# m5 u% i- t. I/ _
==============================================================5 j; s' M: E# {* [1 G, t! `
【程序70】
( A" Z+ Q m: k8 p题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 5 k& i- e6 [! [- ]4 @
1.程序分析:
( C3 M1 f$ O) k1 l! W% {2.程序源代码:! u/ l g. H; v( _ m
main()
0 F: l1 V3 ?6 y4 Q0 ?, o& M{
, ^5 W7 T" A z4 r' Y& Uint len;
# A3 \3 M4 r5 x: z/ Tchar *str[20];
4 G' Q& U. y( q Hprintf("please input a string:\n");$ H' ?( P- c; S' Y+ r
scanf("%s",str);
3 ]4 Q# V. u% A% Z3 Llen=length(str);1 s2 }) |* [* u7 B
printf("the string has %d characters.",len);
- S, t3 x }' ~' r; F}! A& c2 |1 r1 p6 E. r% E! F
length(p)# n6 l1 b4 s3 B
char *p;
7 }- U' W L* n( p{. D1 y6 B9 o4 U/ V9 d, j
int n;
9 r. F+ v- z' }n=0;- E j% P# G4 p
while(*p!='\0')
3 p+ N; Z7 v4 S ?' d{
2 b* ^4 O0 D0 y$ o7 o$ a n++;
9 }. h R. y G1 s p++;7 r. g, C7 c( Q1 Q
}( F5 r9 e: u7 q2 J7 A5 C9 N. y
return n;
( d' E% C, e( m& G- c} |