【程序27】
B, |4 }5 t% I: \1 x题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。# k! h, y0 L- X+ E
1.程序分析:
2 _8 {) O7 h3 Z5 P0 w6 r2.程序源代码:
# T. ?4 D; f; ~# z- X4 x#include "stdio.h"
8 f, N }. e1 g- X. K% Gmain()4 H) @% r& W! ?! E
{# b' o2 {( N& i, y ^3 L
int i=5;
2 ^2 n, A k3 n9 c' H4 dvoid palin(int n);
; _7 b2 E. u l$ p' ]% g! Dprintf("\40:");5 b1 B5 {& W/ L( H, N4 N( L V
palin(i);
8 T2 [6 h! D3 S y# hprintf("\n");
( J; U* F2 S6 K9 ]" ?+ {}/ k; \0 d0 n. Z3 f* k: n- y
void palin(n)
6 T' {1 f& Q {int n;
1 u. q! \+ f6 {0 F# Y{
0 m* n. [3 y Mchar next;% L0 ]$ X1 b" e* _* Q3 P6 u- }
if(n<=1)7 `% Y8 H. `4 X
{
% ]1 _: [0 }7 v! q! L( e next=getchar();! R' h3 K) B- K! \& I% H$ P
printf("\n\0:"); W5 j, d7 s3 c. f+ V" x
putchar(next);
: d2 D5 r8 u1 [7 i }
0 B8 l. P8 X+ W" a6 ^else
' Y) K6 S/ u0 B2 j' }8 h {
/ @7 O' r$ M- u4 @* M3 V next=getchar();
! u7 {$ w/ ^3 D& Y( _5 n palin(n-1);
7 i( ?) W- V" P6 h. N6 R putchar(next);* S; N; t0 X7 J- ?. Q+ p* c8 m6 f
}" r* M7 A. J% W
}1 i/ T6 [% @ K+ }" w) U
==============================================================
1 V- l5 T. k+ e$ I# M8 M【程序28】信盈达嵌入式企鹅号要妖气呜呜吧久零就要 ! I- ^/ F4 T$ `8 a# W0 @
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
4 V, r7 ^" V" Q/ P* ~ 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
" {$ x4 m! n, S- ]! r 问第一个人,他说是10岁。请问第五个人多大?
. c9 u" X5 F" S, x. R) m1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道" e, B0 h& y$ b1 W6 I. P
第四人的岁数,依次类推,推到第一人(10岁),再往回推。
+ k# u/ W% Q" U3 ]1 U+ S" D2.程序源代码:$ M! Q0 I( q g1 d7 Q. j
age(n) P& H. \2 Q% M+ ^
int n;
1 x# N+ A4 }* i+ C' T9 o' M6 a{
& l) U$ I6 N. Z/ D2 J3 K* Cint c;6 j" k$ z+ j( O
if(n==1) c=10;3 d- W" Q3 ~" V) L
else c=age(n-1)+2;) o# ~9 i# P- `& q2 R; L, |
return(c);
/ ^& C; h/ w! J9 G8 u: e- G+ J5 [7 e}, U. i$ F' A W( n4 }! b/ p; S
main()4 q1 M9 m& C9 L: a' @8 y
{ printf("%d",age(5));) x$ N R/ d0 N3 j, N
}7 x: G! O+ r$ D, q( ?
==============================================================% {0 p/ Q, o% M. T; X
【程序29】
9 J3 O! d4 Y6 P) k' V题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
) M4 v! _# t9 v+ } k) e4 g0 n; l1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
4 Q, z0 [# [+ _ W* j7 I. B. Z2.程序源代码:6 @* Y8 y0 H7 ]# Q# c
main( )
9 Z. |1 J2 b! L6 W% J1 X{
. p' h+ S. H2 P" I8 U0 q( b9 jlong a,b,c,d,e,x;3 j# I! T, b7 @7 z
scanf("%ld",&x); Z% W# F' D% e7 h$ l& D0 Q' k
a=x/10000;/*分解出万位*/! J' `5 m, c4 h1 w4 E) d {
b=x%10000/1000;/*分解出千位*/
- o% f U6 I# s/ F0 C8 H; Dc=x%1000/100;/*分解出百位*/
, C( x+ x/ Y+ e. T( {/ s) rd=x%100/10;/*分解出十位*/7 m+ b4 Y0 T. Q7 y
e=x%10;/*分解出个位*/8 K/ p2 ~8 u. {2 y" W7 b2 T: ?$ |: R
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);: X, t6 v; r% ~! {
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
- R/ K0 Y5 l( P else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);& V( z" | J& H8 J& E6 V
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
. W9 }( i, M6 Y3 c: c+ e: U else if (e!=0) printf(" there are 1,%ld\n",e);; Y& o& w" x: C' `; v
}- v6 V2 Q, g3 p' y A# P% S% ?0 ~; N
==============================================================+ N2 J. O* q6 H$ n* h
【程序30】
* W. j" m9 h/ ^题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
/ d6 j4 w- Z) R6 t1.程序分析:同29例
6 w$ n' m. z3 C2 ]2.程序源代码:
8 Z" L4 G2 y: S: |& ~( N% ~main( )
4 P% t4 N( J. Z/ \{/ Q* \) l4 {; J( r; `
long ge,shi,qian,wan,x;
5 b8 w3 d" D( Kscanf("%ld",&x);" b* H7 i3 y+ g$ M. V( R R6 o
wan=x/10000;
4 w+ n( h/ @& M2 I, N* B* Fqian=x%10000/1000;
X1 G2 }) o5 K, s0 M# P6 Ashi=x%100/10;; S( j7 I$ [5 X3 S
ge=x%10;0 e* x8 A8 V; r; n1 a' F& X) P
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/4 f6 s/ Z7 ?1 b) j
printf("this number is a huiwen\n");* H* I( X3 y# g _3 V' s4 W
else
5 K& o) y3 e. S6 k printf("this number is not a huiwen\n");0 ?% p# j$ A" {8 X0 r$ }) \
} 【程序31】( n+ J4 a% x K. C7 d8 w
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
, h. a7 x( k6 e( k5 @ o 判断第二个字母。
) r4 \% k' B9 W4 G8 `3 Z1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
+ e# r' `8 ]; e2 M R2.程序源代码:
5 L7 F4 R/ }1 |#include
6 o; S0 c% T) v$ M1 Zvoid main()9 X' X3 O4 j9 \/ p
{& r4 B6 p3 F7 M# ]2 d0 A
char letter;
4 C& \+ ]0 y7 c) Bprintf("please input the first letter of someday\n");" m& l% u' f: x( v9 Q: s
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/) @$ S5 Y: K# p% U" x
{ switch (letter)
) l6 i3 e+ N7 D: h# C; q# U{case 'S':printf("please input second letter\n");8 Y$ z0 c2 @/ Q! R% s' N4 E
if((letter=getch())=='a')
^2 e4 V7 X/ l3 n+ R printf("saturday\n");
9 p9 r% m9 E, P& D else if ((letter=getch())=='u')8 \+ D0 R. M5 l/ ^" t+ `
printf("sunday\n");. e! b0 z2 D/ ` ^
else printf("data error\n");
8 a% \, \0 m2 g; z break;
" |/ q! {0 ]7 h" \7 T, Z1 l8 ^! mcase 'F':printf("friday\n");break;" r: M+ }4 H& b0 a
case 'M':printf("monday\n");break;
8 w$ R: }0 ~% i7 S" I Ecase 'T':printf("please input second letter\n");+ {0 v0 B" L2 x* o9 ~1 G
if((letter=getch())=='u')' T: S' F7 D/ O9 Y
printf("tuesday\n");
& n8 p7 s, G1 m }8 E7 S else if ((letter=getch())=='h')
+ w/ r" P6 \9 J+ G. B; c printf("thursday\n");/ ]% X1 U1 T/ N( J) D. L4 x' P
else printf("data error\n");) r, j3 A* O6 i& z
break;* R) M1 f$ X# Y# T% |0 E' p4 F1 K5 ^
case 'W':printf("wednesday\n");break;+ b: h/ X4 F$ |7 a: T# b; ?
default: printf("data error\n");
, G" `4 }" |7 V7 Z }5 r* w! G( J) q! T% b) x
}' y9 Z& |! a, ^- F+ ~. [6 s3 r- ^
}9 G' |( x% y+ V
==============================================================4 W' x! q$ V# I5 [1 d9 o' ]
【程序32】
" s; }: f0 a% S$ W题目:Press any key to change color, do you want to try it. Please hurry up!( y8 k5 K2 D4 x# p
1.程序分析: 8 h. }3 g2 B; q# `) R/ |+ ]
2.程序源代码:
$ v, r& R: o/ g! z#include
8 q! i$ f2 D2 nvoid main(void)% Z. ?: }4 K* a
{1 o9 i2 C# {$ U( M' I5 B. v1 b/ t
int color;
" Y% B+ W0 [0 X+ E, C) Ifor (color = 0; color < 8; color++)
* K9 a. s& R: _5 E7 x { 5 z7 a: w2 z$ A0 s6 H
textbackground(color);/*设置文本的背景颜色*/" [# @/ h7 A1 _# g! ~
cprintf("This is color %d\r\n", color);
& W- J2 A7 H7 i, R ?: \/ g+ [* |1 P cprintf("Press any key to continue\r\n");! t. b) {0 D' J
getch();/*输入字符看不见*/( R: o$ v+ e+ g" V
}' i, Z! l0 a6 ~4 s8 X( q A: V3 e
}
2 g2 f" R; Q% N9 w' U8 o==============================================================
8 ~8 n; ^1 V: n( E【程序33】6 m7 ^; n6 T% U& L6 B% b
题目:学习gotoxy()与clrscr()函数 5 @6 {3 W9 L3 w; b/ p
1.程序分析:
3 i: e5 _3 A+ r4 r" M2 D; X; ]2.程序源代码: ]6 E, [6 c1 `6 c4 T: ~+ {% {9 b( j
#include
* @2 e; i! ]# }6 b; qvoid main(void)6 [0 h/ S8 R, Q2 @0 b# `- X
{# e* k j; N, f
clrscr();/*清屏函数*// B8 F% j5 G( S; O+ N
textbackground(2);
( J- a- y- `7 Kgotoxy(1, 5);/*定位函数*/
! a/ d# Y$ w% D2 y J, ycprintf("Output at row 5 column 1\n");
/ [3 a6 d _7 c6 S5 ^4 i$ L- ]# Ptextbackground(3);
/ _9 z# W U9 G- hgotoxy(20, 10);8 @* h- b* r' @0 c, O
cprintf("Output at row 10 column 20\n");
7 V, Q2 N% M4 T6 [# v/ V& s}
9 ]$ z. o: ^& Y==============================================================6 K" Q" q: N* q
【程序34】% z P$ S) A. U6 P* ?
题目:练习函数调用: G$ t4 Z& E }4 E
1. 程序分析:
8 [8 ^6 x; u1 Z2.程序源代码:( u e! U" f/ }2 B
#include
0 \$ C( v9 q* Nvoid hello_world(void)1 k# g- c8 W5 x* O) A
{
/ K' [. V* R# ?printf("Hello, world!\n");
- w1 ?$ U2 T- m3 c, Z}! m6 d! p6 N F% z0 [
void three_hellos(void)8 W+ k9 q7 L0 f
{6 ~; D9 w8 Z" p3 {
int counter;
3 I/ O6 d2 f! m6 ]for (counter = 1; counter <= 3; counter++)1 m1 H* A! E, t
hello_world();/*调用此函数*/
0 p; q% U* J0 e9 E}( R6 P1 c1 u# W
void main(void)
2 b7 s. A6 p$ v. N- X# w) s6 J{0 ]8 `/ [) _/ j( r
three_hellos();/*调用此函数*/) k4 z) n5 d9 l3 J2 }# m9 o, q. s
}
( z' ~) k* G* [1 i$ ?==============================================================' |% j+ c4 R" b
【程序35】: }4 y, Z: q% i! k9 ]7 I
题目:文本颜色设置
) l4 {3 V1 F9 i; \& h# z1.程序分析:
0 |8 Y l- N! t2.程序源代码:. o6 C& O# E8 c7 ]2 e
#include
: o7 M+ M D8 Uvoid main(void)9 R6 R N. ~1 z, q/ t
{; y% R: s0 y1 S
int color;6 |# g0 C: ] h1 H
for (color = 1; color < 16; color++)( H" U" C0 J" B$ ~9 g. ?
{' v( |7 Z) e# Q3 @
textcolor(color);/*设置文本颜色*/
7 K, f3 c, R7 a0 _ cprintf("This is color %d\r\n", color);/ \3 H2 t% _" l$ ~ k
}4 H& u7 o3 G; x9 _
textcolor(128 + 15);+ J! i' f: R3 x' L* {) j/ ?/ S
cprintf("This is blinking\r\n");
7 c9 x6 r/ F3 p" `}
6 u/ n& l. c% Q0 P- N w9 h==============================================================
! T& v/ [/ L- h' {& ?) i3 g* Y8 @【程序36】
) {% F0 }# A; Q) ?3 l9 V: e题目:求100之内的素数 ' v' B$ f! k0 }9 q x
1.程序分析:( i. u3 ^$ G$ |* w
2.程序源代码:
! V% { F2 ^8 \ G5 h, Z& `#include 4 a9 _( M% A/ h E/ A
#include "math.h"9 A/ |8 h1 x# @ I& H5 Z* v8 G8 f
#define N 101
: s$ ]7 ]9 C# Rmain()
3 g6 ~# ]: l: T- m* `3 `2 h{
+ E: r- x8 r; w" U1 G% @int i,j,line,a[N];( e9 v" V4 T- ^7 O8 e
for(i=2;ifor(i=2;i for(j=i+1;j {
. w K p! m1 I, \9 e d8 Y7 i4 L if(a!=0&&a[j]!=0)) Y9 _6 z- a, B* }% ]3 C' s
if(a[j]%a==0)- j8 A3 u3 o% s+ N7 k& J
a[j]=0;}0 S. z( i6 f& ^2 E
printf("\n");9 D. {5 p5 s$ J# Q" w1 s1 m+ \
for(i=2,line=0;i{1 C6 R2 H/ N# Y5 ^3 W' G
if(a!=0)" N5 A* v% N- h& z: c: S: U; U
{printf("%5d",a); f' X; O. L; f" }1 d+ c
line++;}
X0 L' S, z' Z# i. ` if(line==10); W( K5 F/ L1 }6 @9 a( ?2 ?
{printf("\n");2 N& ~, @) o3 P" v
line=0;}
9 N+ _8 ~, V: m. m}* [5 ?" I- m6 m9 ?
}
1 [! ?% q& C# z; F2 U3 b: q: W==============================================================
" b: A6 Z2 a" x【程序37】( E3 ?# z# |# I8 w
题目:对10个数进行排序" h! W E( ~; V3 l/ Z% r
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,7 O0 R9 W7 r: k4 K( \8 L
下次类推,即用第二个元素与后8个进行比较,并进行交换。 $ C3 _/ ~2 C% Q' d
2.程序源代码:2 F- b# a* Y. S# m) |, d; a
#define N 10. A, i9 d$ v) ^% p3 ~. n9 A& g) ~
main()
% ?- |- ^5 R5 B, c' N. e+ H/ K{int i,j,min,tem,a[N];
+ L; [" b+ J; ~/*input data*/- r* w8 T6 D, z8 Z) ~
printf("please input ten num:\n");. @% `" d1 w" ~) Z6 w! e; I! X5 U
for(i=0;i{0 M; ?- d" a8 t3 Z
printf("a[%d]=",i);) |# B9 h, x7 z% W$ W
scanf("%d",&a);}2 _6 }8 M# F3 y3 b' p+ T" k
printf("\n");1 K) [2 J5 Z- m0 [( y; V. P
for(i=0;iprintf("%5d",a);
0 M9 }2 P; ]7 [% K+ v+ w, D9 M# p. zprintf("\n");) H# C, j) D: c6 k* n
/*sort ten num*/! E; [$ ]$ f- X0 N
for(i=0;i{min=i;3 n; M3 u0 h+ g$ x3 t( k4 v& Y
for(j=i+1;jif(a[min]>a[j]) min=j;
/ x0 Q( w# l+ b& N4 J, m0 @- B; etem=a;
% O8 A ?/ B: Q+ D+ v4 s5 u# ^' [a=a[min];9 T6 p C0 z0 i" Q" N. ]7 P
a[min]=tem;* U/ A9 U* _4 M7 U) ]- t1 [
}) \8 r% W. E& K4 j8 @/ R1 ]
/*output data*/# w9 E/ B# z, g$ k+ e* l/ \+ M* ^
printf("After sorted \n");2 _# {+ T: y5 F: O( F
for(i=0;iprintf("%5d",a);
% b* ~4 k0 A- a}7 N: g( d7 p4 Q0 y
==============================================================' y6 l0 E. W6 f( }3 y2 L, _$ _
: z! i6 b/ r( [! J6 a/ c7 J" Q
|