|
【程序61】
' W2 h1 G6 O0 Z3 B8 ~7 j题目:打印出杨辉三角形(要求打印出10行如下图)
9 S O" I& J7 a0 ]. F- O1.程序分析:1 Q4 l( B* U" D8 w5 ~# `+ V
1
; Y/ ]+ W' k. X% N# r4 A7 a 1 1
7 |# B8 ~1 ^# C# M& e+ w4 j 1 2 1, {& r! d" v7 g- W" b3 ?
1 3 3 1" `% w! }% c& `( f
1 4 6 4 1# q1 u. r% n- _* ^' {9 }
1 5 10 10 5 1
% d7 a$ p' F v2.程序源代码:
2 G O6 G1 i, smain(); f* Q4 s( n, a; B/ z
{int i,j;4 q3 X2 N1 x, a6 a* j1 ~
int a[10][10];
+ G1 N: g5 y( e6 Aprintf("\n");5 C$ a- N# N, W2 c, s
for(i=0;i<10;i++)7 Z- x- x0 z; ^2 v
{a[0]=1;
6 [. o1 m t8 n2 `$ N a=1;}
: h& g, f2 J+ S8 ~/ U/ ^) r* s# Sfor(i=2;i<10;i++)
9 J+ x$ M- \/ V4 P! ` for(j=1;j<i;j++)! K/ S1 R# n4 o: Y
a[j]=a[i-1][j-1]+a[i-1][j];
0 v+ X- d6 @6 }9 |0 q# d8 T" cfor(i=0;i<10;i++)
! M) }( b/ ^0 u" a {for(j=0;j<=i;j++)) N4 G' N x% q
printf("%5d",a[j]);! o! W4 U. F5 J: D% a
printf("\n");
8 O. I7 e+ C& G }. x- r/ c% n4 Q7 U3 \( z6 J9 v
}$ j3 y/ t1 o( {6 s# s1 L* o
==============================================================/ [- J8 E* s$ K C: f
【程序62】' r6 _' D3 l6 g
题目:学习putpixel画点。
J1 H0 ]+ W; K3 _) i7 X1.程序分析:
4 x: w) U1 m$ b+ w5 v2.程序源代码:* A- E+ B) A; m0 m: v
#include "stdio.h"
8 k3 U) y# W4 ]2 \#include "graphics.h"2 l! i/ Y; g6 `- x% x+ w
main()4 n: {. n" b- w# Q0 m
{
( O& Z0 K2 `6 S3 j! j1 l$ Jint i,j,driver=VGA,mode=VGAHI;) R) a$ Q+ n7 y3 P
initgraph(&driver,&mode,"");+ i+ b2 i9 H1 a+ w/ F7 ^2 n& W
setbkcolor(YELLOW);- Q0 ?% |7 k y, j/ h/ a3 i
for(i=50;i<=230;i+=20). t& H! x" d/ a3 N
for(j=50;j<=230;j++)+ G+ u- H; T* ~- ~* [6 x7 r
putpixel(i,j,1);
$ m- e1 B! A ufor(j=50;j<=230;j+=20)
! n. P( z; V, m, H for(i=50;i<=230;i++)
( z6 x4 {2 p( F8 } _ putpixel(i,j,1);
7 T* @' h0 [' [ `. R g}
# t! _) j2 P3 L% ?* \$ N! o. F==============================================================
: c) e& S+ Q* q! \0 d0 v【程序63】
4 S. X% x9 E! G h题目:画椭圆ellipse 9 h$ E8 U Y* d( v
1.程序分析:
" b' n) g* f, Z2.程序源代码:
5 r6 s* p* L3 d3 ~8 ^#include "stdio.h". y: {# B& m3 {0 n0 N0 }, R9 G
#include "graphics.h"' e. ^5 |7 f! R9 z
#include "conio.h"8 j0 H: M- ]; z) m; Q6 H' D
main()! n8 N2 d; W) W1 A0 X5 o- K/ Z
{
* @, b f0 M( B$ F/ e$ F3 Uint x=360,y=160,driver=VGA,mode=VGAHI;
6 v% _) i# x- g* S! u4 h) ^" ?int num=20,i;8 H+ d' V: \0 R2 G# P6 \
int top,bottom;
. k2 o& {, ^5 @# V, ]( binitgraph(&driver,&mode,"");
u, m3 T* m* a% N: Itop=y-30;& O4 P. a- o, K$ u. l: S' q
bottom=y-30;
% p$ b7 I7 q4 _! @3 Xfor(i=0;i<num;i++)
) l8 C/ l- ^5 P9 P. H$ U{
( i" Q& n5 v4 v. L# {ellipse(250,250,0,360,top,bottom);
( P" b0 y, U2 Ytop-=5;
. s9 K6 D1 M4 r; n/ @, z% h) B) Pbottom+=5;& j( n# @9 Y5 z
}
' j r& h, ~: c. [9 V- S" tgetch();5 X- l/ G4 \3 S# A1 Q
}* ~ w, d) _7 y5 J: K* v
==============================================================
4 F7 ?0 _' c3 b2 o【程序64】: Q1 m( f/ N2 t6 M; S0 x4 J- b) |
题目:利用ellipse and rectangle 画图。
) k i: A! _+ m Z$ U# Y V p1.程序分析:
8 I) g1 ~7 n4 {! Z2.程序源代码:
! ?0 ]$ y4 t/ b& l#include "stdio.h"
$ v9 N- a. l2 S' S) h# g0 X#include "graphics.h"
( D! I1 c2 S5 j( r+ ]0 ^* O3 F: G#include "conio.h"( ?8 O4 r B5 M* m G1 B* g1 y8 k
main()
4 O+ F* z& j+ x) I# \+ E' {{6 `1 H) @, ?. Y2 b" k3 T
int driver=VGA,mode=VGAHI;5 f k5 f! Z% B9 H- e
int i,num=15,top=50;: n% j4 H0 L6 i5 f$ i. U7 r: i1 l
int left=20,right=50;% }& J" x" }+ J5 F2 x3 m
initgraph(&driver,&mode,"");
8 J* J+ g* ]7 M. {for(i=0;i<num;i++)
) P2 c3 a; I z, l# t) b: K/ e{
& |6 V! e- W4 e3 ` ^; Qellipse(250,250,0,360,right,left);
0 E7 a& ], I/ a' i1 Wellipse(250,250,0,360,20,top);
( Q* ?$ N3 `; p) W0 R% R# ?rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
6 N; O' z/ z; p1 Y3 ^: qright+=5;
# P. i- j o/ _$ N; Q9 ~left+=5;
' n+ O* U$ O, v+ c* @! ctop+=10;
; H4 ?: ^& A# P: Y}
4 {- U9 s/ ^* ^ L) T( Tgetch();5 Z0 G" J$ u$ v* _
}
0 _# p4 O# Y" q==============================================================8 D$ V6 X. v+ ]! D9 K! ]* M1 v
【程序65】
- U& I4 r! n; h: K: M题目:一个最优美的图案。 U3 j6 X2 x2 R# ^ L
1.程序分析:
) U( V9 C1 \1 ^! l2.程序源代码:
. _0 \5 u4 y: t+ j#include "graphics.h"0 g! X+ q9 b; \' s$ r
#include "math.h"
. p9 J- H1 w6 ~' r8 R$ n#include "dos.h"
- d8 @8 j2 G' ^, a" U2 _5 ?#include "conio.h"
- u( z B% K$ t8 y/ X! n6 I. ~#include "stdlib.h"
s) Z5 `0 l8 p! ^' K6 Z$ ?#include "stdio.h"
$ l# h# o2 c7 g/ l6 q: @#include "stdarg.h"% H9 p, K' v1 w2 d" u; T% L
#define MAXPTS 151 M! _, Q' Q9 X
#define PI 3.14159262 h# y0 F3 X' Y* e) F u
struct PTS {
& g* f4 v$ N) |- z6 Q" I4 Hint x,y;, f8 K; U+ L+ A$ V; X" L: b
};3 P4 }$ U2 ]8 i1 z( o
double AspectRatio=0.85;( ?1 j- S3 n2 t, U0 y: Z
void LineToDemo(void)
0 F, H2 ~, X% z& }{# i0 [' l1 {5 j( b2 f
struct viewporttype vp;9 f' f& G2 ?: A! o+ X2 |
struct PTS points[MAXPTS];
& }' _. W, t4 B! mint i, j, h, w, xcenter, ycenter;5 T/ n9 K8 Y2 t/ D& |- \
int radius, angle, step;
7 g& x- `# H0 I6 d$ {3 Q0 _4 ~double rads;- l4 T' u2 G [' v" ?, _; Y' M
printf(" MoveTo / LineTo Demonstration" );
4 Y4 @& a( j* F7 F, {3 Dgetviewsettings( &vp );4 z9 H4 {* |; m! O7 M8 |
h = vp.bottom - vp.top;: m" z" \4 h- |3 n: _% l0 P* x
w = vp.right - vp.left;8 O0 d6 F* P8 J$ ^
xcenter = w / 2; /* Determine the center of circle */
9 k5 }( Z) a: R& e/ W8 Fycenter = h / 2;( x9 t' x# t$ l- ]
radius = (h - 30) / (AspectRatio * 2);9 }! c5 g& q! t
step = 360 / MAXPTS; /* Determine # of increments */" x" A. z u7 Q- ]- d4 B
angle = 0; /* Begin at zero degrees */
! d5 W1 e' B7 q) ^$ Vfor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */7 {, D+ ^ _7 P- }& y/ p5 |
rads = (double)angle * PI / 180.0; /* Convert angle to radians */
& v( q& k9 M; @2 Z& fpoints.x = xcenter + (int)( cos(rads) * radius );% k+ V6 q( S/ r; V* N
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio ); `$ s# H6 Q+ W* u& q3 j4 e
angle += step; /* Move to next increment */9 f. F: A) v) D/ W" S4 _' _
}7 C1 M5 x0 A" f5 W' u, K+ Q! f
circle( xcenter, ycenter, radius ); /* Draw bounding circle */0 r+ I3 B# @ x" X& r7 e
for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
# U4 k% t4 X" g9 M3 z$ ?7 \for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
' @8 P# Z! e9 W/ B2 W n8 imoveto(points.x, points.y); /* Move to beginning of cord */
; v& \/ f, z! j1 e; E$ o; @lineto(points[j].x, points[j].y); /* Draw the cord */
: z: L1 o0 \1 O0 p' a$ q6 Q7 g} } }7 m4 L! M7 L) _, J8 }5 W0 P: `
main()
, l4 k. }8 g3 j" |; H{int driver,mode;* B6 o) c7 _4 }) L+ ?& N
driver=CGA;mode=CGAC0;
+ O" ]2 x- I( yinitgraph(&driver,&mode,"");
8 ]! o( j" A+ J: ]" s, X2 Wsetcolor(3);
- [ ~7 W' F3 v! F6 W! ysetbkcolor(GREEN);- g, L6 P7 Q [) ^+ e* ^
LineToDemo();}
6 n% i6 i8 V1 h+ w# T==============================================================
% b5 j$ r9 f8 C5 l! F$ B6 L5 _【程序66】
, a& ^& }6 T! n5 K) w$ O8 t1 E题目:输入3个数a,b,c,按大小顺序输出。
$ {3 o9 f+ J% @& w1.程序分析:利用指针方法。
4 K$ H+ O7 D' z' ]7 s) K2.程序源代码:# ~8 B6 g2 i$ _3 v4 @+ P" v
/*pointer*/
( ]3 U" m& J) U9 V- u. f. Hmain()
$ ~# ~# f$ S( M2 c' L6 D{
3 L2 k% d# @& Jint n1,n2,n3;7 z7 ^* b8 {4 |# t1 j
int *pointer1,*pointer2,*pointer3;! u8 v* K+ A5 Q
printf("please input 3 number:n1,n2,n3:");' r3 E1 ]7 K# s* _6 j
scanf("%d,%d,%d",&n1,&n2,&n3);
. T) C1 w, O8 kpointer1=&n1;, m( t' h' ~& ?) E# Q
pointer2=&n2;
7 H3 Q, C. w+ b% m) I2 `7 G) apointer3=&n3;8 u8 J! C! p' k2 F
if(n1>n2) swap(pointer1,pointer2);. J7 A; k) s+ B1 K
if(n1>n3) swap(pointer1,pointer3);
- l: m# x5 ]' Q9 Gif(n2>n3) swap(pointer2,pointer3);
* a( I; ?; x5 s; A8 Aprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);
E( R" f8 X+ T* b* {}
# d N5 }; W' M- j! Xswap(p1,p2)
u( t. Y t8 H3 M- Y: oint *p1,*p2;# y1 u) Z) _* g( `$ P7 v$ g
{int p;, ?* {5 g4 i P9 ]
p=*p1;*p1=*p2;*p2=p;
9 f0 U3 `9 s- w}3 N7 Z9 J% _" O/ h3 d
==============================================================9 O3 B# n* k. J7 ]2 P' Q$ B
【程序67】
9 K: Y1 U" c A/ i题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
* H& ~% c* G, F( f. _6 S( F' ]6 @7 ~& N1.程序分析:谭浩强的书中答案有问题。 3 O( S* f" u. s
2.程序源代码:! k4 K5 ] A& {' ?' w. q
main(). w5 m- ^) |5 C$ ?! Q
{$ L. a0 X- ^; `& {
int number[10];
0 l& v% b( n o5 }input(number);
( n" v3 V2 z$ w" lmax_min(number);
0 c* Z6 B7 L" b! Soutput(number);* D# b/ \% }- Y1 _; X6 F' Q* m
}
8 y1 E3 `$ R/ w4 z! o8 sinput(number)! c2 D9 t& }4 N B7 a; r/ V
int number[10];& L6 K' d% I% W( e& e! ?. Z
{int i;6 x+ O4 F5 d X
for(i=0;i<9;i++)
$ @4 _; W- P, R0 ?! G, e7 N scanf("%d,",&number);
6 A+ j+ v( d8 f9 s9 \8 R scanf("%d",&number[9]);' J# g1 m6 l2 n9 o
}
3 W' T: T' a0 e) i, jmax_min(array)
0 o" _' B7 W3 z9 }% F9 k7 T& pint array[10];
( p5 N: P1 ^0 |+ ]{int *max,*min,k,l;
: ~" q# F z! a! X% X, P7 N3 p5 J7 cint *p,*arr_end;
3 W. o$ L r1 M1 r3 Barr_end=array+10;
8 V7 P. C) W' s/ }, Omax=min=array;3 g2 A& q H. X: e" A7 Z( d- \2 x9 G
for(p=array+1;p<arr_end;p++)
" w: U! O$ w* h if(*p>*max) max=p;
2 @- f: D/ l' b else if(*p<*min) min=p;
. ?, E5 j x2 p: E. |' V$ @ k=*max;
1 u8 `' g' s3 J& ~ l=*min;, j8 W7 o" a/ v
*p=array[0];array[0]=l;l=*p;
5 i7 }$ ^ a% d2 [7 l7 t. _2 j& E *p=array[9];array[9]=k;k=*p;+ k$ K3 G% p- C5 n" X- T" S
return;
5 b. g5 P# F9 }" ^0 F- k! a}7 F$ s% h3 E$ W5 B/ b
output(array)! Z$ K6 G$ e. W! f* `, S) \3 C
int array[10];
8 \ M% i: r* P- u" m4 Y+ I/ g, y{ int *p;7 N# @: N& q. T( q; U( t# T
for(p=array;p<array+9;p++)7 K1 U, G* b5 V* f/ y3 N. }
printf("%d,",*p);) k- A4 ^5 T2 h' `; }; {
printf("%d\n",array[9]);
$ ]6 p9 q) r; x8 @. Z}& q# g5 H- }& O8 }
==============================================================
: G, B% Z# Z' c( r8 n【程序68】
. a: J+ p3 p( j. v/ @: v: s题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数% \ A) G- s+ d+ @6 K1 G. m& k
1.程序分析:
1 m) k" P7 G# ~) i! a5 j& F2.程序源代码:
" c) z0 c6 k: }6 U) B% Dmain(), p7 M! j+ }+ _' R
{
6 z/ R! P- U; p9 vint number[20],n,m,i;
; H6 r! m0 E: Q2 i) iprintf("the total numbers is:");$ I: ^2 W+ u$ @8 s9 P
scanf("%d",&n);3 c* a B% ]% @
printf("back m:");
8 W, h. L4 }; ?" \2 e1 lscanf("%d",&m);& T) [3 @% h( e; u' t6 Z& z
for(i=0;i<n-1;i++)
6 I6 y( \; q( q- ?5 {, F scanf("%d,",&number);# K" e$ y6 f2 V) ]
scanf("%d",&number[n-1]);
% ^* h& R$ G% z; Q2 W- a+ t$ l& Imove(number,n,m);& _% ]7 }! ]" _. |( G
for(i=0;i<n-1;i++)2 E, {+ c" g8 w0 Q( i
printf("%d,",number);
5 W: R) B) Y/ m) q Y+ C6 Jprintf("%d",number[n-1]);
' I: r/ [) E. v; x( ~}1 g2 {/ p' {' Q" c
move(array,n,m)( J9 Z- w3 q7 A( {
int n,m,array[20];
- [: o8 A; C, _% D& [% Z1 |5 t0 t+ w{8 W, s/ W% ~) Z3 k d' r* [0 r
int *p,array_end;) I: B0 h9 Z v( |0 P+ E) c
array_end=*(array+n-1);. I' e" B* A, F' s& ~# b
for(p=array+n-1;p>array;p--)
2 F$ D: N* r5 N1 v! M. g *p=*(p-1);; {3 E, O& E& w# K" @. D; d% e
*array=array_end;
6 g4 G+ H s" L m--;
+ X% x3 f$ [0 x0 Z if(m>0) move(array,n,m); E+ l" N$ a- B, h
}
7 J; \/ v0 M& b" p: ^==============================================================
/ d6 ]- E: O; Q8 L5 b5 B% M【程序69】, O+ d+ }! \4 E0 s" i3 L- f
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出% l: A6 p8 ?) v' o
圈子,问最后留下的是原来第几号的那位。9 I4 L5 X" m" o: m6 b! c1 @+ w
1. 程序分析:$ A! t) L( J+ p, J& d M
2.程序源代码:
3 {- i" |1 ^7 o% S) z- e#define nmax 50
p2 l2 l5 G4 d! T# m! {main()) a# o3 A6 A9 w7 T0 k5 v2 q( v
{9 A y8 l2 S2 F$ p+ i7 |+ c
int i,k,m,n,num[nmax],*p;
: D, \( d$ i( W5 t jprintf("please input the total of numbers:");
/ y2 o7 v5 C ?1 i- g' L4 ?scanf("%d",&n);
! s) N& R. X$ p8 Bp=num;. a) }- G1 @* k. a
for(i=0;i<n;i++)6 r: {( e- H, z. L, Q4 q# M6 s
*(p+i)=i+1;1 X3 ?+ t# @8 G9 k3 ?2 _
i=0;: F: h/ V7 v# C/ t. _
k=0;
! Q" p K4 ]# ~6 Y4 Z m=0;
" J' e6 x- l: @9 T while(m<n-1)4 K! E* o7 K1 o: C3 V
{
, a1 T9 T v, H" K) g if(*(p+i)!=0) k++;6 K% d4 R* u T U. ?% q
if(k==3)
! Z) [8 Q# u4 `3 O6 _ { *(p+i)=0;
( c( B! ^+ @# y/ N k=0;0 b$ [5 K8 u6 S' I# i9 L
m++;
& Y! {% S! ]0 {4 {& I }& {: b! g* E1 ?; Z
i++; i. d/ W- P1 B
if(i==n) i=0;
2 \- b. Q8 Z% S8 ]; X) o, m. D}
5 q8 C: `. e& j6 {* w! f/ \: Awhile(*p==0) p++;8 D6 ^3 M8 [$ T% R
printf("%d is left\n",*p);
0 v. L, W/ r6 B- L' P, G: Y7 w4 K}
9 ?! b* I8 i* c8 T1 t5 c==============================================================
% K2 x5 ~! U, ~% @% T4 v【程序70】
* \1 @% A: B5 j8 } o* x4 V* _题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 ( z( h* x* W( e1 j* F5 s
1.程序分析:0 J) P& W F4 C2 k: t! Z
2.程序源代码:
* _4 T+ J( f5 B, M& emain()
9 E) Z+ U) a6 c& S" F7 z{
$ c R8 W F5 h$ I' _/ ]. t8 iint len;
F, v9 | W0 f% u( S2 K' h% Wchar *str[20];
/ F8 V2 V5 |: Y) |% s, Cprintf("please input a string:\n");
7 ]: f+ D% m d" I( jscanf("%s",str);
7 j) v1 e- U" ~$ flen=length(str);
( q) R9 v3 |5 s6 O$ \6 oprintf("the string has %d characters.",len);
5 q( S$ ~1 F* {! \0 x& Y}: G% S' p8 l8 s& F' U1 Z
length(p)
/ m" ?4 `. m) Z$ Schar *p;
+ E6 g5 O4 k. X# T# R1 R# v. Q{6 H) k, u2 R" A* x2 S
int n;, O( N$ z3 L! u5 P
n=0;
4 P( e+ Y4 Z: f. ?& w. uwhile(*p!='\0')
' }3 w- u7 ?+ C, f2 q{
6 r7 k& z4 y8 p( u- u3 {* ~% c n++;
* R4 i6 a8 b9 G2 g# e/ d p++;
# d" H$ C" B: R6 h4 j}, {0 b9 ]; ], X+ j8 H$ T
return n;* A; x8 [4 ?& c: r6 _$ I: J
} |