找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2476|回复: 2

C语言经典算法27-37

[复制链接]
发表于 2017-10-7 16:23:09 | 显示全部楼层 |阅读模式
【程序27: x  i' `  H5 J) H& Q: v9 J
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。4 s9 o1 \. q5 l" S8 ?2 L
1.程序分析:
/ b3 d0 H/ j8 @8 C3 t! q% c2.程序源代码:: g, M/ U# a# X8 P" V
#include "stdio.h"6 {, E% g/ Q5 z7 C+ X% d) k2 D4 ~
main()
! Q/ u8 a! B9 A+ v6 l7 {+ F6 c3 A4 F0 a{6 v8 a9 f  D  F7 H
int i=5;
* @! q# `" c8 ?* P& O1 \" fvoid palin(int n);
' h2 v) P& a. R4 |( p: o9 T3 d. Uprintf("\40:");
; N4 I0 |% E9 a- ]; l# n+ Fpalin(i);, V( z2 |" g8 E
printf("\n");* q8 O. @0 ^2 F
}. p! V/ I* l5 y7 [
void palin(n)# [% a' [& a; [) [
int n;3 b. D- A& N$ [- k$ J+ I6 l  s
{: X) T0 a7 L# ?$ Y2 u
char next;
$ \( S2 B8 X' X4 Z3 v' G+ E& \if(n<=1)
" V+ S) K" j$ d' t7 ~4 ^+ j( y {3 x4 w% Y( f+ B: r( B  \- ^
 next=getchar();3 U6 F7 Y- a9 [6 ]6 |
 printf("\n\0:");
. h  W) ~+ c# w- j6 x+ X. ~0 a/ d5 f& n putchar(next);. z, a; h/ Y2 @7 F0 f
 }& l" N) n) X- [0 Q
else( \* L- x7 j* X' i3 r5 X# n
 {& y6 W$ S$ U6 w
 next=getchar();
+ X; s& A: x7 ~2 D2 t1 c# ~" J) j; n palin(n-1);
2 k7 D5 ?, n$ O0 t putchar(next);9 I  M) [  _8 p6 w, t" w# V3 W' R  f# k
 }
. g# x8 w: w3 ]! u$ Q}% T, m/ a4 X8 q1 ]) `' Q  o( g6 z5 r
==============================================================
4 `0 l( B; P  \9 O; L# d【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 6 d! F7 H( a2 S* q" J' [5 A
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
* y  ~# W5 F3 p& c( \9 F5 ]   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
; V4 n& N/ j2 G3 i' `. y8 x   问第一个人,他说是10岁。请问第五个人多大?* A6 |; {. F1 Y- S+ _; d
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道1 N$ E6 J( o; m1 p. |9 {+ G" T0 A
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。5 Z0 V) n- {/ N: E1 D% m
2.程序源代码:
& x% y' k- I: Q/ Qage(n)3 q/ g  [8 D2 `* b7 A
int n;
! N7 M7 Z0 v9 }4 H7 k& ]& I8 e# e{
, O9 x6 `' h- y3 A' _, ^  a. kint c;/ N& I% f; V8 {- V2 R
if(n==1) c=10;
5 m# \& A- {2 w5 ~7 G/ Telse c=age(n-1)+2;
" ~, ~8 ]. u9 E" preturn(c);
0 G; e# [2 d- V+ w. S5 P7 P}
6 a$ q  y% h2 S- E6 mmain()0 R6 w+ O% g2 e% I
{ printf("%d",age(5));
6 j$ F) T* e# z) p5 V- C}
& z  u  _! l3 ]8 U$ Q==============================================================  {8 X* T3 D3 D7 P) G6 y- e
【程序29; l3 R& ^3 W: s! h5 {
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
/ \/ l+ F  t$ i3 t- i3 S7 z" o1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
/ v& |5 ^7 `, s# O0 p! s1 j2.程序源代码:
2 W) j( i% x! w! q+ Jmain( )
* W) n& t' M( i1 x- S- I% [{' A! ]7 \* Z7 o2 ~
long a,b,c,d,e,x;
% q$ g4 X$ W& U7 Hscanf("%ld",&x);
; ^; E# ]' U; }3 z" k$ _a=x/10000;/*分解出万位*/( J# g7 [% |! Z
b=x%10000/1000;/*分解出千位*/
) y. T7 L0 s$ o1 e0 f3 R! x+ Yc=x%1000/100;/*分解出百位*/$ V1 z  N1 E) s5 }' J; w7 e! e
d=x%100/10;/*分解出十位*/
( B1 U* x7 I$ o  {+ z, ]2 a3 \e=x%10;/*分解出个位*/
. l# m: h8 J5 mif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);1 C, z; p- }; v
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
  t# b, s9 T% s7 t' q; c4 W% L$ ~  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);+ r" a8 k+ l# |) T; M) M
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);1 z  _5 @1 n2 a+ }& s% S9 }
      else if (e!=0) printf(" there are 1,%ld\n",e);
2 C* E" d; x, N# F! }}
8 i$ Y; @* W/ A==============================================================
0 B1 V/ j- k. u3 }" T1 a【程序30' @/ o3 [; O9 P) W9 J8 A. q
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   / T; y* W  I% J6 {/ l& j
1.程序分析:同29
6 H$ J4 k' e3 K- h/ d2.程序源代码:, T, z* H2 s4 g7 ^6 u
main( )8 x& _/ B0 W7 f  y) u* A. }
{0 ]0 E; b! t5 @5 b) S9 O& N# u3 d
long ge,shi,qian,wan,x;) g9 \. x5 v- b8 V! ]
scanf("%ld",&x);
5 c% ?# }& t* k. _' C! Z$ owan=x/10000;: b; Y4 c8 {5 U
qian=x%10000/1000;
/ }. Z' {/ s, K. X4 k) _- sshi=x%100/10;
: {$ n- {! u7 y4 Sge=x%10;- b# @9 ~0 Y0 N  Q- [" n3 @
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
$ l* @7 I/ v8 B8 v. f printf("this number is a huiwen\n");
  Y7 H8 v5 [) telse
9 I, i/ k' r0 q" | printf("this number is not a huiwen\n");. R% o1 U" `: d, F5 U1 w
}
【程序31% ?# A9 T" w' D* a. {( \1 }! m4 l3 d4 `* _
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
8 D, I! F0 O* }1 R% o   判断第二个字母。
* H( F) C) K2 _! ?& T1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
4 q( O5 C$ F6 T4 O6 ^+ E( F2 m2.程序源代码:
, q5 @3 l) h' s" l) ]#include
: L, t$ j+ i( e* Y" \void main()$ Z3 N* @4 R. P% t
{
' ^! S, _" E; R* Xchar letter;( @8 U4 k( v5 j4 q5 w$ ?
printf("please input the first letter of someday\n");" ~) B8 b: b2 q" k! ?4 U
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
* S+ y- u! _5 [! d4 W* j" r! \{ switch (letter)3 |# f# D) `0 h. N' A$ S' y
{case 'S':printf("please input second letter\n");  D9 B1 K$ W5 j
     if((letter=getch())=='a')
: W& ]6 H4 k+ y! j! i      printf("saturday\n");5 E2 X: ~4 s5 d0 I
     else if ((letter=getch())=='u')9 C- W+ G, q1 Z- u) r
         printf("sunday\n");8 t- U6 ?/ a) n* c% Z* l; w. I. R
       else printf("data error\n");
, _) X! M# z1 z; p5 I     break;& I* v& k: c  r9 l4 c$ r
case 'F':printf("friday\n");break;
: l& G, f+ d' c. Rcase 'M':printf("monday\n");break;+ V6 I$ n; P9 c- B' ~+ a
case 'T':printf("please input second letter\n");) E6 c( J0 g) v
     if((letter=getch())=='u')  L. A7 Q+ G  L  M- D. J
      printf("tuesday\n");8 h. t3 h) ?( d/ K: `0 B$ b/ o6 l
     else if ((letter=getch())=='h')
- @8 R( n' s% ]' T) }# w: r1 v: D, I         printf("thursday\n");
- M5 N( H( N+ W       else printf("data error\n");
# k) c: D4 z% A2 w, M2 b     break;8 E5 a, W. [" L' N9 _
case 'W':printf("wednesday\n");break;
7 v+ p6 K. c1 Mdefault: printf("data error\n");6 F6 o: E3 Q2 e" B
  }7 \, i- V1 O: E! \, a" a: B& n
 }7 U# ~5 c3 U5 Y9 h
}
- ~# j1 o: v" w* ?0 x) C) L==============================================================
* d# S8 g9 H% ?. Q【程序32
9 v" \- D! ]: {" ]: Y! M6 b- l题目:Press any key to change color, do you want to try it. Please hurry up!9 ?7 B" _' w1 H4 q: [
1.程序分析:            . @, U" V1 R- t6 n$ x. m7 c
2.程序源代码:
$ N" o' U' y( ]! {; v& v#include
& }  P6 Y4 K2 u) B7 g7 G; Xvoid main(void)
5 E9 d& `: u# s9 V1 B{
" n  r# n* P& p3 m0 K1 L2 w( lint color;
& o1 @$ [1 q( rfor (color = 0; color < 8; color++)
( O% X" f& M7 i, G2 N* ?) A { ' X1 k' g5 x) ]
 textbackground(color);/*设置文本的背景颜色*/
* L/ Z, \7 M* e% ^  h  F) @" V cprintf("This is color %d\r\n", color);
6 s* G" J1 \( O9 ~4 D. O cprintf("Press any key to continue\r\n");8 b4 ^8 F$ f; W; n1 v2 k* z
 getch();/*输入字符看不见*/$ z9 k, _3 j& ^+ {/ J7 |: G
 }
8 K3 a6 Y9 B( E& i- k- j: z}: d* K+ ?9 H0 m/ W
==============================================================
1 t- Q+ y* D6 f6 l) N  _9 q【程序335 v6 M7 l  S5 T$ ?$ K
题目:学习gotoxy()clrscr()函数   
( ]# C  \$ Q0 {  J8 p1.程序分析:
8 _& K! z& A) Z6 l( j/ q2.程序源代码:
9 B4 n9 c! C0 e9 c# X% e7 e#include 1 j0 l, y' z# h2 q% b! k3 ^
void main(void)
+ m3 @2 G' L/ T+ B( g2 }{, x8 ^) ^! p& Q' N5 p0 w6 X) K- P
clrscr();/*清屏函数*/4 f5 r; E) b; }: R
textbackground(2);
$ i7 O) i0 F/ z1 dgotoxy(1, 5);/*定位函数*/
3 e( M; H& r4 }/ m2 H8 Y; q1 ocprintf("Output at row 5 column 1\n");' @' I. }% t7 y: z/ J' a7 N5 Z
textbackground(3);# u7 Y4 D7 Z1 P
gotoxy(20, 10);7 p5 w/ d- Q, [% _8 U
cprintf("Output at row 10 column 20\n");
) {6 t9 x* ^, w+ J}
& ~; E6 W. H6 E% d& [==============================================================
# t9 l- D3 `! a8 ?! l6 ?+ N( n【程序34
  r' Z( ?: o3 f题目:练习函数调用0 o# @5 j8 n4 q+ i8 Z
1. 程序分析:
5 \! D4 |$ U& X* f+ A2.程序源代码:5 @4 {# {5 o. a
#include $ `* }1 A1 Y2 y: M( H& h( M
void hello_world(void)
2 t: P3 t- i6 Y, w3 W# p8 s{
( B& Y) w2 z2 \6 X& F& n, I. zprintf("Hello, world!\n");3 {3 F% O# l% ]
}
6 f. Y7 V: `% f$ x- r7 }void three_hellos(void)
- _7 k4 s3 d1 @* j7 Z{
/ q: p. E6 X0 z+ Zint counter;
8 H# v# j  Z  M* R9 y/ f. Ufor (counter = 1; counter <= 3; counter++). ?/ l  L% K) G9 M; e5 S% \
hello_world();/*调用此函数*/6 H# l; U1 \4 P, q- B. S+ H
}* P2 L6 b4 J/ \0 C1 o$ Q9 Z
void main(void)6 C6 t# E6 `) ?- n; x2 D8 `  O3 E$ k" Y
{' s# S2 V" ]# ^
three_hellos();/*调用此函数*/( U" ]# p- u, r
}
* P2 Z+ F! E$ q$ _* m& a' \==============================================================% H# S, Q" d0 h( r9 @6 O5 k4 L" w; _
【程序35
  q" [2 H" t2 c7 N4 c0 I题目:文本颜色设置2 U; A; O: f) F# _3 W* ^# b( e
1.程序分析:  |5 U6 t) q2 g! q: n4 p/ E
2.程序源代码:
. D' M2 v5 t) z  w' u4 V% [#include
! x3 f! K1 N9 C9 G, S! v; d1 V. I; y4 Hvoid main(void). b6 T; P, _; j/ V8 r
{
7 g& f0 C+ [9 K! d- Xint color;" k  O, V1 b8 H6 j
for (color = 1; color < 16; color++)0 I; a. x* n7 H$ w
 {. m1 v0 a- a$ m5 b. B, D
 textcolor(color);/*设置文本颜色*/
& ?. j% a( i, |! m" v cprintf("This is color %d\r\n", color);
+ Y% N/ S# g! i! @- Z3 W }
% u1 r  G" w% V4 m% f+ xtextcolor(128 + 15);
6 h$ @+ D' c4 ncprintf("This is blinking\r\n");; L' I5 w) [) J2 H/ L; U( h
}1 K2 Y+ V0 U, X3 E1 t- w$ C( a
==============================================================
& x7 Y9 h/ [# r【程序36
& H) `7 G9 R& C* w5 i题目:求100之内的素数   6 ]. |5 _, A% a8 W% F) ~: r
1.程序分析:
4 b5 U2 {+ p9 R& H0 L2.程序源代码:2 n1 h- }) N; C4 J: m
#include
% f9 K( P5 r% v0 v#include "math.h"1 V; C- Y- c% O( G- G* M
#define N 101
; n5 t! A( H9 e5 s- Jmain()9 n3 z* {0 L% u6 Y4 I$ Y
{
0 H1 M+ n* y( o5 M; K  qint i,j,line,a[N];
8 j2 L; t' v7 b) J8 Gfor(i=2;ifor(i=2;i for(j=i+1;j {
, j1 k+ K1 W; c1 Z. R6 F( \' Y  if(a!=0&&a[j]!=0)5 q- i1 P% S# P% v  i" ?7 X6 @
  if(a[j]%a==0)
0 _; {+ `& y& T' n4 H  a[j]=0;}
4 S6 l- \* t5 A1 e% P5 t6 `6 Bprintf("\n");* d8 v; R. g( T
for(i=2,line=0;i{, A. w. M$ C+ m
 if(a!=0)
2 S' E% ?) s; I1 W: r' k {printf("%5d",a);3 [* K/ ^$ Z: K. W: b) f* Z
 line++;}, C, I- r9 e6 [( T) X5 O! r0 u& Z
 if(line==10)
, |/ T- T4 p. w {printf("\n");8 }1 q- o/ }  L( C# Q
line=0;}
5 Z0 i9 b' u8 V}
/ ]" K% p. X5 e}
$ w- D$ E- v, h& M==============================================================/ J0 y2 \( S  J" \- H
【程序37
; h( [9 s, R8 r( E* y0 ^6 G题目:对10个数进行排序
# p5 C( M/ U( x4 n1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,  \1 T4 m$ y1 \( \$ }
      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
: f% g9 B+ J1 n' S7 B2.程序源代码:
7 M2 D) I" U* ^$ H- S& m#define N 10
" ]& p. U, Y" ?3 Z3 s0 I7 Jmain()
3 K9 J. z. A: G" ?: {# q{int i,j,min,tem,a[N];
7 |' u  ~5 \# n0 \$ U/*input data*/3 ?- w! N8 n! `8 z! p6 J2 o
printf("please input ten num:\n");
- k6 Y! c/ f3 l5 H/ t% O, Bfor(i=0;i{) s7 _5 M& N- O7 S9 W
printf("a[%d]=",i);) O6 s' i3 v$ ]4 p: s8 q  r# W2 g
scanf("%d",&a);}  L0 J+ A' Y# E) c& B+ J7 Z+ _
printf("\n");- j7 C# p$ O7 P, }
for(i=0;iprintf("%5d",a);( t& h( L* P. D6 y$ d( h8 }
printf("\n");: P5 c+ e$ m4 }7 ^* {! j
/*sort ten num*/% G1 A# o7 \9 l: m8 g" R
for(i=0;i{min=i;
, t. m3 J# U$ V8 @: Qfor(j=i+1;jif(a[min]>a[j]) min=j;
4 G" z) P6 R; i4 a% _tem=a;9 {2 A# s0 X, W" b; c0 X
a=a[min];
  _! T( P, d' j8 {8 Fa[min]=tem;
- R# V3 f3 @$ E5 o& Q}
7 D6 S/ E: W- P; z( N/ e/*output data*/
: Y! r; u8 C: k. \printf("After sorted \n");2 T2 Z- U. J0 T( o/ F( W7 @
for(i=0;iprintf("%5d",a);% V( {+ d8 S/ R
}+ U1 b+ k- i  N
==============================================================& ~, i8 x' K/ r

. S5 i! _2 _* q/ e* j4 m9 n/ |  E, y
回复

使用道具 举报

发表于 2017-10-7 16:29:57 | 显示全部楼层
十五字十五字十五字十五字十五字
发表于 2017-10-8 11:09:22 | 显示全部楼层
C==
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-6-21 11:58 , Processed in 0.066854 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表