機械社區
標題: C語言經典算法27-37 [打印本頁]
作者: tainqing 時間: 2017-10-7 16:23
標題: C語言經典算法27-37
【程序27】 & l$ ?! i/ _ F }& w* i, y
題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
9 Z- F9 k5 c0 Z) v4 Q1.程序分析:
* f& K: {$ B7 r& _8 n2.程序源代碼:9 m6 E" w; g, i' ]$ e9 }
#include "stdio.h" R' F# [% v" H2 H5 S3 v# C. w7 e
main()9 O: k8 o( J5 i
{ I4 {) ?8 i9 m1 y# L( K
int i=5;2 T* N- T' y4 H# \
void palin(int n);
5 q3 u/ |! G7 N( [1 w( o, _printf("\40:");
4 r9 ]# f3 e7 F% R) U7 y/ |9 |palin(i);
2 g A& Y2 J0 R0 n6 Y M" x7 dprintf("\n");
/ u% o5 j t' a. G/ W$ {; H1 T. Z}6 V2 t8 G/ w* v0 O8 G3 K ~9 e
void palin(n)
+ m. @' C/ M* _* R7 D4 lint n;
7 a/ L4 q8 T7 i{1 ~& Z8 z1 I% F
char next;* k: j+ B" h9 M. L7 V
if(n<=1). ^, E/ u' \0 ]5 D- L
{
6 s$ o E/ L- B next=getchar();
/ o; I. ]3 I. b( E5 v0 o( b* i printf("\n\0:");4 W/ l4 k v; \/ r: ?; [; ^% E2 t
putchar(next);+ c4 t5 W- k: I+ [! v; c H% U9 ~
}# F: L2 \) @2 x: N# P0 L+ T( e
else3 x6 c8 a8 W5 V) z- C$ V4 F
{
* U! Q# F6 Q( v; E next=getchar();! l: v' L. ^6 X' j
palin(n-1);
. I% ^9 D: r4 I+ L3 M6 x4 p putchar(next);) u8 e) b/ x# h+ q
}
e2 |" B# |3 S+ u}
0 N$ S" M4 i$ t3 U$ \==============================================================7 r d7 j* O$ R. Z
【程序28】信盈達嵌入式企鵝號要妖氣嗚嗚吧久零就要 ) W: I8 ?0 Y/ s( F$ \5 G/ u0 P
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第5 d( x, Q& h. n( Q( P J
3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后
4 A* B/ h- @1 N' Y/ \4 t 問第一個人,他說是10歲。請問第五個人多大?
# r! B2 Z: ?$ E% G8 i3 c' Z1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道0 S* K4 }+ \" E% |* k( f* r4 I1 k
第四人的歲數,依次類推,推到第一人(10歲),再往回推。 N7 Q0 R! x4 H7 {* s/ e3 x
2.程序源代碼:
; k) v! Z1 Q' y0 n0 R- Uage(n)
( v# H4 g7 Z( r6 e# Q& U2 [1 fint n;- t F/ g) \( S
{" ?# F3 g2 r8 b, ]- [* b0 ]
int c;
% t- j+ c( f% A+ T3 Q4 |9 E5 D& qif(n==1) c=10;: M6 D9 o* f4 R$ @0 K) M
else c=age(n-1)+2;
: F% U4 a' |( V7 M6 j7 z1 a- _! {return(c);, G) }$ e: h9 e6 e$ j% @* ^& T
}4 g- k, ^- ~9 L& s# Y
main()& l! j1 W6 O6 z
{ printf("%d",age(5));
% x& Y; @" I+ n6 z}
1 ^& t6 i+ U2 J, Q$ Q==============================================================1 q4 s( Z+ ^3 U# n' Z9 J5 Y8 x
【程序29】
; x( j8 Y3 H p, ~' e) \2 q# x題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。. U) p* g2 q0 I+ a/ P3 J
1. 程序分析:學會分解出每一位數,如下解釋:(這里是一種簡單的算法,師專數002班趙鑫提供)
7 r6 t0 |8 V) P- I5 b2.程序源代碼:/ Q+ C( y: l4 c3 F; H' w% ^/ e3 Y
main( )
0 c- f0 ]5 x: W! D$ `6 Y/ Y- b0 l{, U& q9 Y2 R5 x. S" j: H2 ], _
long a,b,c,d,e,x;) C d! r# B5 J' t" M
scanf("%ld",&x);
! s$ }/ q. \% E! q! ?+ za=x/10000;/*分解出萬位*/9 ]) ~: Q# q% q
b=x%10000/1000;/*分解出千位*/
, p3 ~; m$ u1 ^9 N, ^c=x%1000/100;/*分解出百位*/% \/ j c# e* y1 C. N5 i
d=x%100/10;/*分解出十位*/& e o: a# }2 q' L
e=x%10;/*分解出個位*/& B K( J; X% l3 t4 K7 l
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);$ O3 N) H) I& e& u l
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);; T- p5 e* K$ n% o" h' ]* \4 p) K( y
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);" u+ Y8 K4 o7 O/ _ \& J" P7 s
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);0 e8 l: Z- e" \2 j5 Z: L2 ^
else if (e!=0) printf(" there are 1,%ld\n",e);
D' g% J+ B) `. s5 n) a0 K$ P}& y5 [8 M2 ~* }! a8 a
==============================================================
+ |8 Q8 I5 H, v【程序30】
3 }; g% ~3 t6 _2 ?題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。 . N; E o9 b9 H" k Q @# P' _
1.程序分析:同29例& `: T5 ?) ?, v8 {7 Z! C2 i) ^
2.程序源代碼:3 S6 r9 U( J" ]$ |# }) T. m
main( )
& G7 B7 _' v& E& Q7 ~; O{) q+ y6 H d; t# P
long ge,shi,qian,wan,x;
% R$ x/ k E+ E9 z( x, ]2 l' Bscanf("%ld",&x);: B- M2 | g: w& K% `& v) E/ p, z
wan=x/10000;: ]4 K* @+ U! Q; S
qian=x%10000/1000;
2 v# {( J( H/ y2 |4 h7 V% eshi=x%100/10;
9 S2 X8 d0 q4 A. j( Uge=x%10;
: h+ L" B3 E. {7 k3 D- f1 Lif (ge==wan&&shi==qian)/*個位等于萬位并且十位等于千位*/5 B: K$ X5 C) B) A- g+ ^" J9 L
printf("this number is a huiwen\n");
, \$ B; v; A* ?7 ?$ u+ ]else& Z7 X* Q: D7 G7 u
printf("this number is not a huiwen\n");5 p9 V- Q7 _0 o3 w( S" |
}
【程序31】
7 Z7 Z8 e `- p, V題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續
7 M ?4 W% w6 E* _3 ~$ S) o 判斷第二個字母。
+ A/ L/ E- C& f+ `1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。* ^: i" _0 i+ B
2.程序源代碼:
3 o" G( _) r! Y! v+ a$ m! t6 H#include ! { V! Z* W' s
void main()! B% A! e9 `# V# H. e' B
{
- z Z r! ^ W' w. S. m& B Ychar letter;
5 _% f9 y+ N! {, J! S* Hprintf("please input the first letter of someday\n");
' e1 A( L" ^: S+ v4 [: ]0 U5 Awhile ((letter=getch())!='Y')/*當所按字母為Y時才結束*/9 d5 z! w ^* ?) A& u
{ switch (letter): b) s5 U4 S, L5 @
{case 'S':printf("please input second letter\n");9 U e% `. ~9 G" T8 Y& K# C
if((letter=getch())=='a')( J8 F% D& g! g% [3 k/ o `
printf("saturday\n");
* g m* L4 v% |) v else if ((letter=getch())=='u')3 I" D3 u9 k6 g- {% n$ V- j
printf("sunday\n");6 |7 u& c8 H1 I0 f' a9 ?( E- ]& w; Y
else printf("data error\n");
# m h. g; _' T; m break;4 T0 c, F$ a& j9 Q1 W2 G
case 'F':printf("friday\n");break;
3 s3 p! b4 N! A1 ?- G) Tcase 'M':printf("monday\n");break;7 [. ~. ?& Y6 e! }; y: K5 c
case 'T':printf("please input second letter\n");! _; _: X8 N9 ?. V
if((letter=getch())=='u')
V( u' |) ]) P: v printf("tuesday\n");4 [6 x' N2 t! B- a3 |, b1 a
else if ((letter=getch())=='h')' @& d* e" [/ ?1 w' O$ N3 ~- @
printf("thursday\n");8 a$ ~: e- Y X
else printf("data error\n");
/ _6 [' v) a' {' m break;) V3 L6 |; a" c. J% `2 H8 T0 C n
case 'W':printf("wednesday\n");break;
" R1 E o& g7 S2 g5 ?4 _default: printf("data error\n");
) p/ U* \( v5 ?5 V }! J5 }. | l1 F$ L$ N2 W
}
9 r7 l- G. b! T ^$ T( Q}( Z- s+ E, H6 X4 \, C+ f
==============================================================% |/ @, k% w4 s2 {7 H
【程序32】8 x; c$ }& P. x
題目:Press any key to change color, do you want to try it. Please hurry up!
" O) Y1 J3 a6 `# D- o5 ]1.程序分析: % q* z! h8 n8 Z; w2 V: t; t8 p
2.程序源代碼:3 ]( E4 b9 s Q' M1 I
#include & c% J0 N' S8 K
void main(void)/ E$ p* }. m* h) A6 v: ]
{; o; Z" q, I. k6 R9 r& A2 q9 }
int color;
1 u0 }% y- T: ?: K3 Y9 P6 Z8 Mfor (color = 0; color < 8; color++)
, Z7 q2 I' u$ ]" i% R5 A { 1 z$ q: o/ l1 [0 q- k
textbackground(color);/*設置文本的背景顏色*/) S( u" ?) s& J
cprintf("This is color %d\r\n", color);* U1 w* Q1 X7 M* H* h$ R! U
cprintf("Press any key to continue\r\n");
$ R6 Q8 M9 d' f getch();/*輸入字符看不見*/) l; C( |+ D. j% D% ? ~& k
}
0 l1 H3 V; ~. i3 d/ Z$ [8 ?}. ~" a; J2 {6 _* ]8 F& Y L8 ?
==============================================================0 Q; F) I- E& O& f; E1 P5 U' y- a; A
【程序33】! e& ?9 ]; K8 K4 B4 w
題目:學習gotoxy()與clrscr()函數 7 T% X& s0 e5 i1 Q* n2 P5 Q W
1.程序分析:" {6 X! u9 y* Q3 w& D' }
2.程序源代碼:
4 Q7 k, D; B) v2 {* t#include
$ {! _5 Z; } C. U( ?3 _void main(void)
/ ~/ f- V9 V( S! C% x{ @# Y, l \6 r8 }! r
clrscr();/*清屏函數*/2 D, q" F8 Q5 \! f- A
textbackground(2);
& q+ C+ l8 }6 ^% Igotoxy(1, 5);/*定位函數*// C5 T( x' q; g: U6 E
cprintf("Output at row 5 column 1\n");, O+ F7 [& l& |- I' m( T
textbackground(3);0 B3 N0 n1 w, W. D* d" o: w
gotoxy(20, 10);) s- R, @, r+ G& Z# |7 Z
cprintf("Output at row 10 column 20\n");. V& G, u, @8 l' P
}
z0 X" Y+ x6 l4 ?. \- W==============================================================7 c. G6 b$ a7 E
【程序34】
@# S, z0 d5 C% m/ g' w5 }題目:練習函數調用
( T" k% G$ t; A1. 程序分析:
7 _3 a/ x* W3 v2 w! Q4 z8 e2.程序源代碼:. {! X; E# d, f4 v
#include
$ c* Z/ H& p) v- Q5 Uvoid hello_world(void)
5 P( l' H! d# r! Q; i{% W2 @* k2 ~' r" B' i
printf("Hello, world!\n");; C6 R( a7 z0 I: J: i
}
7 k- G3 O( |) g. s! {6 Cvoid three_hellos(void)
- e+ L( l, ^ }( n- L# y7 c{( j7 ?3 Y! J1 g, I/ e
int counter;, y! f8 c% w! ?( o
for (counter = 1; counter <= 3; counter++)
" W- k l9 @+ H$ yhello_world();/*調用此函數*/
- d- _% N: s- ?# k}+ `9 n3 h, R2 d7 j+ b& d, m3 T0 o
void main(void)% s2 L7 c7 L' E* A; t5 ]
{/ i: \& z/ e; k8 G0 v- k, M1 a3 |4 _
three_hellos();/*調用此函數*/
& b* i" M% R& U R9 r8 | e5 C}
( U: K4 N6 b4 `: k; i* @==============================================================/ L w+ f# g/ b2 ?9 {7 \: a
【程序35】4 Z, P' N& k1 z) \1 D3 Z3 ]
題目:文本顏色設置2 p5 {! u% m! ]: B; G) @
1.程序分析:6 C4 x% _" G0 V: ^
2.程序源代碼:: d" r# o" r$ o; L9 b
#include
, i) u& I6 p" ~. N& ]4 c* _void main(void)7 e9 `6 x# B8 C ~: ^1 A, }
{( o$ M* v1 Y$ w) s% l; W- r5 o
int color;
! d5 ]0 M; O- Q3 s2 `9 n$ G& o6 cfor (color = 1; color < 16; color++)% ]7 O! c0 }9 o% B& P
{
- Z! Q0 ^9 E; m8 w0 C+ A; P3 x6 D textcolor(color);/*設置文本顏色*/
% v! }, V/ Z& f i j, z4 Q cprintf("This is color %d\r\n", color);
9 ^6 b# F4 m1 t }
+ o: Q. h" p- r7 W% [- ?) t( C& X; ]& b1 Ktextcolor(128 + 15);
8 j; A j; x& D% x/ ^' d. ^" dcprintf("This is blinking\r\n");5 d- t+ G7 H" _- y3 f, l
}1 y2 L) E9 Z5 V& N
==============================================================
+ M. R6 D+ j5 m, W, P8 R3 W【程序36】$ Y( s' F- d8 C- C8 d. C8 P
題目:求100之內的素數 W+ p8 [1 p" s2 l9 P5 ~
1.程序分析:: b1 u* O4 d1 D4 ^0 H3 ?7 K
2.程序源代碼:8 w! B8 X" ^! i: x
#include
% f- `2 D$ T" v* K: P' ^3 Y#include "math.h"* E, _$ ]. R4 h6 b% G [
#define N 101
# v2 ~: k* Y, U' j3 P1 y* umain()
0 k4 N* W7 L6 J7 X5 ]{, L+ U) A" T3 n- k) c
int i,j,line,a[N];
, k. ?6 a2 J2 Zfor(i=2;ifor(i=2;i for(j=i+1;j {) j1 c) m! H- s3 V
if(a!=0&&a[j]!=0)
5 n7 {" a' J2 B4 ~6 z if(a[j]%a==0)
: e1 i/ F( V+ x9 Q. z/ ] a[j]=0;}
1 a7 E' u" K; N+ D3 Hprintf("\n");, ]- P2 f. M0 U
for(i=2,line=0;i{
5 H+ v! ]' S h6 p if(a!=0)7 k% _% A. d6 j6 {
{printf("%5d",a);7 f5 w# w* W( S0 s5 _- o5 T
line++;}+ X) Q( g6 h1 ~2 F7 [6 D
if(line==10)& q5 u. |( T2 U0 w7 w
{printf("\n");
" n) s: b0 P* Y0 X1 m- P' nline=0;}' T8 e2 Z) @$ \/ h' d) n$ n
}
2 I" z/ V! @/ j' b3 _' @}8 ?: k6 \3 w, d% ]& A6 x( U" ]3 M
==============================================================
, U. Y' T" I( i/ g【程序37】2 @7 e+ N- X- j$ p, a
題目:對10個數進行排序
; ~' \6 ?% c0 \ i! Z* [1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,, X. t+ P0 K# t1 `& V& C
下次類推,即用第二個元素與后8個進行比較,并進行交換。 * B" X V Y: d# d) s5 E4 Y
2.程序源代碼:# p; j j) F3 N8 C% U
#define N 10: k8 o2 ~. B+ L2 N
main()% e! j/ e" e3 ^
{int i,j,min,tem,a[N];
) [ n, e# g) i/*input data*/7 G7 c. a% W/ I# v
printf("please input ten num:\n");0 W! q8 N- t6 l, ~- P
for(i=0;i{
: |4 u P7 f4 d- b4 Tprintf("a[%d]=",i);8 c* ~6 Y; E- n, H
scanf("%d",&a);}
1 E6 l# B: R& E3 A: g) Vprintf("\n");
+ P; C0 a; `3 Y% a' vfor(i=0;iprintf("%5d",a);1 R/ U- X: K2 j" C
printf("\n");7 ^# d0 }" F4 H1 P3 M, t% ^
/*sort ten num*/, u ?# z+ [# h5 Y! K
for(i=0;i{min=i;4 A2 ]+ k4 e) E& G q
for(j=i+1;jif(a[min]>a[j]) min=j;
, c3 m% `1 e1 H; \! T2 Etem=a;
4 M" R3 J, Z6 X7 D/ ya=a[min];
+ o* x, l' z; ^& m" [a[min]=tem;
' w1 `/ t& X! ?8 [4 ^}
9 T; M% Z5 i7 I/*output data*/
% ]5 G' v% _8 O5 Z7 u. \printf("After sorted \n");
0 l: M8 C3 Z6 ?: [. A `for(i=0;iprintf("%5d",a);5 e- b$ |( V+ s9 g5 h4 j6 Y3 h
}
# I* a/ ]; i: M3 j4 K. }9 I==============================================================
1 t! U" |, {4 l, j) G) T3 _2 \
) R6 A9 ?* N: O0 _
作者: xinmai123 時間: 2017-10-7 16:29
十五字十五字十五字十五字十五字
作者: qq642446015 時間: 2017-10-8 11:09
C==
歡迎光臨 機械社區 (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |