機械社區
標題: C語言經典算法27-37 [打印本頁]
作者: tainqing 時間: 2017-10-7 16:23
標題: C語言經典算法27-37
【程序27】 2 n+ U. k) `! P! y3 v
題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
@, F5 L3 H. @0 W4 ^) U1.程序分析:4 _8 }" ?' Q0 ^4 o
2.程序源代碼:
% S9 E8 _+ u- |6 }( L#include "stdio.h"
$ R" |2 M% B' v% j2 Emain()
# [7 W+ I7 C0 \8 k; f3 W o{# m$ E+ M! ^9 }5 R) _; _' G
int i=5;* W8 ]) S n3 B- l
void palin(int n);2 F! l p8 F# W2 v; d- M
printf("\40:");; @$ Z& @, C3 F. S! ^ H$ x3 S
palin(i);
+ D4 ?& c8 ]! q/ N9 Kprintf("\n");
1 S' {+ g; H" K}
1 d8 y8 @ P3 w% t5 r3 L. E- a; k6 Hvoid palin(n)
& O1 X" O1 G" A) Pint n;
; Y# G9 k% t9 N% J; ]% d{
: ~ r ] I1 l# b) u. c0 ]char next;. }' b! h/ g) q! Z9 k$ l+ |; D, o
if(n<=1)
1 L) e: X d/ E3 h- `; |7 A {! J7 {; [, J* }* I2 c% s( L
next=getchar();
9 { L! D( c2 t4 R; j9 W) V printf("\n\0:");, k; q# t, G! `8 u% l: a
putchar(next);
! s: v. h' L, g- F. }- b }
1 H% l4 P0 ?+ n, K' Helse
# ^8 c) d+ i) h# N {
6 A% l& C. ]! Q next=getchar();
7 p3 Q4 O |0 C' ~& p" H palin(n-1);% m' j: v8 t& G8 D2 E
putchar(next);
9 E( L+ I5 y+ m }
. S2 [0 u2 S: u& J0 E3 B}
$ l; N+ `9 Z" ^' d+ H. d==============================================================+ R4 F; q1 R' A$ ]
【程序28】信盈達嵌入式企鵝號要妖氣嗚嗚吧久零就要
! b7 M2 V* B0 p( c) ~$ l. K k) ]題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第* E3 Y) G1 V- r4 Z9 U
3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后
! C+ w/ x/ u! q) N( [8 G 問第一個人,他說是10歲。請問第五個人多大?
2 X6 w* W/ A+ j2 A1.程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道
( P* \2 o( b) @$ N+ }0 I% g 第四人的歲數,依次類推,推到第一人(10歲),再往回推。
0 J* f& x* K- J3 Q: p# ?2.程序源代碼:, M1 N! F. g9 [. f+ |( a7 {: [
age(n)
7 ^* z& H7 a& ]; tint n;
: I1 l6 W( `( n$ F3 M9 U8 V1 g{
" \9 d p; c# \# p0 V7 `int c;
+ H9 B5 Z2 c1 D! T D# g) Wif(n==1) c=10;8 |0 ~( }* D7 s3 |0 v
else c=age(n-1)+2;% i" m. `) t- e" e; c6 [
return(c);
+ b, y3 B3 P9 d' L4 Q+ O$ n7 b} A* e. H8 R7 c3 z
main()* m/ Y5 i( _( K k
{ printf("%d",age(5));; i" M' r- V$ ~, o
}' F5 T/ s9 U6 p. X
==============================================================
) L: o* Q) W" U4 Y9 u. E【程序29】 0 Y* U+ B9 m9 b% Y4 {0 g
題目:給一個不多于5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。/ [7 R2 n$ V. f: ^
1. 程序分析:學會分解出每一位數,如下解釋:(這里是一種簡單的算法,師專數002班趙鑫提供) / A+ R$ _# d; `% {5 K
2.程序源代碼:
, l8 |- o# g8 t# p4 i+ a7 ?main( )) M" p% j, S! T0 q1 x
{
6 A9 [1 C# _% K8 Z; X- [long a,b,c,d,e,x;
v7 b9 L: y, Rscanf("%ld",&x);
8 t7 U) E' h. z+ ka=x/10000;/*分解出萬位*/
9 o4 u! J/ V& M0 P2 D- hb=x%10000/1000;/*分解出千位*/2 i( R+ x8 x# R0 P! W, y+ K
c=x%1000/100;/*分解出百位*/
( w1 W/ e6 Y. Y. y& Md=x%100/10;/*分解出十位*/
2 X# \3 W8 p0 b* M* z, f Te=x%10;/*分解出個位*/8 Z: V: @+ a! g, L/ M" Q! q8 x" ~% M& `
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
% b- D9 W5 k2 i7 F) q2 _6 `else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
: p' S; ]! T5 S& Q `& b else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);5 e0 m5 c; q! L" u2 `
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);. _: k' x7 W7 o2 L7 @6 [* z
else if (e!=0) printf(" there are 1,%ld\n",e); M4 |! u5 t) ~ C% I
}( K" s0 {# p/ q5 f# I. y" z
==============================================================' p o4 U4 V' E9 H( p' }
【程序30】
' J) k1 X1 {5 R- b題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
: k, q# T" F5 i+ B ^1.程序分析:同29例
) T4 a7 s9 d, F! [6 \. y8 g- l2.程序源代碼:* j' h/ V0 K$ K( z* X
main( )8 B0 B- m" ~- {7 K
{) l/ @* q: o6 X; `; M p4 }
long ge,shi,qian,wan,x;
# s9 F. f8 Y8 |4 z. gscanf("%ld",&x);# Y/ d% e. D. ~* D% \; W9 {
wan=x/10000;
/ K. x) w) U* k8 Zqian=x%10000/1000;
/ t( T" i( b! ?* S: O! j/ y) Mshi=x%100/10;
( ^" M' r: `* U3 A! i8 Qge=x%10;/ d& \! }0 A7 V# F! N
if (ge==wan&&shi==qian)/*個位等于萬位并且十位等于千位*/
* `0 J+ Q8 b9 | printf("this number is a huiwen\n");
9 W5 S4 x- d5 K" t$ welse
|, L1 Z8 R1 e7 H9 W9 \ [% }- j printf("this number is not a huiwen\n");
. {: u: o7 Z. h. a& D8 M4 ^* A}
【程序31】
% D$ I* c: c" n* W; g0 o; ]題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續9 {' \- X @; W; j/ h! ]& Q
判斷第二個字母。- O0 |( [2 q* s, T5 u- D# Z& v
1.程序分析:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。% Q; q" S: ]$ a7 s+ M' s
2.程序源代碼:! w; s/ v3 U' k: \* N. N% a7 X
#include 6 n+ ? k, S; Q3 X
void main()
$ H2 f# Z( j6 j- m{
# J1 i9 F# l; ?) M8 T: vchar letter;
, ~: }. Y* z% X7 u# ?0 iprintf("please input the first letter of someday\n");# ~! F) d: Z# K; N
while ((letter=getch())!='Y')/*當所按字母為Y時才結束*/" r- W( d0 V: `9 h, m( a
{ switch (letter): `8 P0 @$ ^0 E- m
{case 'S':printf("please input second letter\n");
- |9 ~: Y! V* L if((letter=getch())=='a')
& B2 Q, m' v( F% u5 O printf("saturday\n");9 Z/ E/ H4 A# |% y
else if ((letter=getch())=='u')% U- Y$ l& J$ A' q
printf("sunday\n");
3 Q7 ^$ G* o2 P$ H6 R' C* t else printf("data error\n");. n$ h* k) A; s. u6 }# t
break;' E2 C: v4 y7 T* i
case 'F':printf("friday\n");break;! D5 q' ^6 ?1 p5 P
case 'M':printf("monday\n");break;
5 d( J: `" n: A K. Pcase 'T':printf("please input second letter\n");
/ g/ ^6 \5 L$ o/ S if((letter=getch())=='u')3 F/ p+ y$ K' x
printf("tuesday\n");: c3 G5 x5 D G9 W
else if ((letter=getch())=='h')
6 M) }- g6 W' u- ]3 ^! {* h printf("thursday\n");
) V1 q: y6 M& f+ `+ v& i else printf("data error\n");
3 y6 j. ?, `" Q8 ?- M2 S! ~ break;
0 U" i" Q7 X# |case 'W':printf("wednesday\n");break;1 {- t1 A1 \: j5 R" y6 k7 Z8 d7 B
default: printf("data error\n");
- l2 h0 O: w* o+ ~9 j }' W* C- L9 b; g, F
}
- d, e/ L0 F6 ]& m' _& w}' h( @6 J4 q! F# w7 f- S* H5 z
==============================================================
! Q$ Z. }# Z9 u3 F3 _% g【程序32】- ~& E! n' I3 n. r$ r* E
題目:Press any key to change color, do you want to try it. Please hurry up!
5 `) Q2 ^3 t1 b8 W+ Z0 p! O: h1.程序分析: * W, Y4 S" [. @' X: X3 s0 {
2.程序源代碼:2 F0 H. Y+ n9 h- u! K- @6 `3 h0 ^. w
#include
4 y. r& E. k3 R6 W+ Q: q3 V/ Rvoid main(void)
( R% k9 }! d/ h( s5 d& m{6 R/ [$ ~; ]- u0 }2 b2 k
int color;
8 F+ B8 f7 s+ T, Sfor (color = 0; color < 8; color++)# {4 N; Z" N' U4 q/ F
{ 4 L5 a. w& `3 o0 Q. m. X6 T
textbackground(color);/*設置文本的背景顏色*/
+ J+ O4 f+ W/ Y0 Z! v cprintf("This is color %d\r\n", color);
$ r0 R U m3 R7 ]" |( D2 p cprintf("Press any key to continue\r\n");" Z/ w7 E U8 y1 q" h5 R7 [) a
getch();/*輸入字符看不見*/
; {: ?2 ?. t9 c: G2 L* R% ^; V9 ] }
" g: |* D! v) O) d, |8 E0 h1 Z% Q}. Q# r$ ~- M2 ]2 A. j! i
==============================================================7 S( ~' D" f% X5 k9 `
【程序33】
8 t4 A7 r" w8 M- R' W9 a; g% B# J題目:學習gotoxy()與clrscr()函數
/ z- _! _4 N! p5 }' t1.程序分析:" S+ P4 i/ T" g" E0 S
2.程序源代碼:9 K' s" x1 N# z7 O2 i* \
#include 6 m: Q3 G. B3 O2 R7 }: g$ J
void main(void)
' {9 y( d' l% Z& ^- q2 I- q- A{
( a8 }4 o) W9 i0 V3 p+ y0 f2 ~clrscr();/*清屏函數*/2 v7 k/ b2 v: H& s" J7 y
textbackground(2); m- F8 b6 n: F7 g9 i
gotoxy(1, 5);/*定位函數*/+ z) [4 m, Z, [7 i5 ~& ~
cprintf("Output at row 5 column 1\n"); m) \( l- F. u$ \1 F
textbackground(3);% F' M/ z4 n! L, i2 G. a
gotoxy(20, 10);
0 i+ m6 B3 n" g* k0 {cprintf("Output at row 10 column 20\n");
3 I/ R. `) T! ?$ }, \0 N8 @+ H}, ?+ ~8 t" ?* Z9 _/ `! D1 L0 G! m
==============================================================" }, A' f/ q- `' c Z
【程序34】
; E/ j' U1 z7 D3 W. @3 ?5 G題目:練習函數調用
( S/ E( L. w0 S) k0 c1. 程序分析:
- {; {: H+ u# q4 o }2.程序源代碼:; ^3 U. L3 A2 i# b+ h/ y& C
#include
g' C5 r+ T( r3 |! q+ kvoid hello_world(void)
9 \' l Y2 i- }" }; l{) n% S- d% D% G, N9 y$ ]
printf("Hello, world!\n");% a7 L* \ x( N- A2 e
}
. F% W; d- C( j3 }. Rvoid three_hellos(void): c2 Y% ^# a- e1 ] r! m
{. J: Z# n, }* m4 D$ k
int counter;
+ d5 W1 N( h5 ~" a7 u; x0 efor (counter = 1; counter <= 3; counter++)
- q7 Y# G8 w2 ?' ?3 h" S9 N- @hello_world();/*調用此函數*/
0 B# V. r' O. Y( B6 l5 ]1 K}& G) J3 o# [, b" d; t
void main(void)+ ~: {3 N) ]2 B( p) h8 w
{- T0 j& a3 M% U) F Z- ]; U
three_hellos();/*調用此函數*/
& |2 Z2 t+ ?0 o; l& Q# _}
O. ^+ A; ^5 f! Y% P==============================================================
5 i0 I0 p: r! I" W( j, `7 s【程序35】
: @5 _; ]% J3 ]" x- X8 r題目:文本顏色設置( h8 R8 b2 T9 W5 {, p4 [
1.程序分析:
& T6 `0 E7 e8 y6 i4 [0 X2.程序源代碼:( }. \. K6 V; ~
#include 5 U9 q {7 o! a) r$ h, I9 |) ?+ ~
void main(void)
4 d9 O4 T. O4 t* F6 ]# D{
" q8 T2 N1 i/ r' ?int color;
- Y8 l5 {7 ?) q# V& ?( Hfor (color = 1; color < 16; color++)7 U1 @5 Y; j& g& j) ~
{
- \5 ]: l% s# o1 v! s textcolor(color);/*設置文本顏色*/
8 L. j/ h: J5 C$ a' L& }* ] cprintf("This is color %d\r\n", color);( ~" ]4 V: Q2 ^: ]
}( Z" P+ k' j0 k
textcolor(128 + 15);! ?$ U0 l3 x! {- r- r; w' b, X
cprintf("This is blinking\r\n");, r* P3 G, h/ T/ H# f7 k7 x
}
8 I0 v: {% `& g0 o% s==============================================================
: ?" p7 j! e G+ I3 C【程序36】5 K1 Y: I8 b4 M! N
題目:求100之內的素數
( p$ f5 Y. M/ g ~7 i2 `3 @1.程序分析:
+ y/ v$ j3 b$ k! C& s9 Q( R2.程序源代碼:* h4 k1 S; C+ A
#include
. A! W, A6 \2 Z/ A) H. W1 e#include "math.h"+ k3 s1 c( E5 U$ [$ d& B8 i3 C
#define N 1019 d$ r" U, G% R, t
main()
; f- s; F! u% A0 B) g3 h: f{* P) y, A7 P1 d3 Z# E
int i,j,line,a[N];
- }: H6 H( L8 Z( A* l3 F- |4 Pfor(i=2;ifor(i=2;i for(j=i+1;j {- V5 ?! E, \, j `
if(a!=0&&a[j]!=0)
! E: Z% G. V Q. f1 o+ l! Q! Y if(a[j]%a==0); A4 Z) ?2 {: r7 ]8 t6 l2 b
a[j]=0;}
4 J) w* Z& o& U6 {) iprintf("\n");% V4 c, F4 C d O4 S; U# M
for(i=2,line=0;i{$ D$ o' A- u: Z. P3 B: H3 _; l
if(a!=0)
/ @4 h7 k* b; c2 P; D* n6 ^ {printf("%5d",a);7 R/ W) C6 v" L( i- W8 v' N
line++;}
. t9 e# F" N7 }$ O* d1 \& W3 F if(line==10)' h, `* g* S9 V/ Q
{printf("\n");
# v" d* C8 g N P9 \line=0;}% O/ l/ R+ e2 [: P8 `- z% _
}
7 o) c( t' }4 n3 B* m ^) I}
, d9 b& z6 v. `2 F) U==============================================================
0 g7 W+ m7 w6 s1 v @【程序37】
5 Q. }3 L1 l$ } s題目:對10個數進行排序8 q/ k* ? M2 Y* z4 y* k
1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,0 \3 Y) v, F7 Y) k7 B
下次類推,即用第二個元素與后8個進行比較,并進行交換。 6 R1 j0 u; n+ D! h7 U
2.程序源代碼:
6 x, S3 y. f6 N( Y# f7 ~#define N 10
" }; i* Y% e4 o( i( w/ Pmain()3 Q8 W; \! g$ N5 V. Y
{int i,j,min,tem,a[N];
* [2 M: t- v$ p) e6 D) _% f/*input data*/
4 C0 _, T$ h5 Y4 {# t/ L0 [& V5 Cprintf("please input ten num:\n");& J$ ~, v. ]' p* @8 i3 v
for(i=0;i{
- \# M# q4 E$ @2 t) H' Vprintf("a[%d]=",i);
! Z0 y* h& Y# o8 [scanf("%d",&a);}
: X# a. c- `- Yprintf("\n");
1 D: J" V( m7 V9 {5 Q# rfor(i=0;iprintf("%5d",a);
+ x: ^ h/ k3 A7 K I8 ^, k: Yprintf("\n");. t/ L; E3 a9 n9 g1 ?+ A
/*sort ten num*/
1 t" j& v* D6 ?) Ufor(i=0;i{min=i;
2 D5 f' X0 `4 F) l7 ffor(j=i+1;jif(a[min]>a[j]) min=j;
. P- R# A6 C1 K2 M" h4 a4 M0 m# qtem=a;' {' [6 s; q: u& w
a=a[min];* v7 d1 g& X: U; I+ T) D
a[min]=tem;/ I& V0 |' @8 j" ~) @ T( x- v% A
}0 I. Y6 k! U) S* ~8 s
/*output data*/
, x3 x+ O0 S; _8 G- f4 m/ U, _printf("After sorted \n");: Y2 o, c! }: H$ g/ b O; O# {
for(i=0;iprintf("%5d",a);
+ m. O2 R' D! E' O6 x; z5 Z6 [7 ~}
2 _1 D# R: \( m. M1 d, ]9 J==============================================================( g4 x( x" `! d& T. L, u$ Z
( n/ D/ l- Z: X' N! e7 Q# Y1 S
作者: xinmai123 時間: 2017-10-7 16:29
十五字十五字十五字十五字十五字
作者: qq642446015 時間: 2017-10-8 11:09
C==
歡迎光臨 機械社區 (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |