機械社區(qū)

標(biāo)題: C語言經(jīng)典算法27-37 [打印本頁]

作者: tainqing    時間: 2017-10-7 16:23
標(biāo)題: C語言經(jīng)典算法27-37
【程序27$ D% U' L" c# H5 I) \$ F: _
題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序打印出來。
9 L& P1 g% a) ?% d3 E1.程序分析:
3 m7 r- M' Z* m2.程序源代碼:
. g& a# t' b6 p#include "stdio.h"4 b$ B, N( Z, O% t0 V
main()$ i0 k2 q" _5 b# c
{. x1 C# C2 @( y7 Y. @0 ]8 E
int i=5;
% p+ l) X+ }- lvoid palin(int n);: i* @. _" q0 t$ R
printf("\40:");. R$ w' ^8 Z# d* a3 a+ [
palin(i);
- Y- w( N  S7 [0 qprintf("\n");! U0 ~% w  x! u" ?7 ?2 Q
}0 `# H3 k6 g: J) J
void palin(n)
. {8 R5 F9 r4 U+ L! K+ w0 Fint n;( S* o; m; a' p4 O! N6 I. e
{. H7 D: L2 p0 c9 b" I
char next;
6 R% ~; h! `; Jif(n<=1)% [4 c) r* R4 U" {
 {
4 ~/ H4 c  y4 Z& F! q& D next=getchar();, {4 b( |/ J2 Z7 V& u; m* \$ b' F
 printf("\n\0:");7 t; W: |: p; P+ H4 A1 Z
 putchar(next);- s3 T3 g: f" S9 D7 u
 }
% M# y  b3 L7 o/ t1 y- selse
1 O5 }0 Q3 _: \( u" w. ] {/ O5 D* c, V$ o7 l
 next=getchar();" E$ C  Y4 ^- M7 @2 A% l
 palin(n-1);2 r1 d7 q7 t+ C! B+ F! ~. j0 ^
 putchar(next);& s" J8 F9 U# `+ q, R2 f9 |! P+ b
 }
. a4 o+ p; @0 F2 ]( s- R3 r0 U}5 o- L( F& ]2 p. d
==============================================================
9 k& N& q0 P- b$ P【程序28信盈達嵌入式企鵝號要妖氣嗚嗚吧久零就要
2 y6 h0 g' c2 T% n& ^- |題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數(shù),他說比第
' x1 n( P& z' P! X2 p% L4 K$ e3 [   3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后 & L0 F0 ?8 Z& n
   問第一個人,他說是10歲。請問第五個人多大?7 A6 _) G% t# U% n: {3 K
1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數(shù),需知道
8 [0 q2 g2 \! O. M) F7 o) O      第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。/ f" m" p% @) |/ m
2.程序源代碼:
; P; h9 ?+ j; b, y5 Q+ Xage(n)( M/ L, {: f% T$ \# `8 n, O
int n;
1 d" N/ ^0 J- ?+ J{+ @; \  W+ Q8 X1 i* w
int c;5 M1 L& |* i5 C* H1 k4 M6 ]" q
if(n==1) c=10;# F- |6 S: P+ P
else c=age(n-1)+2;
4 O& ?6 I/ o; k* {% ?return(c);
4 l5 e: i: {% ^6 p; Y* j/ a. x/ _}/ p! Z) r2 w' n
main()
, d5 w+ Q. j  D: E; Q{ printf("%d",age(5));
7 S0 Q; W  n* ]! d2 E}0 A: `+ C3 K# Z
==============================================================
2 @3 c5 Z1 J* ~/ {& L【程序29
- p# R6 y4 S7 W1 S: l題目:給一個不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。3 _3 @5 m4 }. W( z3 {/ \
1. 程序分析:學(xué)會分解出每一位數(shù),如下解釋:(這里是一種簡單的算法,師專數(shù)002班趙鑫提供)
& `# U$ X2 h# H. P9 t2.程序源代碼:7 I1 W% A" B. N) K$ G) Y; c% B
main( )
; k% L# D% T% @3 f0 E{
. Y3 ]# v4 @3 a# H3 |: jlong a,b,c,d,e,x;8 H2 H6 W+ k" e& G& m4 T9 g2 O, w
scanf("%ld",&x);  ^4 e: V3 a! w: ?3 ?+ h2 k* H
a=x/10000;/*分解出萬位*/8 s* h& H5 F# K' `! T4 Y+ [) t. A9 v6 ]
b=x%10000/1000;/*分解出千位*/% `7 C$ R: I5 u/ h: X" C2 c
c=x%1000/100;/*分解出百位*/
4 s( {4 C" T$ n3 Jd=x%100/10;/*分解出十位*/
& x6 w. E! Z! S! z2 Be=x%10;/*分解出個位*/2 Q7 x, z: x) j- K0 k- E3 T
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
! _9 q3 E8 M) G7 c. E4 Celse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);% g: m6 u6 x7 H, @+ r- n8 b
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);1 F1 T! Y* E$ j3 O3 [9 z! e) S
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
. `# u) X4 F; |/ Z9 F0 s      else if (e!=0) printf(" there are 1,%ld\n",e);
, G* h, w& t# s. v$ d* j( W}7 O1 o9 h: a& Y8 O4 W% F% X* x2 h
==============================================================' g7 y! b! Z+ i4 T
【程序30
- @8 r- Z6 m7 j& }# C題目:一個5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個位與萬位相同,十位與千位相同!  
' ?8 E# |* M1 x+ t0 k6 e( k1.程序分析:同298 |' Z, R( h$ y0 A2 i, ^
2.程序源代碼:; |) e- r; y, D" F7 S# s4 ?
main( )
" p7 }; ]' A9 B5 O3 y+ h: m$ v{6 S, a/ D9 y' Q+ ?# m
long ge,shi,qian,wan,x;
0 b2 V9 n3 {! f2 W4 ?scanf("%ld",&x);
: g1 e- u3 O; r: K$ bwan=x/10000;; ^& H5 f6 A! B, a9 J( O
qian=x%10000/1000;
/ n' }# ^6 `: ^shi=x%100/10;/ S) ^; Z. M1 A! q0 H5 B' @5 s6 P
ge=x%10;/ i8 y. H7 M6 U2 \% q4 y
if (ge==wan&&shi==qian)/*個位等于萬位并且十位等于千位*/
3 q# y3 F6 W# ~) ]9 c+ b printf("this number is a huiwen\n");
' e# N: i  M7 X# L4 w% ?else
1 g7 E% n  X0 B2 G( {9 @- Z, ]' ~; {/ ^ printf("this number is not a huiwen\n");; @0 L6 a3 w, n3 y" E, U
}
【程序31
( @+ v# a- Q8 k- u3 m/ A) }0 O題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù), W4 ~, R! D6 L1 @4 i6 q
   判斷第二個字母。  Y" Z* n: k+ }$ U" n1 g2 H
1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。9 U6 M2 v5 ?9 P" v
2.程序源代碼:
& V) Y6 e0 z$ K+ _/ @" A7 L#include ( w4 z* T- o0 R, l) t" P
void main()3 C, t2 V* g8 x& }
{
' [+ {) ~6 s6 G) kchar letter;0 I  K2 w5 b* r0 ^* s6 V
printf("please input the first letter of someday\n");
7 O6 d+ u9 {) e$ M; b+ xwhile ((letter=getch())!='Y')/*當(dāng)所按字母為Y時才結(jié)束*/  I* _1 @$ P+ ^0 A& q, L  ~9 i& I. ?
{ switch (letter)
* ^: m' I' H( L5 B6 V{case 'S':printf("please input second letter\n");
7 w* J# c2 q3 E% ]     if((letter=getch())=='a'): Y3 H; m5 _! O% \9 s
      printf("saturday\n");
) W& A& Q- b3 ]     else if ((letter=getch())=='u'), X  i% l0 h7 n, i# E& b
         printf("sunday\n");
7 i1 h1 f! E: y* i4 T       else printf("data error\n");
6 a+ Y' r7 p' l/ s- i( t/ U( d     break;& K$ V) y+ k7 i8 _8 V: y; o
case 'F':printf("friday\n");break;3 F, ?! a( d/ N9 Y% ^7 J
case 'M':printf("monday\n");break;
! c5 X) m. W% A% ?case 'T':printf("please input second letter\n");3 k# }( Z$ G  G5 l! v4 e  |. [  h' U
     if((letter=getch())=='u')
+ ^/ R4 e& A, @- |9 H" I9 B      printf("tuesday\n");6 a$ J- D" h$ Q* r. }1 H
     else if ((letter=getch())=='h'). j( i4 _: B" u
         printf("thursday\n");
- D) V. p7 [% l* \, L       else printf("data error\n");
" ?! d: X! r2 l! y  G* F# J6 w     break;
( t9 V. ?" s8 y- hcase 'W':printf("wednesday\n");break;8 a! s1 g+ \* h# ^
default: printf("data error\n");8 F, Y1 T/ D# P7 d+ x
  }0 h/ h# i5 R% S) w6 R; s2 N
 }
$ Z2 i# n) ]0 n/ O, U! h- T}
) ~3 D2 l1 F: M==============================================================
3 L( s/ s9 |& F9 w6 }9 E/ _【程序32
# _) ^: F; ?0 m題目:Press any key to change color, do you want to try it. Please hurry up!( \9 D& x* V' X, [3 _
1.程序分析:            
3 Q4 p2 v3 @/ A! U, ^; t2.程序源代碼:9 W0 |% A# f0 K% U
#include / j; ^. @( G6 \4 n% i# s: i
void main(void)
- R  s2 S  m9 }& T2 D1 J7 z{
+ m6 Y. I$ o/ m$ `3 I. g5 `  a2 C  Wint color;
$ z+ o" _  e# _! J. t$ lfor (color = 0; color < 8; color++); g6 t* g; E  n, E0 ]  _2 _
 {
$ I9 Z- R0 v/ ]6 d# Y6 I4 F textbackground(color);/*設(shè)置文本的背景顏色*/
$ ~6 d8 N; U( q$ K cprintf("This is color %d\r\n", color);# U) H1 q" o0 N; z! v
 cprintf("Press any key to continue\r\n");9 x. ~" H8 `7 }9 m5 \" i
 getch();/*輸入字符看不見*/
- v' P+ q4 p+ b' B( T; k! N }
4 a0 ?: |5 m) i5 T$ f, N}) I8 k2 C, O! j$ F; r8 C; j
==============================================================
4 U' Y' Y5 i0 B& z6 J. S) \0 M【程序33
- a, Z& w* q( J9 |) c題目:學(xué)習(xí)gotoxy()clrscr()函數(shù)   " v' H1 M* u3 p; {
1.程序分析:
$ |  d# v- z4 m: T! v# L5 o2.程序源代碼:
' U; f  U9 f; j7 e  t#include
$ \/ r1 i* R4 d& C4 d. y1 _. b+ Avoid main(void)
' N8 `" B, a1 W8 n' E4 z{" S& R8 M* L  z; Z5 c
clrscr();/*清屏函數(shù)*/1 H2 ^: e" X* C3 S( @0 e! [
textbackground(2);( V7 U& Z6 _/ w9 s
gotoxy(1, 5);/*定位函數(shù)*/3 }0 ]. J" n1 X9 z0 S
cprintf("Output at row 5 column 1\n");* H( V1 q( W: ^* _& R$ a( p* ^3 n
textbackground(3);6 {7 k8 g/ j" J
gotoxy(20, 10);) x$ f* y  r/ y% U! A. T* W
cprintf("Output at row 10 column 20\n");
0 q" _- p$ \% [3 P: r' u( i* k}
2 e7 w. Y4 l1 J* J. ~% W* I! i, J==============================================================: Q. s9 \+ a8 z- A: Y1 z
【程序34
! o- \  m, k5 e& ]' e8 }  u題目:練習(xí)函數(shù)調(diào)用7 \  \( @7 }0 ]- l* _
1. 程序分析:
& o$ z' S3 k) N+ {* K) F2.程序源代碼:
0 }6 c0 l6 d1 q4 ^#include ) L9 o7 E' N+ ]1 o9 q
void hello_world(void)! U4 u. E: A/ A& K( G
{
6 {# t( p; |! B& s. }. @, \printf("Hello, world!\n");
% F; P  G( s8 e  V( H}
( Z/ w2 T$ X7 s5 Y9 K  ~& Vvoid three_hellos(void)
1 t% a6 |% d, s. q. m{9 P8 O# L  c' o* L! k6 s( R6 \: Z
int counter;4 A8 l/ i, g! X  n+ i4 a' L
for (counter = 1; counter <= 3; counter++)% M) F: o1 F9 T
hello_world();/*調(diào)用此函數(shù)*/
- w$ b; W# ~& S5 U" |}# ~- }( L, s; F9 V# V% A! p
void main(void)
9 z* _  h8 k3 p+ x+ \  J- J{; y5 Z& Z5 ?6 m3 n  h
three_hellos();/*調(diào)用此函數(shù)*/
/ f9 i: G: h8 B" q- n% \( J# {& U}
( ^0 ]3 t2 W$ }& ^6 B==============================================================& H' Z, r4 Y3 J
【程序35
, P  b, d& s# [題目:文本顏色設(shè)置
* S8 Y+ S8 H  q- Y# f4 ^# \1.程序分析:
& x+ s% q6 o# u, y5 v2.程序源代碼:" Y& A% E4 J. k- s
#include ! O9 r, q4 ~4 T9 R- Z3 f: t& E
void main(void)7 M4 g% _: G: ]  ~8 W$ u0 T8 n" E
{
! b6 u1 U4 q1 z$ Q6 sint color;
6 Y. o1 n+ k. [  b/ j( {8 q: ?for (color = 1; color < 16; color++)" }! }0 s# p1 C: C, E  u
 {: G1 A) S5 V3 p& p5 @% H; Q/ r
 textcolor(color);/*設(shè)置文本顏色*/
, A3 c- t# X" I, A- ? cprintf("This is color %d\r\n", color);
* d7 J" [# K- ^% T }1 t( h/ F5 }; `; X4 N' z* Q
textcolor(128 + 15);! R; c3 o5 H! y0 k2 O8 {
cprintf("This is blinking\r\n");, l/ D; ~/ G7 ^4 |
}- }. U- Y8 k7 U, b& S3 T
==============================================================3 a* Z/ z. D. }  `
【程序36
! R( V7 S1 D5 ~" p題目:求100之內(nèi)的素數(shù)   5 }2 N9 s0 s9 ?/ c& {1 i' z7 L
1.程序分析:
, l5 _" s8 ~) m0 F  D9 I2.程序源代碼:
8 s/ z$ g  s( @% n#include   r% F) Z1 K5 k8 s5 L3 M
#include "math.h"
. J4 }" Y5 x; }! `#define N 101
( {& J7 P3 F) R# Y) c4 I# qmain()
" B3 |1 n+ {( f2 x9 z- J7 u" p" s3 U) y{
5 v' f  j" A/ pint i,j,line,a[N];
$ Y& h, e0 C) r  u. B& v5 Lfor(i=2;ifor(i=2;i for(j=i+1;j {
3 N, I) x$ n. F, w6 N7 m2 x- k  if(a!=0&&a[j]!=0)$ m. I6 U& b! l
  if(a[j]%a==0)0 m! S" w5 [9 Y& z4 Y4 i: s) {: C# H# I
  a[j]=0;}
% C0 m5 b: R! o& ^6 Z5 cprintf("\n");
0 w- }$ Q0 c' pfor(i=2,line=0;i{+ n1 L  W8 y  S
 if(a!=0)
: F7 ]4 u6 f/ q/ o: K {printf("%5d",a);
( C( u8 ?( x$ Q8 y line++;}
' y, p: |7 ^; j, s& X if(line==10)
2 S8 j1 J  _* `1 `2 U {printf("\n");, L" J, |$ X' t' |- c. G: l
line=0;}
' G) H& l7 {# a}2 V+ ~9 l0 T; O2 M4 t
}
* I2 J6 f7 O% ^2 l8 H==============================================================
- l; ]$ e! Z& d【程序37
" R, z8 N( @' C8 b題目:對10個數(shù)進行排序8 g6 A" G, b  k7 M9 a
1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,
8 M% f' ~" y2 C      下次類推,即用第二個元素與后8個進行比較,并進行交換。        ! Y3 k  G. C0 ?2 E6 B
2.程序源代碼:$ y. S( C) p. F: Q8 e2 n& f8 N
#define N 10
, f! w/ C, k/ \) {7 d' H5 K; x- qmain()- {0 a6 B% R. Z9 U0 Z
{int i,j,min,tem,a[N];
1 C) [' y& u- }7 v/ n% l1 H! V* x8 {- c/*input data*/% F: W/ R: w1 M0 J& q& l
printf("please input ten num:\n");
: a  w+ u" S, P! `$ c) nfor(i=0;i{
) w# \7 d+ Y$ ]# h1 i( f7 j  Yprintf("a[%d]=",i);
- ]# l+ Z; Y$ r0 P/ D0 N$ Kscanf("%d",&a);}: k- d- o  b; v& w
printf("\n");- v8 }" ~! u1 F* L6 Y
for(i=0;iprintf("%5d",a);3 Z, }+ c. l7 H- M1 o" R
printf("\n");% e6 w9 u! U% ^: Z$ Y! p+ }0 y( E
/*sort ten num*/; H: T5 q9 a1 Q( |1 [: g6 L
for(i=0;i{min=i;, p! V( e0 A! b' X7 C. m8 C  U
for(j=i+1;jif(a[min]>a[j]) min=j;
+ s4 }' y& I$ q, i+ Ztem=a;! W9 q0 x/ v; S* V5 p
a=a[min];
( ^! F9 @6 R9 U) s: Ia[min]=tem;5 P0 C5 `3 q6 r. O5 i, }+ M! l6 _
}
/ C: i/ T1 N! j" F* G/*output data*/
6 I$ N, ?* ]$ w8 A8 Tprintf("After sorted \n");0 E7 [: R1 E- A1 M. Q/ T
for(i=0;iprintf("%5d",a);" X) P+ ^/ P& J! M& b$ W
}
9 R: i2 `9 L# H' c==============================================================0 X5 T* M. A8 y- N6 m8 U

3 E8 {( x1 {( s: s" r0 \/ j! R, Q
作者: xinmai123    時間: 2017-10-7 16:29
十五字十五字十五字十五字十五字
作者: qq642446015    時間: 2017-10-8 11:09
C==




歡迎光臨 機械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4