【程序27】
# Q/ v& j- `8 U0 m. u题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
) [9 b* k5 |5 S8 y' \7 ^& a; ?, @1.程序分析:
# {2 I& N' k2 ?2 f2.程序源代码:8 w1 [5 Y4 \" M( T2 b3 }
#include "stdio.h"
% k9 a. D7 M( Y" X) M2 gmain()
/ ^+ V. k& A8 P1 b# D" J! A{
4 I/ g8 l. N% ^int i=5;! U9 x: ]7 F+ A5 [1 J2 T) D6 j
void palin(int n);) y# V5 x; R+ S; r$ m. I9 r; J
printf("\40:");
7 C* x0 k) Z7 o( b4 upalin(i);
8 ?0 K& X/ X$ u; Q+ W7 T. W8 Cprintf("\n");
$ _/ a* r- d; l5 Y/ S- y5 W}
, Q5 i9 c- Z' g& jvoid palin(n)& o; H# Q( \4 w9 ^0 S! s$ f5 S
int n;( P: D; M. v# F. L0 h; J
{
* \, {; {( }5 e7 Y3 E( Pchar next;, W F F( s+ ~; ~ E
if(n<=1)
+ m( p, `1 Z( p# n2 X: j. h9 V {
9 z) m. Q. N3 g, v& W next=getchar();) O. m" V. F% Y& e; @
printf("\n\0:");6 ^8 {3 W6 x- l: I! N! S
putchar(next);
3 a4 @1 w$ \! k }
* c# `2 u& J( s$ i! n& p, t' |else
{- t$ i( x1 i3 ` b { ?( j( ]# j* _* O+ H# D1 n3 l
next=getchar();
& f( p; k3 g' p) ^/ G; j8 r palin(n-1);
% N# E$ i0 E' f' k$ G( x4 ^9 w putchar(next);
7 g/ f! d1 E% Q. k }
7 e0 n! q' Y9 `$ a2 c! [}3 g: u# T5 {5 h. J
==============================================================
4 A/ Y& l2 U/ F- F; e【程序28】信盈达嵌入式企鹅号要妖气呜呜吧久零就要
; Z' J' j) h! N5 B( P题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
7 s6 K6 h3 j+ { 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
8 V' [, M: y$ v: G) L$ B } 问第一个人,他说是10岁。请问第五个人多大?( W( B E# U$ p0 y( p
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
' Y7 D Q, n+ y 第四人的岁数,依次类推,推到第一人(10岁),再往回推。2 c& c, Y- v8 `. n1 q2 g
2.程序源代码:# P# z0 ]7 {* O0 _) s* U4 U
age(n)" b$ x, S7 |( I( F! p( s. `7 b
int n;
; R& I3 E" d1 Y2 L' Q/ k{4 l+ D- h3 D% F
int c;& O6 B' Q3 F2 V
if(n==1) c=10;
: Z1 z O t) Pelse c=age(n-1)+2;0 o$ i% Y" M( g% s% _
return(c);
* [/ u, s8 Y8 E2 ~}$ A$ P" q' a( L: A1 U2 ?
main()
! b9 K2 k2 n: e% M. ]2 ^7 S{ printf("%d",age(5));
- e" t* P7 L* g/ a% L3 {}
6 o9 Z4 R) a- _==============================================================( ~) L4 K, b* l( k
【程序29】 % G' X/ [# {! s2 z
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。6 k& s% A1 C" U* l% A+ B
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 9 n2 \; g7 S7 {* s G: L1 H ?0 v
2.程序源代码:
2 w2 ~0 ^, u. m3 |; ?main( )
6 u8 `8 ]/ B; \( o3 B5 C{
5 [7 I& r( |: llong a,b,c,d,e,x;; i6 d4 K. ?5 q7 k3 d; M0 A4 K
scanf("%ld",&x);
1 @; _* q( W0 @9 G2 Ba=x/10000;/*分解出万位*/5 g- j) z$ }9 R8 X' b
b=x%10000/1000;/*分解出千位*/
7 x$ A: c# x) \0 f& i% Xc=x%1000/100;/*分解出百位*/
& H/ d, c1 T1 N# t! Sd=x%100/10;/*分解出十位*/) C6 i% [1 d# c% J- [/ B% e4 k R
e=x%10;/*分解出个位*/
3 R5 k; O7 |# m8 `) d( c' hif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);- Q9 Z: K/ Q3 j' l* L
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
+ c' H& S8 C" }1 v2 J7 X* u3 x else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
9 Z! Z6 z" f, v7 | else if (d!=0) printf("there are 2, %ld %ld\n",e,d);/ _, ]+ h. p# E C1 o) c a" F# o) D" }
else if (e!=0) printf(" there are 1,%ld\n",e);
" R7 Z9 F {, [0 p}
9 G. S- ~6 w$ f) D' k==============================================================
& D& L$ {1 V* N1 _【程序30】 ! ]2 c( C' [. s1 F, b% Z
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 7 Z# m" r' p" ]/ I% N3 f% d
1.程序分析:同29例
) q6 }5 D4 H" ~! G; O/ _! e0 E2.程序源代码:) N, O, O: o, a" @& @
main( )
- O" J* U, T8 ^. `5 h. ?{
9 d$ {+ p- H; Y* F4 V W' elong ge,shi,qian,wan,x;* P4 \! M8 U. k
scanf("%ld",&x);
# q3 }0 {6 |- E2 B3 K% U) R; swan=x/10000;* I2 m0 r1 e2 }5 O2 m/ `
qian=x%10000/1000;
6 K& T" d+ m% d% n2 s' fshi=x%100/10;: s' P* F) ^" Q- }
ge=x%10;( ?1 |) n( h' s% X7 W) P
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
& j, f+ n% l% a printf("this number is a huiwen\n");1 I( W/ @4 K1 g) e, K) u% {
else. F& Q3 T; I9 M) _
printf("this number is not a huiwen\n");
5 F) X" C, s) c6 ]5 x, n5 j} 【程序31】' \# n# V2 V5 n
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
6 I" [! H/ N7 d 判断第二个字母。
) y3 f* \- U( E2 q( h$ @1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。6 b$ a1 D( W. ^+ g3 r
2.程序源代码:
& b5 C6 C5 I4 d S$ K) |; { w#include 7 M( h6 {- O+ F" r
void main()8 ^, C5 ]& ^% {' F$ ^1 n
{% Z3 B+ g" z9 a2 W
char letter;2 J- K# [! n" G8 `$ J7 D
printf("please input the first letter of someday\n");
- g) H9 a+ _ Gwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/, s% x' h6 c( I+ I) w; ~9 R5 y
{ switch (letter)
$ E, u- i7 w- |! s! K* ?{case 'S':printf("please input second letter\n");6 S4 v% |) t8 l9 U3 q9 n) y0 I
if((letter=getch())=='a')
( O) t0 }: \3 G' x1 N, E printf("saturday\n");- c% O. {" [' U& c# m& A! z
else if ((letter=getch())=='u')
1 n9 {; ~5 p/ _( E+ ]2 o+ Q! @ printf("sunday\n");# W6 c( f1 Z. x5 l& K# T. N
else printf("data error\n");, ]1 T7 U: ?7 ~) j0 D8 l
break;
. y( M) z Y% @. qcase 'F':printf("friday\n");break; s) m8 X( h% S) X7 ^
case 'M':printf("monday\n");break;
' [2 t( |9 n" W. e: l6 u$ Rcase 'T':printf("please input second letter\n");, U0 d" U; c# S& K4 M
if((letter=getch())=='u'). L' m; l6 r2 g, v+ T7 a" E& Q, Y
printf("tuesday\n");
! N ~, l. k2 U7 _+ A/ m else if ((letter=getch())=='h')
" R; o- z b6 x+ ^% c* } printf("thursday\n");
* m! [' w, y" d# @& Z else printf("data error\n");9 l1 b/ `9 q2 a: _
break;4 M: E% f( h6 V0 V0 u1 M% B
case 'W':printf("wednesday\n");break; s% w7 O* H, E( B
default: printf("data error\n");9 i+ Q5 h, Z) a: g
}' Y: x; j. m2 s% ^' B( U
}6 a2 E$ e/ k! U
}
/ S. q; d( K- m' a==============================================================% Q% K) j/ ]( p0 P6 E! y/ e+ H4 h
【程序32】9 R( H" x k( B6 T
题目:Press any key to change color, do you want to try it. Please hurry up!9 t$ ^) ~% Q$ x- ~2 R/ B
1.程序分析:
' P, D" p- Y$ a: s8 X4 A2.程序源代码:
# s) C Y+ }5 D) R#include
1 H" O1 l; d, ^. W1 x% @" J- G# ?$ h& L$ C9 Kvoid main(void)
9 a3 u1 B0 S4 M# E; i( |{
4 I: H' E v1 H# ]% e3 I, vint color;
p( _8 F( B& \' c9 mfor (color = 0; color < 8; color++)
. T2 K/ ~) G3 @' ~( c c {
. W( `! ^- b6 \# W9 ~8 W2 O" B textbackground(color);/*设置文本的背景颜色*/# w# i, Z; V5 y G
cprintf("This is color %d\r\n", color);
/ Y4 h7 f0 g$ ` cprintf("Press any key to continue\r\n");
?' [ |$ T# T: u getch();/*输入字符看不见*/7 |: q% U+ I1 }& h4 c
}
" n, Z& N1 N2 m n8 g& |/ v}
" ^0 t5 t0 n2 a: |- D" q. @==============================================================
2 B% a G0 y/ f1 K. ^【程序33】4 Y3 K, \, E$ \
题目:学习gotoxy()与clrscr()函数
8 t- H) u7 ]0 a) p5 R( E" ~1 n5 k) `1.程序分析:0 e) u$ x1 W/ s9 @0 {8 }# K
2.程序源代码:5 |/ S' i2 l6 V4 X; H' }
#include
3 i$ N- Q+ Z" f+ \7 v: N! ovoid main(void)1 K. t4 ~2 R+ u
{
8 \& E1 }6 @! B0 Oclrscr();/*清屏函数*/
9 b1 {! _% O' l! S) j+ V2 t$ utextbackground(2);6 k. w% x' S& N
gotoxy(1, 5);/*定位函数*/ a& f1 H/ B; t; Q3 @* k
cprintf("Output at row 5 column 1\n");
# _. [6 x3 Z5 P- l8 }' l/ \textbackground(3);, q) ~# z3 H1 K9 t n a7 Y
gotoxy(20, 10);
: R* A& ~ I0 M& Y! Rcprintf("Output at row 10 column 20\n");1 R) u+ _; ?5 j
}
5 k7 d* z( E- s/ c7 A/ `" @8 `0 e==============================================================
: S- U/ |3 B- j8 ^7 ^4 E9 y【程序34】
$ N) j; _* P+ J& n; ~题目:练习函数调用/ `4 u% t- S: l" n$ ?) a
1. 程序分析:
& A4 J0 @" V, ~. F: ?3 V3 U2.程序源代码:
. t r" h2 [9 C& |; a#include $ U. Y$ _) t. a8 z+ r4 Q
void hello_world(void)
6 n3 D1 J9 T6 y{
1 n/ m n7 I( Q9 R: dprintf("Hello, world!\n"); T& J1 G7 ]; r6 A
}
1 \2 G* U5 v$ g9 o* ?0 }void three_hellos(void)) n' [) b9 u9 K9 r, Q& v2 ^: r
{
2 }" c, r) g+ u$ h' M- ]: w7 f6 Bint counter;5 p& ~ ~: H$ n r( U
for (counter = 1; counter <= 3; counter++)1 _6 ~: n1 d$ U3 I! [* Q
hello_world();/*调用此函数*/
) S! F+ E/ ]. z5 i( u1 ] q" R: K}
( `9 v u4 P1 Y2 \void main(void): ~0 }- t6 g) U- l, h7 y
{! c9 S$ Q0 Y0 I3 w/ E
three_hellos();/*调用此函数*/
0 [4 T# Y; p7 Z. O& F}
+ d9 w- ^& b1 @==============================================================
2 w" J3 J. b$ x% y" {7 S【程序35】7 S; @3 z y/ ~$ s r
题目:文本颜色设置
, v! J1 V8 Z5 u1.程序分析:( |$ i! Q; f1 i' N
2.程序源代码:- W% ~% F; C* G' G/ o. ]
#include
/ a+ n/ ~% a6 @8 l6 qvoid main(void)% v1 t. u, C8 r* V6 ^# u
{
% Q) ?: O0 t3 V1 Y! O& M+ oint color;
2 q6 n, F4 p' @4 g( yfor (color = 1; color < 16; color++)" z8 {# S& L5 {2 j8 E! j: B1 U7 L
{
" s8 l% S" o( m4 v& W textcolor(color);/*设置文本颜色*/8 }4 V; v- x8 ?, P
cprintf("This is color %d\r\n", color);
& W. O! ~3 r/ a }/ p+ h0 `# y/ B, h6 k
textcolor(128 + 15);
( x7 t! I& v6 acprintf("This is blinking\r\n");" [+ t2 [* j2 J9 v7 ^, P& U
}" N! j4 t0 J! {8 U% a$ ]$ i+ g
==============================================================
; U9 {2 m' U+ P$ E% o* t. x【程序36】, s# ^: h; m# s9 [) j# a
题目:求100之内的素数
" w/ c& ]# ^/ a1 k( K) ?( h1.程序分析:* d1 o0 _. _( k0 S
2.程序源代码:
( O& _; _$ `$ u) q! A#include % G5 [$ j/ @2 B
#include "math.h"8 z. k% y) K- e. `2 L
#define N 101
' r. {) f$ M3 rmain()/ q" u7 D% w) @+ P! e- f" c P2 k( |
{
: D% E/ L' n0 ]4 ?" gint i,j,line,a[N];* O% x; y1 r) {
for(i=2;ifor(i=2;i for(j=i+1;j {
. n6 i, @) x# o/ P if(a!=0&&a[j]!=0)
* U1 n4 w9 F2 s* L+ z* d6 ^ if(a[j]%a==0)9 }1 J" J6 {$ @& \* S
a[j]=0;}
$ k% S7 N- ?8 pprintf("\n");! A; r* x7 E! w( M# o$ A3 ]
for(i=2,line=0;i{7 Z4 ~1 b. f7 y: n# d# C
if(a!=0)
) R# S v# d6 H {printf("%5d",a);8 C2 k, H$ a, U* e. k
line++;}
$ S; `- o }) j) Z# E' K! H if(line==10)% z% j, c% j3 c: _
{printf("\n");! h- H1 e) A& y! ~
line=0;}
8 ?- K; P* q! [ `4 ^2 q5 D}
. V0 X7 D6 n! ]5 \* ]7 j2 K: M}9 Y1 ?8 _4 J+ H! q7 P2 X) X- i
==============================================================
C' |; u8 i: }8 g1 l【程序37】
0 a: _* A3 `# m& ^ ~+ F题目:对10个数进行排序8 u+ ]5 P" W; p1 q
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,2 n+ l/ j1 y5 ]
下次类推,即用第二个元素与后8个进行比较,并进行交换。
/ |4 O8 |* D8 w9 w A- L2.程序源代码:
- S& F+ `8 ~" j i#define N 10
6 z) Q. X# g6 C- omain()
' |% s0 p$ x A4 f5 I- \{int i,j,min,tem,a[N];
0 P$ d7 n4 s! v! P; U/*input data*/
0 M B8 B# _# _ S1 z; I& Oprintf("please input ten num:\n");
9 k& J: O2 J. W0 `6 wfor(i=0;i{* L9 @: ~: G7 d5 E
printf("a[%d]=",i);7 R) f& J1 l7 N
scanf("%d",&a);}# o' a5 L/ b" s2 n
printf("\n");
% y( c H5 s! C2 R& ^for(i=0;iprintf("%5d",a);( b! G2 U$ y5 K7 k" F7 l# I7 ?
printf("\n");1 H) G3 J$ x8 Y& g
/*sort ten num*/
d4 T) o1 p2 Xfor(i=0;i{min=i;
$ e( |! k0 j2 E( ^* _for(j=i+1;jif(a[min]>a[j]) min=j;
9 q* R0 Q& D& V* Q7 mtem=a;
/ n1 f/ k% F& h3 N: _a=a[min];- B" c: l( [1 y) Y$ A" w
a[min]=tem;7 N9 j- @- P l+ y: l) C
}
# r j+ X0 Y; J q& E/*output data*/" k u4 [) ~& U% Y+ K2 T
printf("After sorted \n");
& h% J7 X% R. V1 E# m( f' ofor(i=0;iprintf("%5d",a);: o# `0 F5 e9 @! V6 s
}
" ]6 l; s0 z' J* P% Z==============================================================- M7 F, V/ a$ v# |( p3 }
" c# s) Q. h% K
|