|
【程序61】
* a" E5 z* p$ R题目:打印出杨辉三角形(要求打印出10行如下图)
( d: _ }$ V1 y7 m9 m1.程序分析:+ [6 Y7 g( `7 r A+ `/ ]
1
' R' B y+ a* B; D 1 17 M% f) y1 I! W( n& Y4 A, G A4 ]
1 2 1
9 l, J: d; w: d2 J# f* { 1 3 3 1
- Z+ n" l; c- t0 P' Z. r 1 4 6 4 1- M3 R0 [+ U8 [/ F0 W' {- Y' k- t" _
1 5 10 10 5 1 0 L% t- ~. @0 A9 H$ l6 s
2.程序源代码:
5 Q8 v5 V$ U/ d. imain()3 P8 K( p+ |- y& c9 Q( A' F
{int i,j; c, |6 A4 Z5 k8 k) W$ `; v
int a[10][10];
9 O- [# }6 P6 z* Q6 A& t6 P* Vprintf("\n");+ u9 n. l7 u* ?2 G' {
for(i=0;i<10;i++)7 U+ G. H- z7 ]8 V, ?
{a[0]=1;
, D! U' D' k0 N, j4 U$ B% s a=1;}+ F" W* B3 s0 U2 n, U" o9 w% `$ D
for(i=2;i<10;i++)
3 I6 Z1 B7 |3 v" Y for(j=1;j<i;j++)' z3 n3 h2 @0 N# p8 K
a[j]=a[i-1][j-1]+a[i-1][j];# ?8 |: `. D1 h& h+ e
for(i=0;i<10;i++)
( A( J) s8 P; j5 F, y3 X; ^ {for(j=0;j<=i;j++)
& _# c6 u& d) B$ J0 B printf("%5d",a[j]);
$ P" T& K7 v) X6 ^ printf("\n");
" Y- q9 c5 m6 a! f/ J$ p }
# W/ S3 J! T; y3 @8 k6 m}
T, `+ o0 D4 j( p# i' Z* W==============================================================
: b5 h( S9 C0 g) D7 D$ \& S【程序62】
$ I" F, [ v& V2 L$ i0 ]题目:学习putpixel画点。
$ S3 d) I" u6 t- @! F( K1.程序分析:
2 G* o- m( H/ t( J$ p4 ?9 J2.程序源代码:
) k8 V# M% A: O7 n#include "stdio.h"5 g$ b* d9 o2 V" ~ @- D2 I
#include "graphics.h") h3 F0 ]/ D' E4 \0 x. G% c6 _
main()1 U$ K. u7 v3 j
{
! e4 B& t, G( n$ e* p$ Mint i,j,driver=VGA,mode=VGAHI;2 D2 y- z! A% u* @1 ~
initgraph(&driver,&mode,"");& ?7 I w% b4 w& T; J
setbkcolor(YELLOW);
7 L9 N) X0 [% R1 V; R7 Dfor(i=50;i<=230;i+=20)
, l9 X2 o y1 [* i1 O for(j=50;j<=230;j++)
: L ?9 D* x- G/ P5 T" S* P/ G. W putpixel(i,j,1);9 g* }. z5 U) g3 o
for(j=50;j<=230;j+=20)& Q" ?+ a9 P7 W4 f
for(i=50;i<=230;i++)0 M D9 v' |8 I
putpixel(i,j,1);* W! C; D% y5 O3 G8 Z6 e% e" T
}5 G0 I) q2 T p; s. R
==============================================================, ]) _. [5 ^. N5 n+ c! c: S, d
【程序63】" w) }- i2 @/ u$ g5 ^& k: Q: ^; k
题目:画椭圆ellipse
* D3 ?: m8 T) x1 R: Y9 ?1.程序分析:0 I6 W8 E7 Y/ |4 Q6 q/ z' @
2.程序源代码:
5 K9 N7 z" b6 \' ]4 X& ~: E# \* r, c#include "stdio.h"1 K8 s. Q5 C# g. B
#include "graphics.h"
) _: f) y5 c; G7 r' o; j#include "conio.h"5 t( R3 G ~3 }# V, S
main()) L& y7 o) L" C# a0 e8 v* z
{
8 q: u( T; |) m" g2 f% Jint x=360,y=160,driver=VGA,mode=VGAHI;) X( l% n, v) I
int num=20,i;6 c ^# V/ B6 g# o% g6 H2 Z
int top,bottom;0 j. Y- x2 i! `2 q
initgraph(&driver,&mode,"");" j4 g- N" h9 g& }/ o* H
top=y-30;% P$ {; M" |$ \. m5 Z0 C$ q- f5 Z5 D
bottom=y-30;- B' v7 F' M. m7 h3 ]3 o3 Q3 C
for(i=0;i<num;i++)
9 ^, C" s9 U. T# e7 D{! Z1 p" B6 i o* r7 F) V
ellipse(250,250,0,360,top,bottom);
' P1 U! f3 D. ]( V Q, {2 f# ztop-=5;$ n5 q8 h% t; Q# Y! M2 M& Z
bottom+=5;
* [- b9 O9 S6 Z: `. X}/ t$ b4 V: y: v0 Y! G5 H
getch();% O' F0 e0 |: Z X; R
}) ]5 t$ ]$ H3 x( h/ F$ Z
==============================================================
3 V: [" G2 ?. O {9 `【程序64】
) `; d) I( E2 ~4 l题目:利用ellipse and rectangle 画图。% p C. |" @8 L! x. V% Q' u7 c5 L
1.程序分析:
2 j" x: F1 |2 d) D0 e* r U5 |2.程序源代码:
( b2 s1 N- h: B: ]! d1 P: ?- ~#include "stdio.h"
" c% T' Y; X, t; e#include "graphics.h"5 Y8 f# b- k9 t/ r" K
#include "conio.h"
$ H- m8 i7 Y5 b9 n9 f( Smain()
: }' B/ p' g$ u ?( K+ I{$ C. r3 j/ q0 T2 |3 J
int driver=VGA,mode=VGAHI;
8 S5 I; u! S1 x" j0 g- N$ i$ m. C6 [int i,num=15,top=50;
6 X* o4 Z& P/ j& X/ nint left=20,right=50;
7 N d3 B8 ?. K$ ^2 dinitgraph(&driver,&mode,"");7 E. w" {# x. F
for(i=0;i<num;i++)
; x \9 V. b: H# b0 W( z) ]{; h, `0 q% {( J
ellipse(250,250,0,360,right,left);
5 E6 t* V( Q1 w6 ~, E0 S6 z/ iellipse(250,250,0,360,20,top);
# h. i( `) c. Q- C trectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
1 H' Q/ [/ L# c4 `( o: Vright+=5;4 i p8 E) s- u: K
left+=5;0 R9 V2 K+ `3 j& D: d. k
top+=10;( j+ |5 V$ e" H8 m5 x+ w# `0 a9 T& d
}2 J% K7 L* l+ R( z; \
getch();
& v& d! |2 p4 R2 |}. B& n# S! u! O( M4 n& u: s
==============================================================5 l; P+ b G/ [: ]7 `# G
【程序65】1 t& L7 H7 @& d% K/ T% w- i6 o
题目:一个最优美的图案。
. u8 i* z% B! d9 O5 _( r9 B1 M1 r1.程序分析:
# e1 U1 h8 y; O2 v; D" e2.程序源代码:
8 ^7 z3 T0 M9 D2 o# C, s#include "graphics.h"2 c+ A" |7 \5 M" B2 q' i8 G
#include "math.h"5 |' H+ U4 S1 k3 B- k% C# F4 x
#include "dos.h"/ |3 X6 E( B8 I7 v( g. a e/ }
#include "conio.h"9 Q' _$ o3 O; j4 \
#include "stdlib.h"
k- Y5 |: `2 a+ [) @4 T; T, }#include "stdio.h"
8 `7 q- ?( K- C$ M0 h& I#include "stdarg.h"
, d5 [. T- ^, q E2 A. P2 c#define MAXPTS 15" T& ]* K1 [5 E) F7 R
#define PI 3.1415926+ X' C% |, p6 E! l8 G
struct PTS {
: G' H5 l4 ^! U9 Rint x,y;
' t5 p* E/ _+ `# j};
, @1 S# X( x% O6 `, _! U. Pdouble AspectRatio=0.85;
+ x( R) G2 ^9 j& ]3 s, E3 Fvoid LineToDemo(void)/ I5 i' {( B; B1 U$ w* H# {/ r" K
{/ @$ n9 Y& Q5 F/ z0 P, Q
struct viewporttype vp;
* ]: ^/ Z6 Q, Ystruct PTS points[MAXPTS];
' ]5 M3 E& ^9 G9 ]7 O1 z! Gint i, j, h, w, xcenter, ycenter;
1 F4 J" G4 _7 y) Z4 Y# y- xint radius, angle, step;1 B' W1 G z: q
double rads;. v G: ^( `7 F, h
printf(" MoveTo / LineTo Demonstration" ); O8 O' O4 Y+ I9 p6 Z" P6 L
getviewsettings( &vp );
# I5 S% H" _+ v" Dh = vp.bottom - vp.top;
* o6 H7 ?2 l7 `- {w = vp.right - vp.left;* c* p% [+ G+ G7 m
xcenter = w / 2; /* Determine the center of circle */1 L& K+ Q" ? p' P
ycenter = h / 2;& E! \# c9 i' C
radius = (h - 30) / (AspectRatio * 2);
7 @0 v/ I/ W B9 d3 g! l: astep = 360 / MAXPTS; /* Determine # of increments */ w% o% B7 D1 O
angle = 0; /* Begin at zero degrees *// z8 ^! L& g8 ]% G) n9 l) m
for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */; Z/ b) m& X* S2 r: S) R
rads = (double)angle * PI / 180.0; /* Convert angle to radians */9 E) s9 |5 n! T" S
points.x = xcenter + (int)( cos(rads) * radius );
% Z/ Q' K$ t6 D; K3 Xpoints.y = ycenter - (int)( sin(rads) * radius * AspectRatio );" f9 ?5 a7 }9 T6 O: _. E
angle += step; /* Move to next increment */
3 c- b6 T( }: @4 C}/ ~/ w) }! U% ?# p+ b& k0 u7 W
circle( xcenter, ycenter, radius ); /* Draw bounding circle */2 C! b" ]+ ~; }: D8 G1 X/ y( ?
for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
1 ~8 t+ Q1 D4 g @3 Afor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */4 ^2 [, t$ i8 ?# `3 G( H2 D
moveto(points.x, points.y); /* Move to beginning of cord */9 V) K: u/ r A# U$ H0 A
lineto(points[j].x, points[j].y); /* Draw the cord */
* `7 J8 f% A# {9 Q* |4 i) `4 ~} } }' Z9 \( V) a5 R. g
main()7 T: V6 N4 N7 e
{int driver,mode;
, H; m l4 S/ H- l7 |/ G8 Mdriver=CGA;mode=CGAC0;9 `2 J }4 O- d# x: ?
initgraph(&driver,&mode,"");
) I. K# h6 t3 q) x+ a T8 j: ssetcolor(3);
/ V: Y: l3 b+ E3 t) @! u+ tsetbkcolor(GREEN);
) b4 G6 ~" ?: cLineToDemo();}
3 o3 M: ~6 R9 @9 r8 Z. n1 n$ f& R2 P==============================================================* W, U0 v8 b7 d- i
【程序66】
: [: r8 C/ }5 w7 R t题目:输入3个数a,b,c,按大小顺序输出。
9 Y {0 C+ r. p$ m0 \1.程序分析:利用指针方法。% [3 V2 c0 H" M8 E; Y7 z3 j
2.程序源代码:/ y, \1 c* U; c5 h; T$ q
/*pointer*/
! V6 M# Q# t* G6 v+ s6 u- qmain()
) l8 ?/ G6 i9 d; E& ?7 o{
0 K& p9 n x1 dint n1,n2,n3;
9 _1 l$ U5 v2 W x, m6 K7 d9 aint *pointer1,*pointer2,*pointer3;
. g5 g0 w1 b) v2 n- I. Fprintf("please input 3 number:n1,n2,n3:");
7 I" ?4 P* M h4 x; ^* q( nscanf("%d,%d,%d",&n1,&n2,&n3);/ S4 e. O" }2 y' ^* A
pointer1=&n1;. c* J2 H+ [4 F! v: s
pointer2=&n2; z! w, P& w3 B; X7 A" Y! g
pointer3=&n3;; m X7 f0 O' r3 R6 h
if(n1>n2) swap(pointer1,pointer2);
% A. m% ]. Z: u) m* d% }, H! ~/ Gif(n1>n3) swap(pointer1,pointer3);
5 B# M& e6 T5 M# X2 tif(n2>n3) swap(pointer2,pointer3);
% w1 n/ `% F( qprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);+ ^! p7 S+ L6 G( r* b
}
# [ M7 F1 F, {% Dswap(p1,p2)
, O6 u4 Y$ a: w' E6 `int *p1,*p2;6 y% ?# `$ P' A3 q0 S+ z/ I
{int p;; f5 z4 U! x7 ^6 j
p=*p1;*p1=*p2;*p2=p;
7 w5 h) s/ t1 J v}/ z8 ^7 U' @; |' z
==============================================================
, I! L S2 |% t7 o/ h ]8 u【程序67】# _* T7 |3 [6 z) F( }' |
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。( ^: q) y( A0 D1 m& S% ~
1.程序分析:谭浩强的书中答案有问题。
0 i3 a& C& a! N/ G. |' E2.程序源代码:+ a- c# M# w" e- R1 |* U) z
main()
' R' |7 L" o" l' J( q, H{
- s- \' z9 g. @: a% |; e$ yint number[10];% ]6 [) i/ Z8 F* Z2 _9 h
input(number);
8 ?" R$ J4 l2 U; fmax_min(number);
, z9 _* E0 C# F) X! M% _output(number);$ O# G2 D5 T7 w: v' Q
}
5 b, E7 B q3 }) D# ?3 D% m) tinput(number)1 x; N8 A1 J* q
int number[10];
- }1 h- u% a2 o& b3 k4 U{int i;1 t, m& d6 t3 }- J7 R% ~9 e
for(i=0;i<9;i++) E. d7 w, }3 r! h; d. Q
scanf("%d,",&number);5 Y' V! _; @' }' Y2 H, o+ _9 ]' B
scanf("%d",&number[9]);
$ c# H0 ~1 h) V+ A1 D* p; ]}* p" |! L) z6 |3 q& I1 _
max_min(array)
' v7 H }6 X/ v. U; jint array[10];8 B/ _% m, S- F! \
{int *max,*min,k,l;. K2 f; M! U o* f8 W) Y6 ~% \9 @
int *p,*arr_end;' f% k6 Q* h) e9 Q
arr_end=array+10;
& Y8 s2 j; P) @max=min=array;+ i! D0 c4 o5 |1 W
for(p=array+1;p<arr_end;p++)
9 B4 Y4 Q. G6 i7 O2 a% j) R if(*p>*max) max=p;$ u5 n- `/ D2 j; }% D. _
else if(*p<*min) min=p;. N1 d9 s+ j4 x; C7 `' `. a9 q
k=*max;( o, t6 [# o* o
l=*min;
9 I0 C# I' ^/ Y( ^/ d. z) X2 s *p=array[0];array[0]=l;l=*p;
! a( w; R/ |# e) l# d# u *p=array[9];array[9]=k;k=*p;1 N9 p0 l( P3 D2 p7 w) a# s; _
return;2 Q$ g: w2 a% \3 I( e
}9 e0 M7 D3 I) X2 \' A" M' I [
output(array)
1 ]/ \2 X6 n% V7 v; Eint array[10];9 T1 J% Q/ ~1 ?, i/ _
{ int *p;
. @: }2 {9 Z/ F+ G5 yfor(p=array;p<array+9;p++)+ r, `% ^- t- V: l
printf("%d,",*p);, a' [0 C! q; ^) @2 V) z
printf("%d\n",array[9]);
: M' S& m; \3 S}( D+ `/ @% m/ ~! x
==============================================================
! l8 e7 K' r! U8 G- e【程序68】
/ c: i v( v2 b) ^ j+ V题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数6 V+ H: _9 ?8 W
1.程序分析:
$ Q# T# e7 E+ T2.程序源代码:7 k5 C9 g$ s4 h; ^
main()& t5 q' K# v9 l \3 C: [/ @, P
{7 U o8 F0 X! O) z" E
int number[20],n,m,i;+ X1 g9 R! j' S) V, D5 ~: S& {
printf("the total numbers is:");: e# d3 ^+ |; v0 X% E+ A: \9 F: Y. X4 W
scanf("%d",&n);
! b& m$ x: b3 O; yprintf("back m:");
& `; Z& Z; [% Kscanf("%d",&m);" ~7 P: N6 z+ v2 R0 l0 H
for(i=0;i<n-1;i++)9 w' m$ Q$ E) M7 o5 I
scanf("%d,",&number);
: D9 N( e" Y* g# n# Q e) y P' rscanf("%d",&number[n-1]);- F1 [3 M3 V. |" f9 O N
move(number,n,m);
7 |- {4 S9 I3 G/ xfor(i=0;i<n-1;i++)
+ h1 l' |" W8 a2 g, U printf("%d,",number);! T+ z4 q/ q/ x* D( W3 m
printf("%d",number[n-1]);+ }0 ]0 W8 G( m5 L, n t! O+ \
}8 N/ z( t: m9 |2 A! \9 J
move(array,n,m)
8 a) q& u1 A3 o; ?1 Vint n,m,array[20];. q+ X( {* d) }: _( x2 b
{
5 g; w; u. [+ w8 p/ `4 H: ~9 V6 \int *p,array_end;7 @7 N3 ]# K: v& l& p
array_end=*(array+n-1);
5 F2 k- z3 X9 T& u0 Gfor(p=array+n-1;p>array;p--)1 J# u2 f3 x! g0 S
*p=*(p-1);) }* Y# X' q+ d+ D9 [
*array=array_end;5 E, l e& t6 P
m--;
7 |4 a; ~% x9 [. c if(m>0) move(array,n,m);
9 j# R2 G+ ~! m2 Z7 w}$ b) d6 X5 F. a, f) g
==============================================================
* D3 A2 h8 W1 C6 B L7 i" L6 n【程序69】( k6 [4 }" K. I% w1 p* V6 p8 X8 `" }
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出* T" d e& S9 D. B3 K: ~
圈子,问最后留下的是原来第几号的那位。8 W6 e6 q, I0 h! V/ t ^' m" L
1. 程序分析:
; L# q* {+ n. T3 d9 _1 ^2.程序源代码:# B% p/ C9 k& h" f8 ^, |7 F
#define nmax 50
" C e$ M. ]% b% j( ymain()# ^: W0 P' H# `: R" V
{/ ^# |2 O! P5 k2 \$ g+ g
int i,k,m,n,num[nmax],*p;
, `6 \: f: x, u7 fprintf("please input the total of numbers:");2 {) o3 ?( p$ P L% v) ?9 A
scanf("%d",&n);( f1 ` o O/ ~6 g3 C
p=num;
0 v- C7 ^! \4 G2 V6 Vfor(i=0;i<n;i++)( \! E, {6 ^/ a5 ~8 n( B, {1 U
*(p+i)=i+1;- t1 E s/ f, x9 f. R
i=0;2 ?$ }5 l e' k) N5 h `' Y
k=0;
+ z" @+ N5 _ _4 x B m=0;
) x# V) a+ T$ r. B5 [ while(m<n-1)5 d" m6 y1 f) _: P& f6 s
{
7 W5 C9 e) z. N* a- k( d if(*(p+i)!=0) k++;
* S9 M& \! N" @ if(k==3)" a* b+ [' A- F3 G7 M2 S3 Y
{ *(p+i)=0;) b, a o; m" B. [$ L/ W/ {+ M
k=0;8 t. `8 p) ? @5 {! E- T4 k1 x
m++;
6 P% q* l7 m& q3 V }' g8 D/ z5 f7 }' {! c
i++;# C1 n/ N( p- p1 h/ j) a- v9 {
if(i==n) i=0;
4 c0 E7 }9 t9 l, p# M4 i g}8 Q4 e9 l1 O1 Y
while(*p==0) p++;8 M+ ]) i' p+ P- x8 f
printf("%d is left\n",*p);/ ]% a0 S2 N+ `! s$ r' m* z, `
}
# Z1 n& B n+ l# M& [6 i==============================================================+ v. ^( O& m% H' F; Z; g
【程序70】
; W' E$ L: t( y+ n; J- M题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
8 [0 E8 k7 D# _# h' Y' I$ q/ s6 z1.程序分析:
0 u9 j+ u" ^4 d' |) l3 N' A2.程序源代码:
/ C5 z+ Y0 s5 L. L/ [main()
# B7 C) k! G2 v( G. F9 s0 |2 R1 m{
0 S/ q Z/ @0 N2 m# r7 \int len;5 J1 x% b+ S2 r/ R
char *str[20];
- p& g6 b& q7 j0 k& S! g% t) E/ ]printf("please input a string:\n");
0 H& B0 [ C. V. s8 L& G, Lscanf("%s",str);4 u8 X! v, }- {. m
len=length(str);
j$ C, I5 k' ~' Cprintf("the string has %d characters.",len);
- L! [/ g9 T, D; b, g}
7 _8 U' p3 M+ A# |" d% P( W1 e: {length(p)
$ g" c' A, E/ |; }$ nchar *p;5 R J4 `% \! U9 H' f
{ R: f& c* h; E) A! F% c$ d( x
int n;+ q2 l" Q) F3 o2 m$ [
n=0;
: A" }5 w9 a3 z' }4 Zwhile(*p!='\0')
* }: W: a: n" R$ s i6 Q. [# J$ B{% K( Y0 c2 ?' u0 H6 A' [
n++;; Y: E0 E: w! B
p++;
6 {) ~1 g2 U4 h7 j9 p}$ V+ J! s% U) ^. E9 x: |
return n;1 o( d) ?% I4 p% W9 D( Y4 @2 x
} |