|
【程序61】3 z& _3 g% e% B" d4 K# L7 F
题目:打印出杨辉三角形(要求打印出10行如下图)
) ~8 z0 ]# G* y; h5 s1.程序分析:
" [" |2 y; @$ m! `! {, Y 1$ `' w; _& c/ F4 W2 i% ~
1 11 C- f6 Q' O+ ?2 n9 G
1 2 14 _& ~3 }1 E# d- t, X
1 3 3 14 m8 |! T$ V, E- b! k0 X$ {* }
1 4 6 4 13 I' v9 S# R0 g* D1 c
1 5 10 10 5 1
8 s) ?! a! G9 a2.程序源代码:. @$ \* j- j4 j8 Y9 f5 A6 _6 \
main()! P* H X2 Y4 t! }2 ~: O' Q3 @5 A
{int i,j;
[9 N! d* H7 n2 }* @; ?' J4 Iint a[10][10];
6 R* B% A, ]5 O5 A1 kprintf("\n");# ^& t( w. w) b& E$ R
for(i=0;i<10;i++)* Q) z) Y7 I# z
{a[0]=1;
1 f1 X0 M# m1 ~" \( c5 a2 C a=1;}! y: a2 ^3 j$ h O! N8 G; k" u {
for(i=2;i<10;i++)& m) y' l& c& I6 h( |# y, @6 K- M
for(j=1;j<i;j++)2 d b5 H* I- m+ {. W% }
a[j]=a[i-1][j-1]+a[i-1][j];
- _8 J/ }4 d! u7 [+ W( @for(i=0;i<10;i++)
* L/ q% P+ x( q6 G# }* `/ G' O. M( [ {for(j=0;j<=i;j++)
5 F$ i7 E. \9 i% [8 y" A Y printf("%5d",a[j]);
+ V( U. H( ]+ I: H+ {/ Q" \ printf("\n");2 Q- w( V3 A' f8 f/ a- [9 _- D
}
5 R# o. k) b1 `}7 @+ w7 _% u6 [. O, J9 C o5 p3 \5 ]2 _
==============================================================( m. Y& s# |4 h
【程序62】& g5 j6 m8 o$ Q: i% x. F* Q. R3 `
题目:学习putpixel画点。% r2 ?' D2 F2 r0 T# L3 v
1.程序分析:
$ E3 m6 h; X, l3 {& U- N2.程序源代码:
B1 V) i4 }6 J$ b: I% S3 I#include "stdio.h" {6 t7 A2 R1 H& Q Q: L/ g
#include "graphics.h"
7 x7 m" O5 E" @, d/ P# K( W+ E2 hmain()4 F9 W- _; I1 q" z3 B
{- j x1 ^/ p3 O G, C c4 [5 v
int i,j,driver=VGA,mode=VGAHI;
( l8 ^) z3 x7 N- ~, o6 r2 p9 O1 Pinitgraph(&driver,&mode,"");! s1 V* t! [ i! h, {
setbkcolor(YELLOW);
0 U" z' n, }% T S& Z5 F( q) Mfor(i=50;i<=230;i+=20)
' Q( Z" v" n' T* U6 c! l V for(j=50;j<=230;j++)
. _6 \; ?; q7 i2 i" A putpixel(i,j,1);
5 q `: @! U; C7 m( ]4 I" Xfor(j=50;j<=230;j+=20)8 H$ b+ e! S0 B! Q& w9 A+ S0 b
for(i=50;i<=230;i++)
1 E. N5 R& A' e8 c6 T putpixel(i,j,1);) z7 ~5 G( |* o, B! A9 `6 N
}+ M2 X5 u2 o# p* T
==============================================================
2 O( R6 B0 @1 _1 o& v! Z. c$ P/ l【程序63】
, u6 i" F% V: C( R! k; {题目:画椭圆ellipse
5 J% }! g5 _* i! s: b E. X/ h+ _) n! d1.程序分析:
P. G5 g1 \9 T; k* y* n, C2.程序源代码:
( I: i2 g- w _#include "stdio.h"; L1 J( }4 i# U5 F, U; B
#include "graphics.h"5 |% p, E$ [1 a+ N$ F1 n
#include "conio.h"" ~) {( R8 C: A
main()" V+ q% u6 v0 e" D! k0 r% }0 Y* }3 G
{5 ?2 K$ ~) k" |- E- \" I
int x=360,y=160,driver=VGA,mode=VGAHI;, {2 [; v# o6 V$ p5 V; `
int num=20,i;* q* @/ s. [; {" I8 f
int top,bottom;
1 P. t+ h" Q( P, m m# Vinitgraph(&driver,&mode,"");& n$ I# J0 Y, R5 l+ c6 x
top=y-30;6 l& k3 R# [5 a4 `; }; H
bottom=y-30;- c' N) ]( y2 O
for(i=0;i<num;i++)
. p6 I q, R$ u4 ] i% |- F) B! F{6 P# E2 q `" Y" |
ellipse(250,250,0,360,top,bottom);; `0 Y1 k6 N8 E8 }
top-=5;
# Z$ {# L) Z% t8 s0 m+ dbottom+=5;: b* c; r4 ]# \
}
; p8 u6 |) ?) \. |getch();6 @ i8 e; I% a6 f A
}
, C3 b) F5 X( r( T$ {. R! G==============================================================
- j! {- m! Y. `* f+ X: F6 A, K8 u【程序64】# T4 p9 F9 t1 d1 j( E) c/ J3 v8 l
题目:利用ellipse and rectangle 画图。
# H+ Z" B3 O8 C9 F2 X* {5 z1.程序分析:
! y. X" t6 f, P: u: ?! K2.程序源代码:/ E7 v0 e+ ~ T/ O2 n, [
#include "stdio.h"
: Q% Z6 P8 ]4 H, m: T#include "graphics.h"
; |4 e7 h% T1 Z1 |' O#include "conio.h"/ E- }# `' K/ F
main()
/ z* ~" }9 j6 _' j8 i{! G. `4 f- S/ g4 [5 R
int driver=VGA,mode=VGAHI;- v4 \* p% I$ F6 U! g) n
int i,num=15,top=50;2 v' W' a0 g% w& R0 @5 ?% x4 y
int left=20,right=50; k% Y0 A7 @$ @! ?6 j
initgraph(&driver,&mode,"");/ v' Q2 e# K- b8 f G, n: U- T1 t
for(i=0;i<num;i++)6 I$ T O7 V$ \4 r9 G
{$ h3 ?5 Y4 g& C* g. C6 }
ellipse(250,250,0,360,right,left);- n- g$ }5 Q4 O8 A- i% `7 p, ?
ellipse(250,250,0,360,20,top);
" N- T+ i. V! D; ~3 J9 _9 Frectangle(20-2*i,20-2*i,10*(i+2),10*(i+2));
3 r; @: j( F: mright+=5;6 s, R! r. L, G' N$ e4 O
left+=5;
4 X' u6 F' [* v" S+ Ctop+=10;, p7 ~( p, P' r8 x5 ?
}& E7 o$ G; |2 I% J) i. o& t+ b
getch();
% c, J& W0 \( A5 w2 f" y! f}" _ T$ q1 s# m0 W* G( t$ i
==============================================================# |& ]% _! P) ]4 d/ Z9 n
【程序65】% \( j0 t7 }$ R3 C6 `9 v
题目:一个最优美的图案。
4 d8 m/ u A2 m* P M5 v1.程序分析:% U$ l1 X# m) a% T f
2.程序源代码:8 O0 u4 u, ^) G y* n! U9 h$ V
#include "graphics.h"
6 {$ @* \/ Q! [& g9 I#include "math.h"( e7 X' u1 r# Y
#include "dos.h": E f- c& |6 N4 [ m* Q8 `
#include "conio.h"$ k4 I) t" e* i/ O* U* d
#include "stdlib.h"/ u. r& O* J0 P3 d0 s
#include "stdio.h"
# d4 A; i/ f& K5 P#include "stdarg.h"3 b. G6 m8 U# v* a: q
#define MAXPTS 15
0 v* u6 L0 Q4 s. N1 w#define PI 3.1415926
" y0 B; ?9 g, N+ ostruct PTS {
# L. h+ x; `5 Xint x,y;4 \1 Z7 s. H- E/ }
};
( k I/ ^- ~% @2 j! B4 h0 q6 gdouble AspectRatio=0.85;
8 r& Q6 V4 y( D8 i/ `; Avoid LineToDemo(void)# N. r; f& ~3 Z; t* c! |
{7 F3 K" V7 `- @. d: g; b
struct viewporttype vp;3 z; S8 l) B# W0 G& L' f/ ~1 c
struct PTS points[MAXPTS];
! g1 ]7 e' S4 s0 t x7 sint i, j, h, w, xcenter, ycenter;
& j P$ j# W7 q% Oint radius, angle, step;3 z; T( h' M/ n) d
double rads;
) ]" P3 d( W; ~# n0 e6 M$ e/ Wprintf(" MoveTo / LineTo Demonstration" );9 M4 E% |+ K; ]+ y0 G& I+ M
getviewsettings( &vp );
' a6 Y) D i: k+ Wh = vp.bottom - vp.top;8 z$ Q1 w8 x8 ]! E. f+ v2 l5 `: M
w = vp.right - vp.left;
* h: o* a8 A& q$ } ^. U+ S6 Mxcenter = w / 2; /* Determine the center of circle */2 i s! M1 Q: e) }; V0 }
ycenter = h / 2;$ R" Z, ?( D/ W# K
radius = (h - 30) / (AspectRatio * 2);/ B. I& j0 v( |! m( ]
step = 360 / MAXPTS; /* Determine # of increments */
O% f: C: @9 O3 x$ Vangle = 0; /* Begin at zero degrees */4 S" y- Z& [+ M* ~, A/ F' M
for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */
6 B6 ?3 w8 N4 s+ O1 {1 Drads = (double)angle * PI / 180.0; /* Convert angle to radians */1 r% K o& z. U1 j/ R3 F
points.x = xcenter + (int)( cos(rads) * radius );7 @9 h- a1 ]: H( H' B, V3 h
points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );) Z4 D; @ U; N
angle += step; /* Move to next increment */3 y; J y& y+ t) `7 f
}" \% c6 K8 b: t9 D$ t0 f& h8 J
circle( xcenter, ycenter, radius ); /* Draw bounding circle */
$ `' V0 b# C4 D% I# ffor( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */
~ v: ~$ W! ~4 rfor( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */
+ t- F) z2 E' L* `4 }moveto(points.x, points.y); /* Move to beginning of cord */
5 W V! n6 \; q: olineto(points[j].x, points[j].y); /* Draw the cord */# S: M5 L9 X& _3 }
} } }
2 W0 j0 E# P0 P1 I+ a: M6 imain()# G# H/ ]" Q. c6 Y. R
{int driver,mode;' n9 R5 H8 a7 C7 T. L
driver=CGA;mode=CGAC0;
: Y6 O6 b" e+ D* [1 Minitgraph(&driver,&mode,"");
* o! W. |+ l/ \9 {! O, ]% Osetcolor(3);* f# B& s$ f, ^$ z- A7 P
setbkcolor(GREEN);6 L1 i: W& ~( F2 A5 Q
LineToDemo();}
3 ^# {7 A$ a: t) S0 U7 |==============================================================
6 J) Y' f" W. n, o' e5 o) J【程序66】
" o% B: s5 E! R4 X* r5 R2 T题目:输入3个数a,b,c,按大小顺序输出。
! E( h* M: W3 L+ y; {- `1.程序分析:利用指针方法。9 i9 Z# g/ L3 B! g# I# l
2.程序源代码:
4 C5 g3 D2 a1 }' r% ?" D/*pointer*/& I, M7 ]% Q) f& R" \
main()
7 g( Y0 ~7 {8 X9 y, F# ~ w1 [{
1 m) D. ]( y8 h, a: E/ lint n1,n2,n3;
! }) z# ^- C; Z2 l. J; xint *pointer1,*pointer2,*pointer3;2 n* P) J/ j* ^) l
printf("please input 3 number:n1,n2,n3:");
; p: W2 H; [, T1 u2 Y+ Escanf("%d,%d,%d",&n1,&n2,&n3);
# k% k1 K1 w6 d6 t( f( _0 @pointer1=&n1;
1 t, o1 \ n5 I kpointer2=&n2;! u5 S# J0 s- m: v R$ W
pointer3=&n3;% P H6 R& Y/ r' R
if(n1>n2) swap(pointer1,pointer2);/ A ?, p( I# x4 D: R
if(n1>n3) swap(pointer1,pointer3);; o$ I# P; k4 ~3 K N
if(n2>n3) swap(pointer2,pointer3);
/ ^# v" z, h( c$ A D7 x( Q- A3 g- iprintf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);' n# I6 n+ P5 w" ]8 |
}% V8 _- A! L- C5 e
swap(p1,p2), }9 i! W. x; @* M1 Z; s8 b
int *p1,*p2;# ]) I5 v- w, ^$ w* N0 \
{int p;
: A( d9 l& P/ zp=*p1;*p1=*p2;*p2=p;
: f4 ^' q0 [" z; m, ~}
; G( A. u( z3 Y3 Y I==============================================================
+ ?9 ]1 J6 Z: G7 O; e【程序67】# W( ?8 X7 z% p, u
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
! K+ T7 ~, b# |" H$ [& J1.程序分析:谭浩强的书中答案有问题。 - e2 @: `) i6 r7 P7 E' }
2.程序源代码:( L. Z& h9 k( v5 ?* r3 j$ s+ [9 |
main()3 L5 ?( @: C ^. u" w
{
! h& @2 m2 h; T. }9 T+ ?int number[10];0 p% ~. [/ h9 H& L3 ]3 Z
input(number);1 I: f0 A7 h0 u6 L: S& @
max_min(number);
2 U3 n8 f/ D7 ~" b7 coutput(number);
- G, T/ m* L/ t}
8 R ? q0 `: W! ^input(number)2 |( R4 _# \: B- Z8 X7 k
int number[10];8 X* D P+ z- e. r$ G6 U2 Q9 s5 i* G
{int i;) A6 c. I2 p) c( F
for(i=0;i<9;i++)
5 e, W4 g0 U, b scanf("%d,",&number);! v, w$ S" E* h' }! V! E* B- v
scanf("%d",&number[9]);
1 B8 D0 V2 a* G+ D( z1 N# o}
5 S8 _, t/ o. @" {max_min(array)+ `+ f. H" C: U# p M
int array[10];
7 L) Q% k. j, m" q{int *max,*min,k,l;: b* A T! p, H) N% b. w
int *p,*arr_end;
. h5 e g6 p% ^6 s' Sarr_end=array+10;
. I2 u$ {' ^( V3 k$ pmax=min=array;
1 p+ e5 U O+ e# g- g5 dfor(p=array+1;p<arr_end;p++)9 A- {) P* b+ V% b8 I d
if(*p>*max) max=p;
% z* [: t+ _& X; s0 D! O- }5 Z else if(*p<*min) min=p;& b9 r1 ^8 Z( V- G
k=*max;
- [* k5 g& B* ~, J9 { l=*min;
& y/ U9 ^ K/ `8 @2 J *p=array[0];array[0]=l;l=*p;
) @# x7 ^! I6 h* g: K) K) E: v *p=array[9];array[9]=k;k=*p;* D# [2 w) O9 Z
return;; S; m8 E( z9 ?) p- p
}
" ]9 W$ _! L- D3 noutput(array)
$ S5 G I. k, L: pint array[10];
% [# n ~6 E& y9 V5 y$ ^{ int *p;
0 s/ w( p; W: `' Q4 N! ^for(p=array;p<array+9;p++)
" }. N/ b# Q" l) k, C$ Y printf("%d,",*p);
* d% \1 K5 q+ Iprintf("%d\n",array[9]);
1 e9 K7 F* h5 e7 ^8 Q3 Q; S}# t7 [9 A) C( j
==============================================================6 F9 {' V& L! z/ X
【程序68】+ `' Q1 M Q: s) I
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
7 H3 B% I4 {& ^' ]1.程序分析:
( O1 r1 E" P# }7 W0 f' F. O2.程序源代码:& k/ u: e# N. p7 {% B
main()
0 A2 c0 r0 y3 T{
* I* g; [$ o; j: W7 Y& rint number[20],n,m,i;9 K4 y2 I" ^( M* N' | @
printf("the total numbers is:");
; z1 H4 {8 e9 I7 ?! v: D! f7 g. ~% fscanf("%d",&n);
5 p0 H' X2 H" K4 ^+ Q& C3 ~printf("back m:");
5 u" _7 D6 q9 i9 Yscanf("%d",&m);3 y8 o4 Q/ U* n, a5 C7 \( A( Y
for(i=0;i<n-1;i++)
Y7 Z0 c9 Z; v- a scanf("%d,",&number);( `& E& u1 { a. X! m
scanf("%d",&number[n-1]);
+ y5 e9 U' l; `move(number,n,m);
1 c" A* y, R1 @3 zfor(i=0;i<n-1;i++)( ^2 f2 J- z# {$ f
printf("%d,",number);. p2 T9 Z% a0 M! W
printf("%d",number[n-1]);5 q% Y3 z8 q D5 ~1 B
}8 Y/ x- e$ ?- G# {* d9 ]1 x. z* a
move(array,n,m)
6 \+ ^8 t: l( N2 Hint n,m,array[20];
# ]9 R* G* T' v; d" C( D{
& D' T$ F# _4 i% `2 Cint *p,array_end;9 P) n% t3 M1 F! R
array_end=*(array+n-1);3 a! ~' N5 E# `- _
for(p=array+n-1;p>array;p--)* w3 Q4 A0 p8 ?
*p=*(p-1);
" z4 E4 d0 A3 B9 y *array=array_end;8 ~# C; b0 s" n$ V
m--;4 b& i$ ]7 d# g+ u
if(m>0) move(array,n,m);
4 f5 h$ D( b7 U}, e* \# n9 n; c5 w; j
==============================================================3 e b( w; M# o0 D& @
【程序69】) c+ C3 n! _7 g
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出# O; A1 a: B; l3 y+ s4 m. I0 I( ]
圈子,问最后留下的是原来第几号的那位。
, z- y6 W; t2 Z3 m) ~7 e( K f1. 程序分析:$ H4 n1 k3 K% {. }
2.程序源代码:
1 F1 c, ]4 M: k#define nmax 50
! T2 l9 j' t% z% d1 X5 omain()( d2 }$ G' T; P% @; h9 [" B1 @
{
0 g& o$ t' @0 C7 L1 Oint i,k,m,n,num[nmax],*p;+ o! V. S! M3 w
printf("please input the total of numbers:");2 A9 U7 J! G" D8 j& G/ q
scanf("%d",&n);
8 f, k5 d g/ J' g: kp=num;( Q8 N& ?0 l* f& t
for(i=0;i<n;i++)
3 L6 C9 y4 Z' [ *(p+i)=i+1;1 S9 j0 @6 l! e3 S) [
i=0;
( h; K0 R3 @! e k=0;
: |' h% a4 ~5 q0 m6 o m=0;7 W6 s1 {$ _+ g4 }, O' f) w
while(m<n-1)
2 v) f# \+ z* S8 }- m: n# ] {
( I1 l( n9 E; O$ c) o if(*(p+i)!=0) k++;
; b# j& n$ t5 s' _+ h if(k==3)
4 q$ ~& f, Y" c2 X { *(p+i)=0;
1 J$ M' l9 V" X, B% a; u k=0;
+ ?; F" r, ^9 S m++;
- y& P7 H2 l8 m4 U9 ^( A }
3 b6 @( W, _: ^( yi++;$ h2 L. B8 r! H; d+ N
if(i==n) i=0;
1 i# t9 q) r4 l: @* M* y9 `}! {8 X7 w) l/ f8 n' X
while(*p==0) p++;- N3 O# b: Y E% D4 o8 X6 v
printf("%d is left\n",*p);
) Z7 a/ C; E! b; H2 L}, y5 j8 K( V, n: E/ `
==============================================================
" H, O0 U" v/ N! Q t【程序70】4 T8 q n% n/ F8 c, |8 G0 w: G
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
# z$ b) p6 z- r' m1 y! n u0 ~6 M1.程序分析:
! D/ A0 r5 e6 a L6 t7 h# h: q2.程序源代码:5 P& b2 R/ ?$ A" ^8 c7 \' {
main()- L8 P6 k- R: G9 u0 Q' m& @7 F6 q) _
{: Z! {6 X9 a2 y F$ n6 b
int len;7 q6 x& B% v& @: y
char *str[20];
) R2 g1 |) x, N4 b1 O5 V8 [printf("please input a string:\n");
; d e' Z" ^ Y- Ascanf("%s",str);
E7 s% |5 W% C0 b0 C+ @len=length(str);
; J0 l v6 P4 L sprintf("the string has %d characters.",len);
u$ y) u7 U/ H6 _, W* }2 `4 P}9 r9 f0 T9 v4 g3 w4 o+ s" W t
length(p)5 x5 f7 U+ y. J7 y
char *p;
4 h. v o( z6 y& |. l3 [- t4 B! S{
; I" T' _( X* K- aint n;
) _& }6 R* u# b( X& nn=0;8 L: o* @: k6 D
while(*p!='\0')! ~. S$ v- r" S N' _- W- S
{! Q h2 A1 q( z6 K! f
n++;$ l0 i" e! H+ h9 J9 A) z- l
p++;/ k0 R d l2 A/ i u( g% G
}* ` J* o1 b K7 ^
return n;% G3 k2 l- F+ E" M5 ~$ H2 I
} |