|
【程序61】( O* M7 M- n7 y2 k9 p
题目:打印出杨辉三角形(要求打印出10行如下图)
0 P0 h v# a) P1 L) U6 f, N% U1.程序分析:
6 Z2 v8 P. c- x! V 1
( W0 i; F' O3 `# T1 B5 B, S 1 1
1 L% v: z* |/ | 1 2 19 M! u8 ^) ?# o6 B1 m+ m$ u
1 3 3 15 R7 T) o! j# C8 g* L0 O
1 4 6 4 13 B1 D$ g, X0 ]% t8 T
1 5 10 10 5 1 , q9 ?8 P& d1 {$ \2 ]
2.程序源代码:
7 Y% m, a) s. V$ I z$ r; emain()
* v Q$ |" s; |* `, E. r; R9 l6 o{int i,j;
- Q: @! z2 g* J9 ^+ Z; b1 cint a[10][10];
. `; J4 n2 |* {1 nprintf("\n");
0 i3 b" x/ z$ |" b( ofor(i=0;i<10;i++)
6 ]: r: x: _& Y4 I2 K0 h {a[0]=1;2 P3 q3 a* v5 ~1 V1 u5 f# [
a=1;}# C7 X- ^ Q0 L4 H
for(i=2;i<10;i++)0 h+ m; ~& s7 I( j
for(j=1;j<i;j++)
+ t4 s7 b+ Q" _ |: j0 H) T* p' b a[j]=a[i-1][j-1]+a[i-1][j];
& ^( T) L! k( K5 u: F9 a% N7 Kfor(i=0;i<10;i++)/ {3 v) ]% ~ L+ _% h! V1 H" Q c
{for(j=0;j<=i;j++)5 q5 `: i" t8 v- S
printf("%5d",a[j]);
1 b! l$ t% Q$ E& k. k) X! H6 B- H& M printf("\n");0 u& x2 l3 Z o5 R( B
}
9 Y2 d e& I* }4 `}# I& D) ?8 o# r
==============================================================7 z0 o# q! ^! F3 Q3 ~% u) g; j3 F
【程序62】
1 k3 B9 e( {7 m/ t5 N5 j# T题目:学习putpixel画点。
" p9 U6 K9 E! a/ @- |/ g0 ?+ h1.程序分析: ' }% c0 b+ Z) b' O% d
2.程序源代码:
S, j* e+ {9 Z* X7 u9 e#include "stdio.h"1 m. D0 l, h8 i; S9 N j
#include "graphics.h"
, F6 \& u& `3 H) _( Q0 Gmain()* K* V/ ]+ J6 p8 o7 _$ y5 `
{6 t" g U% O S( t
int i,j,driver=VGA,mode=VGAHI;
9 A( x0 P! Z# F) _ k8 }. Minitgraph(&driver,&mode,"");
] ?4 `$ g; t+ L. B9 [setbkcolor(YELLOW);6 v* B7 J. e" p5 w) r
for(i=50;i<=230;i+=20)5 n+ ~$ f* W+ _, y6 M+ D% r. Y
for(j=50;j<=230;j++)5 I6 f3 \ s! k* k
putpixel(i,j,1);
2 p( O1 K! p. Z0 l8 u$ ?for(j=50;j<=230;j+=20)/ s, v8 F" O2 K3 G$ E3 q
for(i=50;i<=230;i++)3 ?' x d+ Z+ A5 `$ I& G0 A6 H# o! X
putpixel(i,j,1);# Z. x# u) x+ o8 u4 r0 g( d
}# e, s! |: L( k' V& c; X `* U
==============================================================" W6 n% U7 W: w2 n) @
【程序63】
2 r% ?) u; h9 r2 M0 S& }" Q) K/ t题目:画椭圆ellipse
* N/ ]5 j" c* U1.程序分析:, r. l* [( J& L' N9 y
2.程序源代码:! f( x4 k/ }/ Q2 E
#include "stdio.h"% L ]- {8 [7 L
#include "graphics.h"" o# F- R) I( J% N
#include "conio.h"
& z3 z1 Y* e* f$ ]5 u$ Qmain(): _' h9 a! t& k* B9 S0 i+ Q- o" `
{% ^7 H7 L! r8 y" T
int x=360,y=160,driver=VGA,mode=VGAHI;
/ p. h- E: \9 q: |: G9 wint num=20,i;5 L2 u8 O9 g/ Y: O2 E* A5 G
int top,bottom;5 e" O+ m/ N4 I( Y& U4 s+ ^
initgraph(&driver,&mode,"");
1 A7 ~: P7 U! y& wtop=y-30;1 I/ s, Y* E3 H& R: ^, ~5 t6 \
bottom=y-30;
( k5 c- ?' i4 z# s2 Dfor(i=0;i<num;i++)0 W' }7 P# C- }1 ]( B
{
! P9 V2 B! ~* o5 _6 ^9 h* aellipse(250,250,0,360,top,bottom);; E5 X! ~' r; c! R. ~% J0 B
top-=5;6 y! \ y, I, q$ l# f* e6 T
bottom+=5;
: v+ {5 q. @3 d7 }2 c% ? c}
* Q+ D% S& U. e/ s8 [" v( J. jgetch();
$ r/ A Q4 a0 t* P& w}- U- E, N, U+ _+ f# `5 X8 q8 Q
==============================================================
) ^, d% B5 m# M1 K2 \3 m8 Q8 m【程序64】
1 A) N( l( q" x! k5 j题目:利用ellipse and rectangle 画图。
i" K8 |" n4 D! h4 L, w4 B5 k6 B* h1.程序分析:
6 r6 Z/ q. c3 c* r, V0 a2.程序源代码:: k/ e# i+ d* O9 ]# W7 q) r( b
#include "stdio.h"
2 F* h& n7 y5 J9 m, b1 A1 A& y#include "graphics.h"9 S0 D, D& E& p$ W+ u
#include "conio.h"
) O- ?! b5 ~+ x3 x, V- G7 Xmain()
, c* X2 O7 q# v4 U2 z5 _' c( b{7 C8 |. A5 a; v7 } T, G
int driver=VGA,mode=VGAHI;$ o: K0 P0 E# Z- Z
int i,num=15,top=50;
+ r* Z& Y. |" Z) ?5 Kint left=20,right=50;& y+ |( c0 g* n' u0 [
initgraph(&driver,&mode,"");0 z. Q. a/ v. i: E& }% A
for(i=0;i<num;i++)0 H) `9 g: X0 u! O3 L
{/ T3 G6 I e6 H1 z( M0 M$ J
ellipse(250,250,0,360,right,left);2 y1 x& C) J+ y" ] b9 [" \' B
ellipse(250,250,0,360,20,top);
9 {# y' J3 W: m2 P/ arectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));1 z1 B! ?7 Z, D
right+=5;
* Q1 C' k& w+ v9 ^( Pleft+=5;9 h# c `/ ^# h; c
top+=10;
" ~( X" z9 {8 g) P3 @: v5 O0 }}: A' C6 o( t6 A
getch();
# ^( Q' u3 k6 ?9 m}2 x% P: k+ \. P
==============================================================
& V; T, g% g3 |7 T. h【程序65】
! A; D: m, m2 u% X( {题目:一个最优美的图案。 + R) B5 u ~9 F. _2 W, U, v
1.程序分析:
! d2 e; X2 P5 u+ e2.程序源代码:# x% K5 @7 @/ x
#include "graphics.h"
+ D# p/ r6 O1 J9 s- r# m2 l1 W#include "math.h"% a1 R! z; }+ b, B8 c5 `" I7 C Y5 v
#include "dos.h"" v/ S# |7 v8 s
#include "conio.h"
! k' P2 u$ J+ u* z. r9 H- L#include "stdlib.h"
, C& I5 i1 }4 w( y$ C* W#include "stdio.h") `# P: ~* C, o F1 V* l6 H8 q: J
#include "stdarg.h"/ ?" ^& B$ o9 H& v R' v* J
#define MAXPTS 15 y2 G, `, S k( r
#define PI 3.1415926( x c! R( k, H! T
struct PTS {, a, K0 c3 n7 h9 @, }$ G
int x,y;; ?' |( x2 V$ x, N: n
};
1 ?: G$ g" B1 P& u# G" }7 Wdouble AspectRatio=0.85;7 P8 V" t6 A9 |6 o3 l. X
void LineToDemo(void)
7 c0 d# W# c' S5 w; [" U8 i{
5 A. d9 I U4 Y5 lstruct viewporttype vp;
; L" M3 Y) Z3 E5 o5 c) H$ }struct PTS points[MAXPTS];. N7 s& d7 b# X* e0 B
int i, j, h, w, xcenter, ycenter;& k/ Q# u7 y! @/ O, q+ U
int radius, angle, step;
' w5 `7 J7 }1 A. V+ e1 Tdouble rads;$ `1 A q- f+ g9 o9 E! _" y) Y
printf(" MoveTo / LineTo Demonstration" );3 K- P4 I' n& X9 G
getviewsettings( &vp );
! S* j' j# T) Bh = vp.bottom - vp.top;+ E3 ?9 V( W' g) G; Z
w = vp.right - vp.left;
6 Q- `& M% Q- B; {; b l4 Qxcenter = w / 2; /* Determine the center of circle */5 I, o( j1 {+ A) E$ R# ^
ycenter = h / 2;
# y+ M' N a* h) fradius = (h - 30) / (AspectRatio * 2);
- x9 r6 F9 g" o) O) T* l( Wstep = 360 / MAXPTS; /* Determine # of increments */# C2 p2 ^) N$ t: T3 O. n. x% A
angle = 0; /* Begin at zero degrees */; Z! C! z( x& y2 e6 U
for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
5 T4 J* l6 l6 v' m/ K: p9 krads = (double)angle * PI / 180.0; /* Convert angle to radians */
* m% d' ]" g# v* xpoints.x = xcenter + (int)( cos(rads) * radius );% ~1 Q6 `4 H) Q0 `" h$ m- M% Y
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );
c$ w0 x) A7 @+ c; \angle += step; /* Move to next increment */
5 l% p) k4 E: N}
8 n" `/ [% ^ l$ @1 V" Rcircle( xcenter, ycenter, radius ); /* Draw bounding circle */
' _0 _' r2 i' P, E- hfor( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
2 L. V$ O- H/ F, T+ E @# w% Gfor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */: C( i7 j. h2 Q+ L' b& z
moveto(points.x, points.y); /* Move to beginning of cord */* b/ `8 \, O9 a8 u) P
lineto(points[j].x, points[j].y); /* Draw the cord */- h. r. M( |8 Y% x$ Y
} } }2 R) o8 Y; b5 k! k9 Z8 N* A
main()
: v r* ~; v2 |9 z{int driver,mode;) I1 R0 V5 [6 o. q( E9 t3 a! _
driver=CGA;mode=CGAC0;
`( t0 c9 Z" _% }! |initgraph(&driver,&mode,"");
9 I, P/ B- n/ R" R2 m( Osetcolor(3);
3 V$ ^( R0 x8 L, x3 ?6 X: ?setbkcolor(GREEN);
$ v( ^% g+ p4 a2 B1 ` lLineToDemo();}
5 V/ ~8 j: x i! {==============================================================
5 ?" Z, h6 t" _; \: N【程序66】1 k& y; a" G+ k
题目:输入3个数a,b,c,按大小顺序输出。 - B) ?" o2 @: i4 A; ^4 ?
1.程序分析:利用指针方法。
; u" t/ C. G5 H+ t. Y# q2.程序源代码:" T; i3 m- d: ?
/*pointer*/
2 {1 F8 M( o2 }1 H* |main()
9 k0 w, j) E& u h' P$ _{
5 ~) U% E, V8 qint n1,n2,n3;
2 ~# f0 P, l; Z! f1 m; Iint *pointer1,*pointer2,*pointer3;
: j6 A1 T6 X! y* \& ~printf("please input 3 number:n1,n2,n3:");
4 K, F# ]# N# N6 l7 }scanf("%d,%d,%d",&n1,&n2,&n3);
: R+ ^& O7 ]. I, \/ b8 e5 V) Dpointer1=&n1;9 r1 M: }5 a3 A& M+ f
pointer2=&n2;
, J" Z# {' L: E" Z: T, \pointer3=&n3;
( y& x! i" `" D xif(n1>n2) swap(pointer1,pointer2);0 p3 `: T0 k! F8 n: F1 z9 l
if(n1>n3) swap(pointer1,pointer3);
, M, U* Y9 D1 U$ c2 r3 Z: Kif(n2>n3) swap(pointer2,pointer3);
4 ^% }3 p1 I/ y' C+ q& f0 _printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
) t) |: h$ \; z: P- G" `# z& I}
; ?9 C, x* W! K jswap(p1,p2) ^* ~, h D* E7 ?* D' t
int *p1,*p2;
2 \9 p6 i% j9 n$ W) R{int p;& R8 V5 H8 K, t
p=*p1;*p1=*p2;*p2=p;
8 b9 G& T# F4 H( T$ w}! B/ P' h$ S) K( t0 I
==============================================================; }5 n4 ~8 O- `8 b
【程序67】/ Z/ Q9 Z; G j* [- E; ]
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
! r+ B7 Z+ r: U8 ^1.程序分析:谭浩强的书中答案有问题。
4 V" \7 g* Z7 t3 Z Y1 e2.程序源代码:
8 R: Z2 _* A Q1 @main()
. |$ A9 P* \7 @6 H5 G0 ~{7 C. A2 d* s' a! }
int number[10];; k% j% I9 g% a p# N W5 m# I6 }
input(number);
$ |3 O! }) a% Y- y# Q$ Tmax_min(number);4 v9 V0 B; N. q
output(number);
& j6 l$ M5 L9 r, [0 x}
# D! R7 D8 R0 A% w* m, u" t4 E; ~& winput(number)+ s8 w* P5 W, P5 d6 K+ t" C
int number[10];* f0 Z* g( e9 _/ X
{int i;
* t) z; ]% c' C; p. D. [9 i1 Wfor(i=0;i<9;i++)
r/ b) } t& E3 D) {0 g scanf("%d,",&number);9 o& o' r* R! l
scanf("%d",&number[9]);1 u# p6 G) }" y& S! T; a8 I
}+ D$ Y' ~& i2 v) ~" l( C3 S
max_min(array)
i- v+ i* h- }# h5 Gint array[10];! J) |0 r" P9 m5 J
{int *max,*min,k,l;+ h7 G' @2 s, a" J
int *p,*arr_end;- ` y" |2 d* \
arr_end=array+10;- n5 I0 F& C/ Q; R. {4 l7 _# {
max=min=array;! {( }: L9 }* ]" m9 _& J
for(p=array+1;p<arr_end;p++)* m( |. p/ Y+ S- a/ E7 ~
if(*p>*max) max=p;
2 c0 K* ^% ]8 \% k* r1 G else if(*p<*min) min=p;
$ ?8 ^7 U, b4 c& Z& D k=*max;. i$ X7 [0 p% {) \' C$ r# |
l=*min;
0 p ^+ z+ R: [& r8 M2 l *p=array[0];array[0]=l;l=*p;2 p; W- ` s' E! `/ S
*p=array[9];array[9]=k;k=*p;
* K; D1 l+ ~3 X: v6 r' D7 o- v" C return;
3 |4 F% y7 [- [0 x6 l- c/ z}
]: o |' k& ]+ t' e7 T u3 ^6 |output(array)# k7 B/ N7 p3 o( o' ^/ U
int array[10];" L- d- o5 v) K; O( o O$ N+ m& h# J, W! \
{ int *p;& @% u1 L9 k7 L. N; {- ]% V
for(p=array;p<array+9;p++)5 s! Q, |$ _6 t K3 a
printf("%d,",*p); B% T8 a9 I) z' P
printf("%d\n",array[9]);
2 t- S* |; P2 r% [}" \' g" }* t/ j* v( R6 b! z: u; H
==============================================================% O, v% w0 f( A0 _
【程序68】
t* L0 A! B5 u) U1 X题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数2 q/ `, _# |# e0 U$ @( r* q
1.程序分析:
6 i9 ?" l: w, ?, ^2.程序源代码:
g, A5 \; q7 g: O0 v- c' \4 k( Imain()
5 \; W' b& D9 |$ _8 `2 _( M. ~) ~- q{
5 {$ m A+ {/ q" J r4 y7 }int number[20],n,m,i;
8 ~6 } S2 }5 J# P8 ?7 U. \printf("the total numbers is:");
: X6 W7 R! V$ B/ A- s1 o/ h+ `. Sscanf("%d",&n);
. j9 c0 o& L( q! G9 h2 o, ]- v. _1 Fprintf("back m:");1 g9 I- V! ~6 W% p3 G+ w; V* H
scanf("%d",&m);) j4 Y1 t6 \$ L- o" G, ?
for(i=0;i<n-1;i++)/ P3 o) E' B5 B W' w
scanf("%d,",&number);
9 b$ F2 c6 W: escanf("%d",&number[n-1]);
4 @& f4 a7 p4 L7 p/ wmove(number,n,m);- j1 K/ {! {& X8 v% t, L3 F2 ]
for(i=0;i<n-1;i++)8 ?3 m1 I5 M% ~8 O) p6 |6 j
printf("%d,",number);
# U2 M4 G5 X, N3 b/ N8 D) {printf("%d",number[n-1]);& }+ L2 y% ]1 r) M! c# L# h
}
) q! i) T) y$ Amove(array,n,m) k+ ]; O% h- u, j
int n,m,array[20];
) A3 N( t$ X+ n- O{
& y0 R2 p5 K. Qint *p,array_end;
8 Q' k; F: G' h4 F5 b! Narray_end=*(array+n-1);
8 S$ `& W& o) q9 F+ S( Q* sfor(p=array+n-1;p>array;p--): `" d4 e# b3 y
*p=*(p-1);
+ U# M* w( L6 K. J9 X7 [ *array=array_end;& n8 x7 _& E a; B
m--;
* I% G; ~' ?1 ]( \0 p! O5 J if(m>0) move(array,n,m);* s c" V+ [# X8 e, t
}0 x; N0 y1 q* z- @# a$ h
==============================================================
0 U; U, b* ]! f. l+ O& Y【程序69】
4 A5 q. y7 S$ }0 j) z4 \题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 ?. T, t" y3 i; H( g5 | P, J
圈子,问最后留下的是原来第几号的那位。
" [2 f4 A/ H; [6 K5 k1. 程序分析:( a& w1 i4 \$ E8 L5 y, T% u% n
2.程序源代码:
4 I. D7 h4 ]2 m9 Y( h#define nmax 50) D' l4 }4 b# G% M9 i
main()
* L9 Z) x3 q* f{
# ^. F% @, {7 I4 rint i,k,m,n,num[nmax],*p;
' M1 _& e, T- L' c# j, {( mprintf("please input the total of numbers:");6 x' t0 B7 b; |0 T
scanf("%d",&n);
3 ^* D$ W: F! X* ^& w6 Ip=num;
. d9 J* G6 m$ N2 [# ?for(i=0;i<n;i++)
( N0 a, b3 C7 P" x/ d+ \: _9 x *(p+i)=i+1;" G6 G6 h* ?; c1 x: m
i=0;' {' Y! D' b9 X3 z, T
k=0;. b2 w' F6 N: E0 `4 Q* {
m=0;
( m! g. f" N9 O" w while(m<n-1)* y/ P% r H- h1 r' z
{
! e. J$ Y" U1 T3 s& P, b if(*(p+i)!=0) k++;
" b: b: F0 B4 T; H' j, h if(k==3)
. n: s8 N- l) H# k { *(p+i)=0;
2 t; I4 B3 K1 n3 [+ o5 R k=0;
' Q6 h; j" z. v, l1 v m++;
. x* m. y# Z F+ ?; c7 ] }2 ^, {7 H7 P# i$ d/ L! }9 Q
i++;* n% \) d. |/ `1 b7 N8 S1 q) V
if(i==n) i=0;
) o2 G0 S) z0 t} k/ ]! D- @% M. e3 s5 G7 |- c
while(*p==0) p++;
! o/ v% B1 Z5 M8 W; k' Bprintf("%d is left\n",*p);# ~8 \9 @( q* q8 q. r5 ?* }( h4 D
}+ i; m6 l9 H2 u1 M3 P
==============================================================
) D! A& g/ r, u" f8 d6 T+ g2 o( p1 J【程序70】2 d# y- n& n4 b d, r p
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
& A& w( _' d( o, P* D4 K O1.程序分析:
1 s# `: I8 z0 m6 y2 e- C7 y2.程序源代码:
; D* U) ~# k. G/ mmain()
4 z* \/ p" S# }{- W2 `2 _* y+ @" K8 v2 T
int len;
, ?# V1 X( K" ~+ @; ^% j% K1 P6 Pchar *str[20];
\4 w |' M# X; Xprintf("please input a string:\n");9 v+ r. _/ L! b) O% G! `
scanf("%s",str);3 _0 W- z3 ~0 T
len=length(str);
/ Y5 K! |5 ` ?/ b Jprintf("the string has %d characters.",len);
! D1 C3 E5 G2 z) c8 }& L8 _}
: ` `3 ~. N" A8 r# Z/ `6 }9 D4 Hlength(p)
' f; F* a, {$ Pchar *p;9 j: ?5 o/ C9 E. R. }$ K2 p+ l) u0 r1 M0 D
{
, d/ h* _: \' z3 j7 Eint n;
' a$ ^& C: [3 v! An=0;+ P! @; l) M4 `7 s/ {
while(*p!='\0')
9 t6 l$ j; ?9 [ A2 a/ \+ O{- k* C, `: k6 M
n++;! z) y( E. j/ U" G) r3 I0 C% J: F
p++;9 U) J H4 m$ I1 d7 }; h
}
. ?" [' O" ~& u# ^7 preturn n;- h/ f! n- y* a5 O
} |