|
【程序61】5 u& C) Z3 U4 B7 n- ?1 {
题目:打印出杨辉三角形(要求打印出10行如下图)
7 u' U% t" o) D a9 s3 b1.程序分析:* U0 X$ o n& i
1
2 w3 l. Z0 E, z9 _# h7 T 1 13 `* S8 E5 @% U: I
1 2 1
3 {9 C! t! _5 ~: E 1 3 3 1$ \8 r5 |; q# |3 s
1 4 6 4 1
' o! r3 n' E' g- B X: y: p! Q, V 1 5 10 10 5 1
" p$ k. E/ j3 X- ^# j* g n( u/ J2.程序源代码:& S# E' t y+ \5 E
main()
6 M; z2 M8 Q- H h6 `: Y{int i,j;
+ g) D# o ~, K( d8 q G% kint a[10][10];
8 y5 A' [( ?7 V/ [printf("\n");1 Z" c! b& e/ s# c7 m0 B
for(i=0;i<10;i++)
3 N" l8 K8 J( G- {9 H% A {a[0]=1;- \# s7 M& l7 Y% W- ?
a=1;}
6 v! K5 j: Z; w' o+ Cfor(i=2;i<10;i++)
1 @8 L% d' J0 m3 D7 h0 j8 r/ Y( F for(j=1;j<i;j++)3 E8 D9 \! d3 f: d ]
a[j]=a[i-1][j-1]+a[i-1][j];* ?" L, d; T. J& p$ X5 M
for(i=0;i<10;i++)* A4 `3 K) j7 I# Z3 S
{for(j=0;j<=i;j++)
; K; D" R) s/ [5 M printf("%5d",a[j]);
8 S; g1 |3 U8 \' k printf("\n");
/ ]7 G8 M% a2 [4 W4 Q) T }2 R5 j J# Y0 B3 z5 N
}1 J& _) D; k7 `
==============================================================
# K* j# r+ C+ K+ F【程序62】2 i9 ^1 w# M2 ]2 }0 `
题目:学习putpixel画点。9 j+ N$ F" `! [( x3 J- r+ Y
1.程序分析: 2 A# w, L% b- C: a7 w
2.程序源代码:
6 p: j; `) j5 b* g: b; n#include "stdio.h"
n8 e' O% P3 Y#include "graphics.h"7 B: K; c: [" O" _/ ?4 n2 Q/ W) g
main()
+ C4 f( F- _2 ]{
' \& c) D9 ~% y, c; mint i,j,driver=VGA,mode=VGAHI;
7 K, w$ y7 V6 q; }initgraph(&driver,&mode,"");' k* l# a" P( j' y) k! v
setbkcolor(YELLOW);
% N+ R; W* w# _1 |: jfor(i=50;i<=230;i+=20)$ f, o6 m1 v0 Q0 M/ e1 q: \( ~
for(j=50;j<=230;j++): S: q% L5 K$ N& K5 U
putpixel(i,j,1);( f8 i3 k0 V: R6 l) T
for(j=50;j<=230;j+=20)0 T3 X# ~. n/ t& q4 A9 O
for(i=50;i<=230;i++)% L! K. j* i0 x9 @
putpixel(i,j,1);5 m* H9 ?. v6 f
}1 H# Q$ d' v1 I* N! ~0 p
==============================================================
, X5 k1 X( n4 t- x【程序63】
" u3 E% p0 n8 _& K* i2 c' y& I& V- \题目:画椭圆ellipse
1 a6 t- v* `6 Y, G, R+ ~) W1.程序分析: t, r3 D9 A4 O( _7 j
2.程序源代码:
+ b0 ?0 ^& x- i, m3 e1 i: G4 \; U#include "stdio.h"6 ?- I9 o1 {7 ?( a( H7 s/ f
#include "graphics.h"
5 \* {& p0 |: G#include "conio.h". c; w5 l6 @6 ]0 _+ B9 q5 ?4 G- \
main()
' I" [. C' U* S7 O# K+ i{
: v2 P6 }, g. g, f3 [1 Pint x=360,y=160,driver=VGA,mode=VGAHI;3 I) M8 B t) ~% z0 v
int num=20,i;! [) i3 w) I' @' o1 K
int top,bottom;
& H- F; ^# [2 S; A7 `& Kinitgraph(&driver,&mode,"");5 L9 N' B0 d9 S1 H
top=y-30;! B' F" t4 t2 ^) n/ H
bottom=y-30;
& n& @. e; c: f- P- t) u& V- M: yfor(i=0;i<num;i++)
6 d; {+ m- {8 Q I{
' ]' h$ O, R. Fellipse(250,250,0,360,top,bottom);
3 S# ^9 D; x& N( stop-=5;
, s+ J) A1 }2 ?bottom+=5;! {8 r. @0 B4 [8 K2 u
}& M( C' z$ \! p& y( H) w
getch();. A. @# b1 N2 K. c" A3 ]% c1 e
}( R& d8 H. k! t/ _- ?9 ]: G
==============================================================5 J8 C3 [+ Y) ?# K) T
【程序64】
0 x0 n2 k7 k% g0 ~1 |+ q5 L) o题目:利用ellipse and rectangle 画图。
' Z$ Y4 k' l' \3 p) Y1.程序分析:2 h( H u$ G; E+ ~/ ^
2.程序源代码:
* E. ]" j" _' [4 N#include "stdio.h"
: q3 G, W: ]2 g" M# h* m! Z6 d#include "graphics.h" q; m5 s4 G: U5 N1 E
#include "conio.h"# c! R# W6 Q1 h2 `2 ^ Z
main()9 V9 _; H# W. A9 J+ [1 \
{
- [ A5 L h4 j! f; bint driver=VGA,mode=VGAHI;
$ e. n9 x( S; ?int i,num=15,top=50;" J4 B, c" |9 L0 A/ R" `4 \
int left=20,right=50;$ Y; K$ ?- o b; _
initgraph(&driver,&mode,"");) H5 W, ^/ y$ i6 z% H) {
for(i=0;i<num;i++)
1 F; ~2 }. }) j; E$ |/ l9 m* I, C) Q{
4 [8 y5 k$ w6 W' Qellipse(250,250,0,360,right,left);
/ H9 o, C+ c, A# `7 o+ C6 w: Vellipse(250,250,0,360,20,top);0 ?2 E# C' C6 t
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
, T5 M; W& I& u. s! ` K& eright+=5;
2 W' z( \# d Q7 D+ ?left+=5;& W# J3 g9 S3 s& k! ?$ ]
top+=10;7 n0 `9 n. Z( V# y! p
}
B" v( g; \% u9 A4 G2 J+ e Hgetch();" t# y) w2 p& _2 C- m x& V; Z8 W
}9 a) B6 h. X/ _2 Y/ K
==============================================================. N, c/ ]7 o- I0 v- A b. Y! E
【程序65】% d5 R) O: U' D1 l1 f! Z
题目:一个最优美的图案。
7 E1 x& ~/ Z% n4 P7 E1.程序分析:3 x: ?; G+ N( h' i! f5 o/ d
2.程序源代码:+ j* E, @2 L' m* _0 e0 z+ u
#include "graphics.h"( {9 E$ a- }7 c+ G. o- E
#include "math.h"/ Q8 s8 j& r& Y- z1 i6 Z) Z$ R0 \# B
#include "dos.h"" v0 e0 K, j% F" |. @
#include "conio.h"
6 r5 Q6 T6 v/ B; |0 v/ V+ Q( p#include "stdlib.h"
+ a. U9 x9 S+ t#include "stdio.h"
/ t$ E) Z% A# b$ H4 o#include "stdarg.h"2 ]5 n" p& }$ }* @3 l
#define MAXPTS 15
' a. V( ?( ~. p* J( |#define PI 3.1415926
; Q1 l: m5 H% i4 ^4 Q( ~: tstruct PTS {9 R: x* s' ]1 r! O- a! N4 C
int x,y;
! e& D+ f _& J$ }: c};" n- y2 k$ [7 t2 z* [
double AspectRatio=0.85;
y+ B% h1 b* |5 n6 o, g, hvoid LineToDemo(void)
( h9 X- ^9 {% D3 t7 m{
$ S# ?8 W; K7 |' W# estruct viewporttype vp;
, }1 n9 m! R7 ]% bstruct PTS points[MAXPTS];" ~/ Y4 s& B, W& z9 |, P
int i, j, h, w, xcenter, ycenter;) o# L) w( g9 i) ~
int radius, angle, step;2 y: a; q* F' `0 A2 ?# I
double rads;: B; D& ~$ b: ]0 I
printf(" MoveTo / LineTo Demonstration" );8 f' B- K0 q8 I2 F; w
getviewsettings( &vp );
2 T* w! @% G D( P/ _h = vp.bottom - vp.top;+ M. C/ G1 K" E6 ]! q: h1 C
w = vp.right - vp.left;
9 `; e( r0 N+ h% v! e1 I0 }xcenter = w / 2; /* Determine the center of circle */' U& ~* Y# {6 Y K9 Y# u6 ]% E; ^
ycenter = h / 2;
% Y5 t7 L0 F- Iradius = (h - 30) / (AspectRatio * 2);& T" J6 n2 n# y* i4 R
step = 360 / MAXPTS; /* Determine # of increments */. q) H% @4 T& v! X, I' L
angle = 0; /* Begin at zero degrees */3 A- E" B3 O2 h" f
for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
9 y, ^0 X. \* D! f4 b1 G% l# _# Urads = (double)angle * PI / 180.0; /* Convert angle to radians */: x0 T% i) u8 [+ J( [. x
points.x = xcenter + (int)( cos(rads) * radius );
) c# S( [5 c; z- hpoints.y = ycenter - (int)( sin(rads) * radius * AspectRatio );* ]8 f' s* L ?" A1 {: K/ j
angle += step; /* Move to next increment */
1 [3 {( A/ U3 K5 ?8 }+ K}
6 q0 I& A+ k/ E2 y& D& @: f9 ocircle( xcenter, ycenter, radius ); /* Draw bounding circle */
! Q8 i9 a2 O1 \5 C* _for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */1 f' x% [( i4 |2 s9 ]
for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
; J5 S, H$ P* M. xmoveto(points.x, points.y); /* Move to beginning of cord */8 o2 `4 n, s+ o) c
lineto(points[j].x, points[j].y); /* Draw the cord */
% _1 T$ ]. U( y, u# O* o/ a} } }
% t5 f, d7 V9 q$ v' {1 ~6 n0 cmain()
$ ~% s, ~, {, U. J+ j# Z3 z{int driver,mode;
5 v1 B6 C0 ]0 M/ W) kdriver=CGA;mode=CGAC0;2 }0 V( ]# j2 a J5 c3 b1 i
initgraph(&driver,&mode,"");
" _( J& f, C* N t. _# F8 asetcolor(3);% f7 e' ~. |+ V" \! e/ \
setbkcolor(GREEN);: m( L+ \' M1 j- Z H
LineToDemo();}: E2 [& I! s* N1 W
==============================================================
6 X" N9 v2 f1 @- W9 p【程序66】
! Y+ B6 A5 _& N8 C! S, \题目:输入3个数a,b,c,按大小顺序输出。
. o) U, ^1 C9 V8 i: P1.程序分析:利用指针方法。1 C& g& o1 A: v2 ~
2.程序源代码:1 i% N0 ~0 E8 ?: O4 o7 a! d, g
/*pointer*/
" N9 E/ I/ g2 M2 ]& [ A Q! Tmain()
3 N2 U7 z; P- J1 k/ R% ^# S* C; G{
9 \* q7 _5 |5 e/ l8 V# X/ ~% Xint n1,n2,n3; V& r X+ L9 `. |* U, g8 y9 k
int *pointer1,*pointer2,*pointer3;
# J" i/ G( |* p7 y( N8 `. A% gprintf("please input 3 number:n1,n2,n3:");
; [( I) y( `) R5 pscanf("%d,%d,%d",&n1,&n2,&n3);
. W9 s! e) z" L7 wpointer1=&n1;
+ c! l8 s/ @8 U; dpointer2=&n2;
7 U4 p' a) e& H( ^) ~pointer3=&n3;
3 _7 o6 F1 O& I$ Q6 S& i) lif(n1>n2) swap(pointer1,pointer2);
8 f8 u- g% \. Cif(n1>n3) swap(pointer1,pointer3);% v0 F: n' p( b! W
if(n2>n3) swap(pointer2,pointer3);" @+ k& Q2 @3 \/ C
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
- ^8 I p2 X9 X2 Z1 u' L7 l* y}
1 S! Z9 X2 s1 v3 [: @: Q' c2 mswap(p1,p2)4 d- e% A! E7 V+ C, }( I7 S
int *p1,*p2;) ^8 Y7 }" F- ?) b% n
{int p;
% i4 G+ P8 j, p% d9 ]0 N0 `: v mp=*p1;*p1=*p2;*p2=p;" f' _! l. p: U) f6 `! H2 Q9 L0 H
}
6 H, J; v" l" O& r9 o2 J- L==============================================================
7 x/ a* P' t5 u( `【程序67】: T7 V$ q0 U p6 w" M' d6 _; \6 _3 A
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。( _: f( [3 K" N" f9 s7 x4 n
1.程序分析:谭浩强的书中答案有问题。 4 c& J) ^/ M( }" ~: z: t5 s4 b1 X
2.程序源代码:
) k' @/ u* p" N4 } }6 y6 Kmain()
. {9 V. s. @( S2 E7 L{. F' B/ D: K" i$ H8 L. I) o+ d
int number[10];+ F5 M2 W- O; o4 I7 i) U
input(number);
/ W. g* H( v1 V3 M5 z* W6 U" rmax_min(number);- D$ ?0 ~8 |) O# E/ @
output(number);7 [0 j' `# E4 C1 A2 W* G
}
$ Q6 k% I, l5 D+ L+ Cinput(number)3 x7 L0 P+ l. [6 X% i; s8 t; V
int number[10];
" B+ b( K E+ x6 |{int i;, T& I: c$ i c% s5 p; G6 H
for(i=0;i<9;i++)
* j) d+ r( G2 d scanf("%d,",&number);# p$ [* [) n0 d7 h( M+ E$ n
scanf("%d",&number[9]);
; M, p% z7 o- [6 s}
7 d- Z! }" g( amax_min(array)
( k- F" o8 T& a6 M5 M. M& {int array[10];* W& {/ \: a) U' ^, x* V! t
{int *max,*min,k,l;) x6 k1 s1 T4 U C
int *p,*arr_end;
8 B7 Q/ O* w( Z) v8 Y7 g$ [arr_end=array+10;# l/ ?' E: _8 {4 P
max=min=array;$ |" [) N9 N+ E9 ]8 T4 r
for(p=array+1;p<arr_end;p++)0 Q1 d2 B4 D" n* ?) P7 S) V& n z* X
if(*p>*max) max=p;8 ^' y+ V" Q" {" F" R$ l: g
else if(*p<*min) min=p;
. U+ |- P- Y0 k2 U4 T, f k=*max;
, R. }8 ?* I8 n$ R6 x9 I l=*min;
2 p7 t3 {( |$ R" \8 N, p *p=array[0];array[0]=l;l=*p;
# e. d/ V1 H/ i4 ~6 t& _, k! ~ *p=array[9];array[9]=k;k=*p;6 ]0 u/ G. G7 B$ J% R4 ]9 P
return;5 k7 U2 Q3 ^/ H3 b" i
}
2 p; D1 K' Z5 routput(array)
- E2 ` @$ Z/ D4 A3 fint array[10];0 ]- Z; c9 E( `7 q! H
{ int *p;0 E' j4 z; x# ?5 C" Z
for(p=array;p<array+9;p++)! s$ U+ ^7 j2 B: `& v3 O4 {
printf("%d,",*p);
4 ]8 y4 i; t# E0 qprintf("%d\n",array[9]);% c! N$ S Y7 U5 X: S( ~' p4 p
}+ s4 |% I! ?: ~' l7 H' }
==============================================================
8 g: f" D& d$ l% o8 |9 \) W/ v+ P【程序68】1 Q1 L2 g! M& N! h* k; O$ \$ L/ m+ t
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
3 x2 l& y" u4 b- d8 H3 ^1.程序分析:! N$ C3 U8 a0 }
2.程序源代码:
& p( ^9 g; W+ i+ u: Cmain()
. C% q2 A" o% S) ^{, }$ P2 U3 u5 N
int number[20],n,m,i;
$ x$ y. n( X2 Uprintf("the total numbers is:");% n3 n2 x+ _) A# H6 ]" `
scanf("%d",&n);
: e4 w1 Y4 Q. Pprintf("back m:");
' `" U0 X$ G6 f" mscanf("%d",&m);
, b+ z% {7 b+ q5 L+ U& @' Sfor(i=0;i<n-1;i++)
+ X2 z( S& v& s* `3 {: c scanf("%d,",&number);
' n& B$ L7 I' Lscanf("%d",&number[n-1]);& \! M6 y6 [$ y& ~7 d, w# m" j
move(number,n,m);
h$ b5 a6 T- H( i3 @' q9 Ufor(i=0;i<n-1;i++)) h5 D4 m% m& O1 }7 U% \
printf("%d,",number);
; E6 p2 y% n5 B" x \printf("%d",number[n-1]);
' Y8 f7 x7 E" o, V* K}
3 n: W0 Y4 P& x# G; x; t5 c" Qmove(array,n,m)0 y" v/ @" {- q& h, M; J( l# r
int n,m,array[20];
- b: {0 d/ H' T8 P) Z7 b6 n' S{
1 B/ e7 i# S( M. q" Lint *p,array_end;
0 I& j1 [2 S* i9 Q+ S- n! G8 }" Carray_end=*(array+n-1);/ ]' J0 h, |* J+ y. S
for(p=array+n-1;p>array;p--)) T' `: W0 ~: Z" b4 d7 [
*p=*(p-1);
! H, v$ t& Y' ^ *array=array_end;) M( l. I5 s% H) C' s1 A
m--;7 z/ W4 f! S$ q* O, x% z2 m* N
if(m>0) move(array,n,m);# \% q( d* W! G" o8 C' j1 ?
}
2 L# G$ t& E) N- t! i& q: g0 f2 `==============================================================$ O9 `; j% q f, r* \
【程序69】4 F" i+ y4 F6 G$ t3 c
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出% t8 s% v! r: [' p
圈子,问最后留下的是原来第几号的那位。3 s4 w/ k: }' m" W* e
1. 程序分析:- S1 Y6 J" Q- \' B* b
2.程序源代码:
) C% p/ ~. q9 i: I6 T: }, f#define nmax 50
, s# {, j7 K% nmain()
0 ~- B; W+ Q2 Q2 V( [8 A{( H, Q) `9 U5 p& D. o( a: O7 q6 h
int i,k,m,n,num[nmax],*p;
$ R0 q& H+ ]9 m% i9 Zprintf("please input the total of numbers:");5 x" x! {7 e3 Q8 O
scanf("%d",&n);
( {1 F& o- [* d% H' w7 |8 P% op=num;+ D* b+ v* q, Q0 \
for(i=0;i<n;i++)
/ M3 x8 n S( j j4 m4 g$ I *(p+i)=i+1;
9 Y* r' Z# P/ I) o; P i=0;) w0 M5 K; ]+ p, A% z% x2 f
k=0;( G- }3 C5 ?7 o
m=0;2 f9 m7 }/ Q' }9 l% s9 b5 C- x! K
while(m<n-1)
& J* k- h0 [" X/ C" B8 [/ c9 @ {
% [! M+ _0 W3 A5 n ^& J5 H if(*(p+i)!=0) k++;
) b0 E3 }( G( N0 ~* T/ n! @ if(k==3)
6 J; Z. c% e+ c- n+ ]: T' `/ c# x { *(p+i)=0;
6 f0 w4 }! o6 {( B) ?% A# u k=0;
3 s! X4 F" S/ c/ u0 W. J. z% b$ W& K& h m++;+ a5 B# r) r W, P% d- Y7 p2 B4 S
}! ~, V! B, J1 T
i++;4 f* r& d1 ]) e' R
if(i==n) i=0;, v3 ^0 w9 k6 s7 N$ E7 [( m
}( h: s# i, B( G5 s' C4 J
while(*p==0) p++;( h C$ L% p) _7 J' Q
printf("%d is left\n",*p); e- y! I3 C y% c/ \
}5 Z6 |/ _4 W# p3 D
==============================================================
3 v0 g5 c1 I* ^; t【程序70】
/ ^* G: R, u- s- b题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 $ \7 m5 \+ H, }, S% Z* [( ~
1.程序分析:
2 f6 x/ |# C j+ W2.程序源代码:
6 [- \3 n6 D: T4 K" m# Pmain()- ` c- f m6 F9 L9 {: C2 u
{
6 Z2 Z0 S; ~- o1 d) t4 mint len;' D- e0 {; u. t1 l
char *str[20];
. J3 H+ i' N% V% O4 P9 b) Y# S, Tprintf("please input a string:\n");
4 ^7 s' j6 @$ j( p4 \3 }3 Sscanf("%s",str);+ {1 a' T- b9 P$ k
len=length(str);7 C& n) h: L8 e) o; ^
printf("the string has %d characters.",len);4 M6 x$ Y1 J6 ~
}
" z# g( {. d" ?4 U' c* [length(p)
* g- _1 u. z" L3 q" G% ^+ }char *p;7 j G" f, m' m0 v8 T# ^8 G8 e, y% O
{
% c7 b; l* P5 `/ sint n;
4 z) d" C' T, y! }) In=0;
* O! y/ k+ S1 R: _7 u* l0 ~5 ?- [3 \: Vwhile(*p!='\0')
/ W6 f$ D* }4 o s{7 u$ q, {( W: Z( j/ B( I6 c6 @/ z
n++;; g8 _$ C7 {# c! O5 S
p++;
9 g' M6 m& V' M; h" O2 }7 m}
+ [- x/ f/ L3 M# [! y6 n' a9 Areturn n;
/ u' v2 b2 E$ j2 e$ N} |