机械必威体育网址
标题: C语言经典算法27-37 [打印本页]
作者: tainqing 时间: 2017-10-7 16:23
标题: C语言经典算法27-37
【程序27】 ' V3 x B9 e1 P5 U
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
, E, M# o9 ^0 ~$ r$ j0 V5 `1.程序分析:
3 s2 o$ h- W" J+ c2.程序源代码:; b% p, k) f0 k r! ]% [3 F5 G! i% b
#include "stdio.h"% Y- L$ K3 Z, S: r
main(). l1 J) v: R6 R# g- L7 B
{
3 N/ M, N k' W' yint i=5;
9 S* W ~; y) p" H4 Bvoid palin(int n);; K3 K" i9 B1 k f
printf("\40:");
, X: D' G) X0 _3 `' spalin(i);
* m9 ^$ G9 R2 y4 fprintf("\n");! r* F( S5 N5 p" @, A1 B" K2 }
}
7 F* W" A/ n7 o3 v- y7 o1 hvoid palin(n)) Z' J- f4 n/ Z
int n;
- i9 C! x" o& M1 x) t( Y{) b6 _* i! I9 H/ x0 C- u8 ~
char next;% h4 ]. r/ K Q( Q8 f2 `! u( j9 k
if(n<=1)
2 o, }/ p7 f# S' f) n {
7 @# ^/ P: z5 _! {9 E next=getchar();1 N; K/ s3 B2 i) n- d4 E. @/ N
printf("\n\0:");
( z" \6 e; A& u2 J) c# q$ q putchar(next);
2 r) s$ o; z, A: I }
2 [6 ^" T) U/ [; `else
( V7 f5 K! u9 _; j {
( Z0 M; ]( r8 l+ F8 ] next=getchar();
% C: _# y! n0 w/ W4 g palin(n-1);
& O h1 r8 R* S0 F! q putchar(next);$ U6 J# l7 O8 C+ Z5 ^0 `
}
7 O2 d) ^7 S- t. M/ P}5 }2 b& q+ s4 t, O" {9 t9 B( E* l4 J
==============================================================
. N+ e7 f+ M$ M+ K! r- k【程序28】信盈达嵌入式企鹅号要妖气呜呜吧久零就要
4 e& H6 n/ ^% ?& t! t3 [9 I题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
~. F: N& a0 q+ O" z( N6 z 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
$ I, W# P- E, u2 l! p" l. A8 } 问第一个人,他说是10岁。请问第五个人多大?
5 L' I% e7 u* S3 c$ v8 n1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道) t& f% {& x5 e- @0 m8 O% k7 X% q
第四人的岁数,依次类推,推到第一人(10岁),再往回推。4 w$ x8 M4 ?! V) k, z
2.程序源代码:% o1 F2 h5 t% x; s
age(n)+ ^" Z4 O, m) d. a3 f" S5 o/ p" R
int n;$ Y! e% Y7 x) V: e6 O; Y1 V
{9 r! S1 m8 s" M
int c;. B n: g7 Z+ q A% q2 [6 S: F
if(n==1) c=10;/ N! t( \, W s1 p9 D3 R
else c=age(n-1)+2;
; u' _4 V; X; ]: }+ N8 dreturn(c);, k' h0 A: F1 X
}3 j* F; p I( {! X: s
main()
$ g8 n( k4 |& u" z{ printf("%d",age(5));8 r1 a) m+ |. ~
}
3 _( v, G) h; k9 C) B& n==============================================================# Q& Z" o& c' x4 u5 ?0 R0 j) i3 n: d
【程序29】
+ a% ?+ u: Q; s [题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。8 r; M! t* R& W+ a6 f
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 7 [2 I% r0 d1 U( a3 Z
2.程序源代码:" L4 l; c. S& k6 f
main( ) _1 Y4 u! u7 \) |
{) m G2 }, Y+ E8 M; W
long a,b,c,d,e,x;6 y, N0 }* x2 ~7 X6 r) L7 I/ e$ t
scanf("%ld",&x);
) |* A b; k8 N Da=x/10000;/*分解出万位*/: A& D& P) g: f0 S4 I7 p
b=x%10000/1000;/*分解出千位*/) }: |( @, ~5 X: n1 b0 i& G
c=x%1000/100;/*分解出百位*/" e# V$ f: q* } O9 c
d=x%100/10;/*分解出十位*/* \; b/ k$ G8 {; q3 {! [! I
e=x%10;/*分解出个位*/! {/ l! u$ M3 E, z( T
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
7 L; b# u: G* ?- F8 k5 \else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);8 X+ L: A. B: N n0 F4 i
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);; F4 G; {. z+ ~1 M; Z/ t" L1 e% x
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
8 L7 j; t/ q S' I else if (e!=0) printf(" there are 1,%ld\n",e);6 ?0 a( z1 `2 ^6 T6 D
}4 s- l6 b# X( N7 c+ x6 M
==============================================================9 G" o3 x& B( H2 t: J1 N& X
【程序30】 : A& Z, { s2 T+ u$ y" Z# l
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
% e0 s: m `- u7 o/ f- x1.程序分析:同29例* \, u F3 q5 \- J: @1 M# a
2.程序源代码:' K0 v0 X8 i% c8 A% K; g
main( )
6 v, u: ~. w: O+ ]& u# I# k{
+ I. L, C/ ]/ Dlong ge,shi,qian,wan,x;& X% S" Y) p: B% o# K7 y. W
scanf("%ld",&x);3 G3 I3 J; Q* G2 w3 `- d% W
wan=x/10000;1 Z) R# C6 O5 k) r
qian=x%10000/1000;; r6 t1 A, C0 v8 d
shi=x%100/10;
, x6 u( h. |( z( _6 t# oge=x%10; Z. |) g) M# [* @" H$ H" r1 u
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
5 o% H' R) t' r- a3 g/ Z" @ printf("this number is a huiwen\n");7 s- j* [$ e- z- }% b4 X" J
else. o* s" b4 t/ u1 {+ o" ], R6 M
printf("this number is not a huiwen\n");
, t0 g X1 j! E* F- H$ D0 z% f}
【程序31】$ x5 d* n! v1 n# G# k8 ^0 l
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续9 ^' t1 J, U5 I1 K3 O
判断第二个字母。! x) S- T p2 E/ {0 X! _* H5 E; Q
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。9 e L+ w$ D# O Q/ e1 v* m
2.程序源代码:
1 V4 e4 A! Z6 S& m- W# ^8 [" M#include 6 @ T. B. q n, E8 u5 S* j
void main()9 a* w+ y& l' J G: j
{
7 {$ d/ P& p! y4 w" }. Gchar letter;
" @& Z- O( ^$ {4 N9 K# s" ~. Tprintf("please input the first letter of someday\n");, m( P0 M$ j" p
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
% D- }# i$ f. z4 f( y. @4 r{ switch (letter)
# B- { }) T) F" D{case 'S':printf("please input second letter\n");, {: A) Z8 C0 E5 @7 n
if((letter=getch())=='a')
. z: \! H7 i" z$ ? printf("saturday\n");
% T5 K! W f( b$ @, u6 \ else if ((letter=getch())=='u'), {: u/ N7 r# Z! w- J$ K. \ o" m
printf("sunday\n");
9 d m& R0 w) ~. { [# ~/ \ else printf("data error\n");
9 C, a& h. v$ y4 w4 K4 T break;* n. ]4 V* O- a" b, M
case 'F':printf("friday\n");break;! ^' p) b9 k9 X$ V& ^2 D1 r5 j
case 'M':printf("monday\n");break;
' w: b2 [- v( P" pcase 'T':printf("please input second letter\n");; F4 Q/ |6 F- `% T+ j. B
if((letter=getch())=='u')
# e7 q k& M" [5 [" v; o' q printf("tuesday\n");) B1 k' K& |( P6 Q
else if ((letter=getch())=='h')7 y8 U9 z; F G- u" Y2 p
printf("thursday\n");5 U9 B! o e6 e, Z( b8 O# R
else printf("data error\n");& N f- Y% y6 G
break;
1 Y7 ^" j( O8 N4 f% t$ mcase 'W':printf("wednesday\n");break;/ v* ^& ]& j" v7 j1 y4 f2 \! g
default: printf("data error\n");. g% f6 X: Q$ U% E2 J" H
}
- D1 o8 f- ^4 D }
/ `/ [" o7 [! F# C7 f& l}: o" E @1 Q% S' j: m% O* l
==============================================================
" Q0 @/ U$ w- L7 F2 u. ~" [: H【程序32】/ Q) i+ W" l, i
题目:Press any key to change color, do you want to try it. Please hurry up!
& V4 M+ G* g2 @% ~ \9 c1.程序分析:
! _ [$ W) M/ p2.程序源代码:
: ~# v* _1 ]6 F2 T( R$ ?: c" m' B#include
9 H, }1 M/ d, k! lvoid main(void)
0 Z* B" V# Y7 g2 Q- W( {{
! V& r2 |) J: ?( B* R2 G; F3 |int color;# i1 |, m6 p( ]9 Q+ h2 N7 R
for (color = 0; color < 8; color++)9 c5 Y# o! T5 E2 C! a. u
{ 2 _ c: g$ I5 f* ~9 _
textbackground(color);/*设置文本的背景颜色*/! j; }& X- z- @. V6 K) o2 r: ~/ x
cprintf("This is color %d\r\n", color);% V8 z. Z+ u2 i: g+ J5 ?
cprintf("Press any key to continue\r\n");* ~ x+ |# b$ f
getch();/*输入字符看不见*/4 j+ @& m7 ~: D2 {! h$ h( D$ p
}
; ^4 [; }/ C) i0 B2 ?}9 n: N3 M8 B" f* X1 m
==============================================================) Z0 K1 R) }! Q6 p6 j& I
【程序33】$ {6 F2 r( y' k
题目:学习gotoxy()与clrscr()函数
, }/ W) a; r7 T- @' t3 N' b+ g( I1.程序分析:* l% V/ u1 v& {/ c
2.程序源代码:
0 r) [" ^' y0 N#include
@! M* q9 o7 p: U* K: W7 ] Evoid main(void) Q( u5 t& h/ E! e" s
{* ]! ], N* S Z/ t0 i
clrscr();/*清屏函数*/
4 V7 \9 n+ a# Htextbackground(2);
3 u! T' V: Z) Rgotoxy(1, 5);/*定位函数*/0 u, Q# {$ {- J9 V7 I$ z5 s" z) x
cprintf("Output at row 5 column 1\n");
$ z+ \) q2 N. ~, H5 Dtextbackground(3);
/ j, P' n. `2 X% n5 f, L- tgotoxy(20, 10);$ U, T; j, }6 v; I$ Y$ |
cprintf("Output at row 10 column 20\n");! p- F7 R' P7 h( ^7 i( D
}$ \8 t- d* W2 C& o& z2 s Z3 G
==============================================================2 P. T5 [1 p% K6 D- R6 R' Z
【程序34】
& v' y0 R0 E7 o- ]: o0 T% _5 I. d题目:练习函数调用
]+ k6 U1 c' x' j9 ~+ t8 m4 a# m1. 程序分析: ' \1 [. G; H- Y2 K& H1 k, y8 h
2.程序源代码:
6 L5 k. ~2 i# s; d* q; Z#include ! R! }- A0 t" V6 |
void hello_world(void)
4 j4 C5 ^; t) }0 |{
) n" k& [4 `0 j h7 x! jprintf("Hello, world!\n");
7 ~+ `4 k* W: z) W% H0 x w}
J2 d, }4 |5 g+ Yvoid three_hellos(void)/ g8 G' l6 i, B! n+ K) k
{
- t/ C- e( K4 X8 g4 b$ S/ }8 Uint counter;: _2 A; c; J) t* B5 {
for (counter = 1; counter <= 3; counter++)
/ t) X5 a) W8 B8 t* i$ U# shello_world();/*调用此函数*/" |9 N: p# }# G E: t. M$ x
}# v1 {: Z) }; M+ F% q9 H. d% ~
void main(void)
9 u/ T" ~& ^; v% ~7 _4 S{1 x; E! r, P1 q( [! s1 \9 H6 \1 f
three_hellos();/*调用此函数*/
1 p! ?1 D8 G4 W( D}
- y( L: v6 C8 R0 x+ v# P2 e==============================================================9 }6 X4 Q9 `* v
【程序35】$ M- h2 T+ Y% X
题目:文本颜色设置& K* O) |& R0 A: y" ^2 i
1.程序分析:
. F. k6 c7 j1 u! t0 t2.程序源代码:' ?, j6 y9 ?& a- u/ i% e
#include 1 e0 J( g9 d. ?; E; J
void main(void)
9 f& d/ z" Z6 N4 E$ ?$ a; X{9 D ]: ?# Y4 s) b; P' C, y* n6 {
int color;
* u3 R: o2 H4 pfor (color = 1; color < 16; color++)
( I9 V( n# u3 n! o+ H/ Y2 R {
; S* N* [. P! o0 @% v2 j textcolor(color);/*设置文本颜色*/
7 C6 v- H F/ W' f cprintf("This is color %d\r\n", color);
2 U# [) O+ d4 i! `% t' f2 N }
5 ]" e v5 T! ^. ^+ Utextcolor(128 + 15);, s$ i" [9 }9 @' V
cprintf("This is blinking\r\n");
0 O" d1 X. v. W/ K% b* f" n3 t}
) ~4 E3 x" \: ^==============================================================. U- ^4 J( t2 S, q6 l+ {7 w
【程序36】8 N& S7 {8 Q5 `% [) W
题目:求100之内的素数 $ `( ^+ s0 K* w
1.程序分析:9 u z' p# f6 Q7 q4 I$ {
2.程序源代码:
7 W; t: f9 m" @" k( F#include
1 p/ R j& y- h: C/ k; N% i3 c#include "math.h") R6 z+ B; y; e d0 t
#define N 101
. l; r0 F e( I' A* Pmain()7 P* q0 \+ `! Q4 I6 j5 l) X% o
{
0 s. H1 F' u {* K# E4 A eint i,j,line,a[N];
2 E0 ?. C. ?- O T+ I0 ^for(i=2;ifor(i=2;i for(j=i+1;j {, W d3 U0 C- o4 @' f
if(a!=0&&a[j]!=0)
/ l2 R8 ^7 Z6 | if(a[j]%a==0)$ h0 Z2 p6 A$ Q3 E
a[j]=0;}
# L; W: R3 m3 f0 f! Eprintf("\n");' P+ i7 x8 b' O& T; F9 q k
for(i=2,line=0;i{0 ^: U! z7 W$ Y; _* N! A. Q9 O' Q
if(a!=0)( w. ?& g# J) [: r
{printf("%5d",a);
+ }. P' O2 p- A! _6 b* U+ Y8 } line++;}
! {7 G& L( \- \% f if(line==10)+ p0 W; H1 e2 G1 |+ M" c9 a1 M
{printf("\n");
, ~# V7 U* T. K( x7 B8 r# V% gline=0;}
3 H1 h1 H; N1 d% m}
. n3 V# x6 L7 A4 s4 i}4 z/ B6 l1 M% Y3 I
==============================================================! `& Y* Y/ Y3 Y" j- i/ g$ |( f2 ^
【程序37】
2 g9 x7 ?( i. X! M' A6 k题目:对10个数进行排序2 f. i. W3 B) n
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
& `0 Q) \8 ~' q9 s* z 下次类推,即用第二个元素与后8个进行比较,并进行交换。 3 `6 l) K3 P i2 c1 x! Z) d
2.程序源代码:
+ `! v$ ^* r# n& w#define N 10
9 D8 ?3 I' p4 t0 I8 Qmain()% B* J2 H( |/ V0 L
{int i,j,min,tem,a[N];
9 t% B* U5 H/ Z9 @. v' \9 q/*input data*/
2 U$ e/ \! k/ x' _0 `printf("please input ten num:\n");* P) b. ~! x+ }
for(i=0;i{8 {. _: U1 L0 \$ y
printf("a[%d]=",i);
6 i8 L1 u" h8 h3 _+ |7 _; ~* Mscanf("%d",&a);}1 p% G, r/ e' s, {. N7 S# Z. L$ O( w
printf("\n");
6 r- {* d6 ?. p: N3 m/ G+ dfor(i=0;iprintf("%5d",a);0 F0 P D0 d, ^: E( J# @2 j
printf("\n");% F! b* q+ G8 l5 M
/*sort ten num*/' f+ r7 e" p& t7 P3 f
for(i=0;i{min=i;- |, O4 N" Y& g9 \2 i
for(j=i+1;jif(a[min]>a[j]) min=j;" W; U" N" q) C7 C( g3 y9 C+ u
tem=a;
! A* ^8 j% t3 e" E+ Z8 {# Pa=a[min];' L% D* I; a3 R( _8 Q7 @
a[min]=tem;8 }7 b' x5 i3 A: {" W8 S2 r
}, r/ u5 S) g% E( X# n' ^( s8 ~
/*output data*/
4 c( M; A) h# M5 s1 a! Z% v( S; |printf("After sorted \n");: R7 F+ z( ~7 e/ r' B ?) i- I
for(i=0;iprintf("%5d",a);
; N7 \- N8 G; a( ~ F& y( f}
, Q3 f! X8 Q, b- ]! w==============================================================7 t3 f i% z) e: }0 M: P9 s
; L8 J2 O+ S$ N8 R# r% Y, V
作者: xinmai123 时间: 2017-10-7 16:29
十五字十五字十五字十五字十五字
作者: qq642446015 时间: 2017-10-8 11:09
C==
欢迎光临 机械必威体育网址 (//www.szfco.com/) |
Powered by Discuz! X3.4 |