|
【程序61】
: [$ h8 G( v4 ]* x" [2 U题目:打印出杨辉三角形(要求打印出10行如下图) $ L' _ P: O9 N
1.程序分析:
7 q/ a0 C5 [) m 1
7 _2 p' j# T" C b& K* ^( `2 n! p 1 18 T: K0 i0 j3 w2 o
1 2 1/ x- k1 A, U& i$ s
1 3 3 1
+ z9 p; Z) W2 O3 t1 |' p. e 1 4 6 4 19 J% |, V& X0 c, u' e
1 5 10 10 5 1
8 `: g! H4 Y3 Y' v8 A$ \+ w- {2 q2.程序源代码:$ y# ?8 f) h) P) G
main()" [8 _8 m$ c) ]
{int i,j;
( Z3 F+ w$ d9 B( n7 Iint a[10][10];, m& c# J8 q2 M! u5 `) d V. B
printf("\n");+ T# e5 n' }3 b8 {7 L) l* H
for(i=0;i<10;i++)- s' {: _& T/ Y5 w
{a[0]=1;3 i, S' o; _. U' r! j0 {
a=1;}
5 ` s/ h/ Y* L; Hfor(i=2;i<10;i++)
- @/ ^: a* d0 O1 Q. x+ G# I; u for(j=1;j<i;j++)
* k4 r8 ~: \5 a4 `: e9 N9 I0 Y a[j]=a[i-1][j-1]+a[i-1][j];
1 E" X* V" ^, t9 g- |for(i=0;i<10;i++)8 H8 \% f/ R2 z. k) Q
{for(j=0;j<=i;j++)
0 P' C! u. ?' r0 }! { printf("%5d",a[j]);8 M5 V8 m5 J6 t3 i
printf("\n");6 t# Z+ O2 {! g3 a" p0 O5 ?0 o
}) z" T, F. j9 h" b$ a0 c
}3 V2 n; V. |9 B8 F
==============================================================' [* d* G& ]' C1 N) O
【程序62】
4 C6 n0 `4 p; A5 D题目:学习putpixel画点。# x0 x7 }1 e8 _7 S, I
1.程序分析: 5 Y. i* r7 X. {0 z+ v. {
2.程序源代码:
) u* W. ?/ x8 Q2 ]8 K8 _* B) u! `$ G8 {! W#include "stdio.h"; R6 `" u/ ^; s' \* |3 B
#include "graphics.h"
, J. S! u0 G) }7 n6 S6 ^" ^* W# Lmain()7 y: ^# E$ j; X2 q; L. w
{
- p4 S+ g! h( ~- F ~$ ]. G7 ]int i,j,driver=VGA,mode=VGAHI;
$ w5 {" \9 y9 `" n3 Q% Ainitgraph(&driver,&mode,"");
- B; e2 ]/ M! J0 [! B( v' dsetbkcolor(YELLOW);, P2 t: x) i* A, h. M6 O
for(i=50;i<=230;i+=20)7 q" i8 W2 r& m/ A7 W% V m
for(j=50;j<=230;j++)9 ^6 A- ]7 V) J- }/ [0 `
putpixel(i,j,1);
! M/ ^" P5 {% x! O/ Tfor(j=50;j<=230;j+=20) U. o6 p% d, {/ M# W# o
for(i=50;i<=230;i++)
e9 j4 w% r) V" r/ C( j* I2 Q putpixel(i,j,1);
+ }" N) R2 T+ T( e}
; A, e4 ~$ v) p+ k& X. W! X7 j3 v==============================================================' a R; {. h& [+ y! z' [1 Y
【程序63】
; @8 s- P% K; B5 Y/ t- W9 N6 ^8 b题目:画椭圆ellipse
# _9 e. g) k, I* A0 s6 b1.程序分析: w# b- p8 J1 x) d3 z
2.程序源代码:
( X+ N) M3 ]2 g$ ]#include "stdio.h"
; V8 f" X) ^0 }#include "graphics.h"
[$ W$ G9 t/ ~4 y! }, b2 G#include "conio.h"
' O! ?3 D% L( a9 K8 r4 o% {7 |main()
- L {! j! I, r1 `) Q3 J3 x{$ f: f2 e$ K) \" r+ R6 C" ^! u% V
int x=360,y=160,driver=VGA,mode=VGAHI;
7 Y2 n& _6 j0 S4 s! ]/ W7 |5 ?$ Oint num=20,i;
3 y" z1 F7 _ M5 oint top,bottom;& M; U% `0 l/ U. s& a+ ^
initgraph(&driver,&mode,"");7 F$ p2 j) U: ~; T0 F% k/ J
top=y-30;
/ J- i z7 H9 h' W+ i @ dbottom=y-30;/ ~* J( Y7 t6 y1 v
for(i=0;i<num;i++)! R% ~8 w7 B6 Q! |
{
4 d$ d7 v0 m& y, \1 f2 s% ]0 ~7 Wellipse(250,250,0,360,top,bottom);
6 m/ K! Z$ K) a& y% @top-=5;( O4 V5 o3 J7 U& z, \1 W# [/ r- U
bottom+=5;
4 M4 t/ ~. |, g, _! g/ Y1 [9 K* q}' m1 z8 W1 w8 m0 Z5 r- _
getch();
/ \0 {- I5 _0 b8 Y. O9 b}2 S% `5 |2 ~1 @5 J8 M; H K$ p* o# {) i
==============================================================+ h, S3 }& w/ h$ n
【程序64】
" ~% S K' f4 D8 w2 O( B题目:利用ellipse and rectangle 画图。
! B; f; E! ~$ B0 _3 ]1.程序分析:
' Z: N7 W) y/ G9 s4 b1 {* W1 @2.程序源代码:
/ H3 z6 N4 a4 O5 n* g. c#include "stdio.h"( A" L' }3 {5 M& a) A, r
#include "graphics.h"
5 l6 v2 G' W% R# f/ F#include "conio.h") o. ]' X6 e( [0 L: o
main()
( W U& B: o) x$ n4 e{# ~* c9 ^5 Q3 q: o' n
int driver=VGA,mode=VGAHI;' C% v' y! E$ \( l6 g6 J5 G
int i,num=15,top=50;
% n7 ?' z0 u8 U/ J" h& Fint left=20,right=50;2 ~; ~! w: g/ c% D8 _3 o
initgraph(&driver,&mode,"");
( u6 v1 ~* g! Q6 `4 a+ Qfor(i=0;i<num;i++); }& @8 ^% _# k9 M" m, m+ E
{
, e# m2 [7 p" ]: q) eellipse(250,250,0,360,right,left);/ k1 ?) ~' w4 e' \6 j3 y
ellipse(250,250,0,360,20,top);. k. ^ T* `9 D+ j& o* O
rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));' n* z! G b- q1 d; p$ P8 j/ z/ m2 g
right+=5;
. n. H5 z! X- |3 `' L1 j1 J aleft+=5;9 u, i$ H u2 j% D4 k% @# k
top+=10;% I7 R1 B8 z$ E4 S
}
$ Y$ ~: ]6 s& f E" A% Jgetch();
; a. C3 `% p8 \/ x# v} f; g8 S8 T2 }1 }+ g
==============================================================
7 W5 q: \& M. |9 U7 D【程序65】
& V2 N0 x3 S7 I9 O+ b! h) ]题目:一个最优美的图案。
1 l) \% k9 r( S/ |* O/ R1.程序分析:
, j& C3 J2 U1 U# ?2.程序源代码:
0 G0 C2 ]' x) l#include "graphics.h": d0 p3 Y5 p+ S% o4 x: l/ D
#include "math.h"
. [0 S6 }+ s; Z/ S8 w#include "dos.h"* }- U/ ~5 _! K+ P3 q* ?
#include "conio.h"
) k7 g2 V, _6 v8 G5 f2 s/ T#include "stdlib.h"
) ?. [$ f! a2 a" v) c#include "stdio.h"; z# t. K; R5 W% a$ @0 ]/ \- ]8 {
#include "stdarg.h"2 E9 ~/ q( R G+ k
#define MAXPTS 15/ G4 q) p3 a5 z- z4 M0 \/ m8 t! S+ @
#define PI 3.1415926
8 k6 G2 }4 ^' x/ Hstruct PTS {
' S; U4 Z$ H8 g& x4 Xint x,y;
+ [- z: _- F* a: Y3 r0 E};/ ^" r( y$ T2 h! v% a/ [: u
double AspectRatio=0.85;
/ k) p. D' W; \' m: @7 n1 Vvoid LineToDemo(void)! x) L) Z( ]6 J2 ~# F9 _) k
{5 h/ a; |! J' g4 d
struct viewporttype vp;
& S- p9 f6 i# r$ gstruct PTS points[MAXPTS];
* s" p9 k8 }, P' \+ m* Q6 v" wint i, j, h, w, xcenter, ycenter;
+ G$ h x2 u Rint radius, angle, step;
. a# O6 r1 \& q% \ x" \double rads;4 P8 K/ L0 Z+ n% M
printf(" MoveTo / LineTo Demonstration" );* f! Y2 [- d6 [" w" B
getviewsettings( &vp );7 O1 b: o7 \5 _, ^/ K) M
h = vp.bottom - vp.top;
/ [% j) c) X+ C0 e6 Fw = vp.right - vp.left;
7 { g' G" I- A; @+ q3 u7 Nxcenter = w / 2; /* Determine the center of circle */) _8 L1 f) ^& q% w" v4 \
ycenter = h / 2;: u( k: n" E d9 I, {! x
radius = (h - 30) / (AspectRatio * 2);% G7 e% W" {3 P0 f% T& G
step = 360 / MAXPTS; /* Determine # of increments */$ `3 ]7 k: k) t2 o! H2 {' O
angle = 0; /* Begin at zero degrees */
' j* L) u' F, ?1 P* }* w5 Ufor( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */0 v& L5 \3 q" `2 g7 N C
rads = (double)angle * PI / 180.0; /* Convert angle to radians */" B% K$ |' y6 X4 c) v
points.x = xcenter + (int)( cos(rads) * radius );
, O0 u1 ^2 Y/ p% z* f' M* wpoints.y = ycenter - (int)( sin(rads) * radius * AspectRatio );- Q! V; C3 S, P5 v4 ?
angle += step; /* Move to next increment */
- h/ p# | P% i: ^; B" `}
( w+ {' b: T3 x2 U" Vcircle( xcenter, ycenter, radius ); /* Draw bounding circle */
$ s2 }6 G' O9 O- s' Y9 ?7 `for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
# b; Z4 N8 B& Cfor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
; a( L* f1 P+ U" i, i1 @! K2 zmoveto(points.x, points.y); /* Move to beginning of cord */8 S: T: T& `# P' O& K- O" [
lineto(points[j].x, points[j].y); /* Draw the cord */3 M7 T2 b6 D# l9 ~- [$ H
} } }
1 C$ N# v3 s* {% `0 umain()
% w" |+ B' \4 Y/ W9 d. Y{int driver,mode;& j8 ?$ J9 b) I# K3 m9 P0 i
driver=CGA;mode=CGAC0;5 l! H& \# ?7 Y- B
initgraph(&driver,&mode,"");3 E5 I& n' Q, e; G
setcolor(3);
! E; y; Q" S' ^setbkcolor(GREEN);% y2 |2 {! ]" u" u2 z* G" @# J
LineToDemo();}: O& w6 ^' T' X
==============================================================2 P3 v) U0 K; V+ x- Z
【程序66】
4 w! P2 ?$ ~2 x: c' n: g题目:输入3个数a,b,c,按大小顺序输出。
+ M5 _" |8 X3 G/ c1.程序分析:利用指针方法。
! \* }$ y) ] v) w2.程序源代码:
- k+ `7 s7 K' @/*pointer*/
$ X+ [- }+ T) w6 {4 M4 f, Ymain()
. h, X+ n. x% p6 J, l& O( D8 `' o{
. _7 R5 _# \% g6 X/ V3 Q3 o9 G: Iint n1,n2,n3;
3 V! L4 n& J$ P3 [: ^, oint *pointer1,*pointer2,*pointer3;
+ \4 v r0 ]5 A/ G$ P7 Bprintf("please input 3 number:n1,n2,n3:");. T9 G$ I* }% n' v5 J0 `
scanf("%d,%d,%d",&n1,&n2,&n3);- \3 l$ w8 |2 L6 _* t$ c, v! |" t
pointer1=&n1;
1 |4 e. A6 N+ m8 mpointer2=&n2;% D; j# a& }: W" `2 v+ V+ p
pointer3=&n3;
& q; n. ?& n1 j3 Uif(n1>n2) swap(pointer1,pointer2);
1 k+ T# q+ N$ b# W& F6 k. cif(n1>n3) swap(pointer1,pointer3);
8 g% X8 c; ^ c$ `+ zif(n2>n3) swap(pointer2,pointer3); D- S% H J% ^1 [. z
printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);. _. R m# i( j: C m! T" x, a0 n
}# r2 h/ q# a9 b8 T
swap(p1,p2), {7 J; x$ t2 [- ] v' S) }
int *p1,*p2; h$ A4 k8 Z! H9 T& ~ G
{int p;
0 f5 b3 J& m( T4 qp=*p1;*p1=*p2;*p2=p;& v3 \* c' ~/ X$ _5 u
}/ j) s6 r' @' d7 Q& P4 q
==============================================================
8 o9 p, I( S- l* W7 u8 Q( U- _3 v; @0 @【程序67】
/ a$ Y2 b1 e! V% L, s/ Z7 l题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
2 D( D# V2 G) E( u. F1.程序分析:谭浩强的书中答案有问题。 ; j9 v' r' [# d/ j5 G/ |
2.程序源代码:, g: P5 W# `0 d
main()
- a0 k4 g+ L3 Q" t8 P{ t7 z, ?+ b* q. J/ ]
int number[10];* a# ^- u+ l: Z
input(number);
! P! U' O4 X& k3 a- c5 gmax_min(number);
$ i( d* q. C9 q% j/ s% R2 r6 Qoutput(number);
; l( ?6 k, Y2 S$ O" m$ V: b# H( e}
. N2 Y( h( N$ u/ }( jinput(number)
" _: L) D; l9 l9 P4 M/ v( [int number[10];
& M( }7 P/ C+ C2 G# A+ M) {+ m7 M7 Y{int i;
' j, h' N8 h1 b4 ]for(i=0;i<9;i++). ? \8 f9 a, v3 R) ~& C/ K& Q
scanf("%d,",&number);; N" j! ~1 X2 K$ Y; u3 R
scanf("%d",&number[9]);3 O- E q$ S, J; @1 h) y0 H: N
}! L9 _ S# p7 J t4 G2 ]
max_min(array)
' c# m) ?. B- Bint array[10];
% i3 w7 h2 h( f9 c1 \0 X* o{int *max,*min,k,l;
3 f; F% {3 j3 S$ u0 g2 ?int *p,*arr_end;4 _4 ^3 L# G/ e5 Y3 o
arr_end=array+10;
& T' _6 b6 n% m0 dmax=min=array;! d. D; U5 _, {# G' w
for(p=array+1;p<arr_end;p++)1 Q' t( z* r. Q; N3 i A% q
if(*p>*max) max=p;' P; u+ _0 Z9 W' e9 M' |+ e5 d
else if(*p<*min) min=p;
& s3 e. F/ Y! Z7 ^8 C1 g+ t" a' W k=*max;
8 A0 b6 H) h( k$ F0 }8 H l=*min;9 B2 X: B$ x4 K% @1 R; r
*p=array[0];array[0]=l;l=*p;
& f* G' V7 P; S, ^ *p=array[9];array[9]=k;k=*p;
- @# x$ v8 L+ `) Q3 |0 \ return;6 A7 y- N5 N y/ Q7 Y
}
8 R/ m3 _/ `" ^. d( q. S& g1 U6 aoutput(array)
% G+ Q# L6 l, `' D3 Jint array[10];
6 I% p5 E8 q; _{ int *p;
. a0 y: t& m4 Y, E- t; A+ F- ]for(p=array;p<array+9;p++)
- Q5 ]. L# }1 R printf("%d,",*p);
! L8 W# X2 C. R# L! \9 yprintf("%d\n",array[9]);# `8 p% w& |4 n5 p2 U
}& c$ f- p2 l% w- Q u! W
==============================================================6 i7 Y1 M% _: f8 M7 S
【程序68】. O+ K! [, @! `. F" ?( K! ]/ v
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
4 y- b0 `+ D9 ?# I, d: L1.程序分析:
6 n# \" x# N/ e7 Z2 Y5 y; ~2.程序源代码:
6 G+ X% m: e$ s8 @2 cmain()7 T, K' u' M c$ J( X# L y7 x) Y* Z
{
$ k1 E3 ?/ U( j4 v8 ]0 C( l0 Nint number[20],n,m,i;
; A# ?! y) i6 J& Y9 J2 y# v% Jprintf("the total numbers is:");
2 e# G% @& M" kscanf("%d",&n);
8 Q" H. G( K* o4 g1 m& f6 Yprintf("back m:");# f& V9 K) l- W
scanf("%d",&m);0 ^: R h7 ] E7 k/ F
for(i=0;i<n-1;i++)
3 B) |8 C! o$ N- g scanf("%d,",&number);7 C, q6 Q0 }% q( L( w# ?1 }# U
scanf("%d",&number[n-1]);, z. [9 k) m' i
move(number,n,m);
& P/ L* Q8 B. q3 I0 Wfor(i=0;i<n-1;i++)* X$ y5 z, r$ E9 T! U& x( ^- {
printf("%d,",number);
) P& U/ B4 c- I8 }) rprintf("%d",number[n-1]);
- H2 A1 g7 Y' l/ L3 r}) o: |2 B) n0 V& \/ j4 Y; y
move(array,n,m)
" S+ A7 u2 i2 ]( I1 I8 U0 ^, pint n,m,array[20];$ p& \0 y# s, M7 L- b- c* T4 R' ~8 O
{- a5 p1 S8 w. n, Z# F6 d* I5 `$ c
int *p,array_end;
9 q. s$ G `9 i0 G7 Zarray_end=*(array+n-1);, \ ?% n4 V7 w I; G6 H
for(p=array+n-1;p>array;p--)
1 z0 x$ R5 |- {. ? *p=*(p-1);
( C5 r; Z) Y+ E, A *array=array_end;
- d$ b4 O: @9 G/ ]3 |( r( W m--;, w' S: ^5 g5 d2 ]* F* Z
if(m>0) move(array,n,m);0 k. {1 z2 o7 w: y( A
}
' X7 Q8 A: h- p% Q% V- p7 x' A==============================================================
6 \' {5 g! \& ?& M6 A9 {【程序69】
1 l0 U1 Y; [1 r2 n+ r5 h" [/ ~) _题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
% V: Y Q+ Y$ [! C 圈子,问最后留下的是原来第几号的那位。- T) F% P, x+ ]9 R
1. 程序分析:
# s. s8 I: `2 k5 N" H7 Z {- {2.程序源代码:
/ {6 O, r/ l$ q+ I5 J% w#define nmax 50& C, W$ }3 r; X" S
main()
0 z N4 F: j( Z( f9 b9 M{9 q0 l% ^, ?2 r$ [7 V& V y
int i,k,m,n,num[nmax],*p;( X3 M1 I: r+ F
printf("please input the total of numbers:");2 ~7 ]# T4 a/ a9 U
scanf("%d",&n);$ e C) _7 f0 \4 |# a
p=num;6 H/ X/ l4 n* Y
for(i=0;i<n;i++)
# l; h5 u1 |, v+ k *(p+i)=i+1; }6 R* a3 d* I& b) p" j
i=0;
7 W7 }4 e& q& @" p' u x. ^ k=0;
8 H$ L. D, Y! p m=0;
. c, x5 s) a' }9 E# J8 H/ Q/ Y7 ^ while(m<n-1)1 Y3 Q" M$ Y' c+ @8 o3 ]; Y# ]
{
! V. F) L# x* C) c! p if(*(p+i)!=0) k++;5 W/ {7 B, F) Q! q/ P
if(k==3)
5 u9 L+ ?9 y" P: {0 F7 R { *(p+i)=0;/ O9 Q: M1 `+ z' Y2 m4 S3 z% w
k=0;, R2 r5 T! O* K* Y1 D3 P
m++;' J* b2 \8 `. j4 A& V
}0 g8 _% W0 j1 r2 u
i++;
$ q- P7 ?. d9 f0 B& c2 ~% \& E; qif(i==n) i=0;
8 \ T9 I, V3 n& e6 \}0 o& v' p6 D; R5 |! u& P
while(*p==0) p++;3 v; I9 C5 i% k# S& l) ]
printf("%d is left\n",*p);
' d: f$ q' Z4 O6 d( `4 s( S: R}
- C8 o" l' [/ S. m K1 x% \============================================================== y- r# G/ n; |% B6 ?' R
【程序70】
' N, U9 H' m* ^4 D' q' L$ ]) u题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
3 s+ g: W7 h" c: t1 ?- R! Z! g1.程序分析:
# K. U! O/ B5 @9 c8 g2.程序源代码:- `- G0 V0 U: ?5 @ L. O
main()1 M$ Z! R- v. `9 Z8 G2 Z
{6 y9 M$ Z: h1 K" ^
int len;
& {* e+ N! ]1 |9 K! C1 F9 }char *str[20];: Z# z7 x, @+ I& i: k: Q5 Z
printf("please input a string:\n");
; p$ d2 C$ o& }( x5 u, ^) [0 [scanf("%s",str);: J" o, i F9 \" ^/ X4 F$ H
len=length(str);' K& U w8 ^# E3 K" L
printf("the string has %d characters.",len);, z5 t* M: ~% x) H2 Y! k( I/ D
}
! O6 ^ s, R0 i* V# Slength(p)
5 v G) R+ E) U; E+ h, X. O% `char *p;
( |' |. ?# D1 h: ~4 s{
& }. i' U& D1 S) `int n;
- _( R2 I4 W" v) Qn=0;: H$ j& p8 O( b) V4 Y
while(*p!='\0')& Q; |4 N, i, Z0 F4 h! B
{3 ]0 E( p$ F% U. h$ \0 O5 v0 V: |2 d
n++;- N9 M2 d+ G, K% l, r
p++;# Z2 z3 p5 ?7 `8 f) O0 b
}1 e/ Q9 y% ^8 x9 m* F
return n;- |/ o9 j% k! w# |9 W3 j5 ?
} |