找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2536|回复: 2

C语言经典算法27-37

[复制链接]
发表于 2017-10-7 16:23:09 | 显示全部楼层 |阅读模式
【程序27; s% J3 D9 v5 x3 A! n
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
2 H6 C4 v1 }8 f3 v7 y7 z1.程序分析:* t& Q) B7 j$ V; Z! C6 X% A
2.程序源代码:
# g. q; ~" l5 a$ u* Z: N* q! Y; w8 N#include "stdio.h"
0 u. |) o" F+ Z; b" f8 C& Z' v7 Imain()
9 i; r. v* e9 Y3 t# ?; v{
' z0 T  x2 V6 T! O" k3 zint i=5;4 f+ H# n& D8 N/ ^7 r
void palin(int n);9 D& {% w3 I; Z
printf("\40:");
: {4 t$ C# `$ H5 D( jpalin(i);3 P9 n  o: Q+ P5 |" u2 d$ O& _9 F
printf("\n");
. [. q0 U) N; E- i3 L7 Z}
& D) u7 [' f( z6 {  V, o' Rvoid palin(n)
5 |" P* W! c1 tint n;/ Y! r4 u. z& `' Z/ L
{5 ?  z( F/ g4 P0 w
char next;  e) W5 R1 v# Z
if(n<=1)
8 \9 x6 q! t% X6 d3 [+ \ {
! @( z; E4 n% ?% q* C4 h5 a* |7 ^ next=getchar();
9 F, X& C* L: m; t  Y, M printf("\n\0:");
. o/ S. n- x% B7 T+ l5 M# q putchar(next);
# X/ h9 }' z3 |0 i: V }9 \8 J, t4 r2 p5 {/ p
else
$ h. A+ v- z& y% P {
& o& _+ F  z) N- S next=getchar();1 A7 ^" F  h$ k) Z7 n
 palin(n-1);4 F4 \7 l' d  s# L
 putchar(next);7 w4 J/ M. p: s" x6 K& Z
 }  V% R9 ]& s1 }/ ^# K% ~' E
}
# E. E+ F. y/ L5 @7 P5 f  l  w- q==============================================================
' s* s5 i" I, W" e. c【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
8 Q/ y" m5 E# Y% n题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第# R5 k' X5 G  u8 X6 U* S$ \% q
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
: d: N5 y. ]  C. q, T: L5 x) K$ D   问第一个人,他说是10岁。请问第五个人多大?; I2 q1 z3 j1 u0 j, \* s. i
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
5 p  G* ~+ ?6 L      第四人的岁数,依次类推,推到第一人(10岁),再往回推。( r: \! z" N. r4 ?- p! E
2.程序源代码:6 _5 h. v( t& @( U' ^9 b
age(n)0 _, Q- R7 s5 P' {' H2 j6 ~* z9 r
int n;: u! p. b& Z( O/ f+ F& c1 Q
{
3 E/ Y  B  r8 T( y; X9 {% dint c;3 V" M( T5 ^# Q0 V: I$ X/ M" E
if(n==1) c=10;
# n- f1 Q; R, s& nelse c=age(n-1)+2;1 e6 O! c; _6 X" ?9 |9 S' V9 I
return(c);
, L+ J1 A+ c4 J( z/ b! E}+ q( f, m+ v% k- U8 Y) w, _
main()
+ `: _7 d7 n8 K* o{ printf("%d",age(5));0 M8 ~& }1 g* l% S' r; p# X! ^+ T
}
: e/ H2 D( G! u; w7 r. q==============================================================0 p' p3 C1 |7 s1 A
【程序29
! f5 P( m+ a5 |/ {题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
7 N/ ^* n6 ~4 I% h5 U; P1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) # c3 F. f' d; S
2.程序源代码:  D2 B' n7 B3 T. ^& m
main( )0 b2 y# _. y  K
{
+ U. q6 R1 t5 J1 U  T0 Q/ h% @long a,b,c,d,e,x;
% e/ U# C. f7 H/ c+ P" vscanf("%ld",&x);  T0 U. t) E$ b: U, D) N
a=x/10000;/*分解出万位*/
; g# U0 V" z9 |! V3 ~: {! ]1 z# Pb=x%10000/1000;/*分解出千位*/
% H. R1 i7 f. w  ~; Q' u( P* Qc=x%1000/100;/*分解出百位*/
* ^- x. x0 ]6 \- Rd=x%100/10;/*分解出十位*/' M! d9 N5 [5 Y
e=x%10;/*分解出个位*/
' U* i' H) u# g" Pif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
% E) `$ ]) G* z( I# l+ ?0 zelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
  p) j; A5 W. q! i0 i  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);" _/ G# Y* B) i  d
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);+ ~0 Z/ B2 [3 m& G' G
      else if (e!=0) printf(" there are 1,%ld\n",e);9 y2 w/ V6 p  L; F9 V" |. @$ s* x
}
" g  I. P: p: o1 B$ I0 ?2 r7 J==============================================================: d" m. y0 b- r- [, ]( g) b
【程序30
& m( J. h) ~  H) Z题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
# i: K, w4 b1 R8 x2 g2 ^1.程序分析:同29
9 y8 K# \1 u7 {3 ]7 n' _2.程序源代码:
5 m# L, ^7 q$ m; Y$ `3 d" nmain( )) P% M) z! o9 D% x( Y- _! V7 `
{
& e7 a: k5 t9 d; o6 ~long ge,shi,qian,wan,x;' a3 B, p7 J; ^$ r. J/ ~, v5 g) h
scanf("%ld",&x);
$ V  k! j+ V- _" _0 Rwan=x/10000;
) H3 P" |# s* o* O+ v" Lqian=x%10000/1000;3 a( ]6 Y0 M5 ~
shi=x%100/10;
* G, Q6 @( t0 Q8 ]9 [- B3 Z; z5 jge=x%10;
( _1 i8 G' G4 _6 z( H4 uif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
, D$ ^. b( S7 r* m printf("this number is a huiwen\n");7 K' V  {4 E' s1 D/ X
else8 P# R9 o' b; }3 x. \" i) }3 `
 printf("this number is not a huiwen\n");
4 r( G0 u- G( S" Q7 w' q" n" d}
【程序31
0 C; g: k2 T# e3 L' Q题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
; W$ \1 b% R/ m( l   判断第二个字母。
2 c1 @! l% m2 q# O8 O& m6 a, B1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
" w' S% [, }8 X3 E; I5 `2.程序源代码:
1 B6 m- ?3 @# F5 K" p4 h, F#include 7 O3 i! ^2 m' c( @. g6 |) M
void main()
) p' P7 d9 W0 _- X5 `; p{
; R- g: t% G8 Ichar letter;
) z2 \% V: |" \* Jprintf("please input the first letter of someday\n");
% s+ H; i3 P. I; Cwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
# ~- A9 a5 A) p{ switch (letter)
) v: s* d3 G& h# L$ v" Y! \{case 'S':printf("please input second letter\n");
" Z/ D: }# `- M: V* i$ N8 m  E8 X" m     if((letter=getch())=='a')! Y. e+ ^; [1 {8 o
      printf("saturday\n");
. Q! s2 e8 m+ o6 z4 t( S     else if ((letter=getch())=='u')) r2 z- L; d2 M* i: {! `
         printf("sunday\n");( N6 V7 I9 z/ H' N3 p+ j1 o: N
       else printf("data error\n");
0 p  x0 X% i6 W! a; ^     break;
! a4 h5 _3 b; a# A6 P" pcase 'F':printf("friday\n");break;
5 D. P# @" H+ P$ s. q$ z8 _case 'M':printf("monday\n");break;
& h7 Y3 F6 X, U0 Zcase 'T':printf("please input second letter\n");' I% L2 q2 ~2 L5 t1 Y) d
     if((letter=getch())=='u')6 q, ^* _- V$ L3 Y5 _
      printf("tuesday\n");; ?1 g" C7 b0 o2 Y. E1 z  |
     else if ((letter=getch())=='h')3 V( p, z5 d3 U
         printf("thursday\n");
  Z) T: h2 z* {& ~& N- b- o- F! p       else printf("data error\n");) k% ?+ ~& X0 R  g8 t4 y
     break;: y1 L- b% z5 W! b2 p: f
case 'W':printf("wednesday\n");break;1 C! I$ T. r# E2 Y8 @
default: printf("data error\n");
2 s' T, z  J- ^, d# |  }
6 @. o: h$ b; c! F& s$ W }' [0 b" u8 X, D( q9 [: y& M( A
}
# A5 I& w$ z. q' E4 ?6 i& Y==============================================================
6 {/ [6 H: {8 i7 a【程序32
% O* ]( k' E' P3 m' [9 M题目:Press any key to change color, do you want to try it. Please hurry up!
! u; O, o# A2 n( u2 z1.程序分析:            ( C2 ]2 O, k& g0 ?, q" T% A, ]; `* O
2.程序源代码:! B4 E+ C7 u3 V+ M3 z+ X, @9 p
#include , o) H. X  v, e
void main(void)
) k0 M: I! D6 x  j: r% [{
; I2 }/ G8 W  [int color;4 H# p. e7 H: D
for (color = 0; color < 8; color++)
; B8 s: i1 P- Y, b8 I { 0 a) {8 w" {. i- b0 q
 textbackground(color);/*设置文本的背景颜色*/
: N3 j/ K& D1 ~& n cprintf("This is color %d\r\n", color);
  v# e/ C$ V9 f$ m6 Q& H+ ^1 \ cprintf("Press any key to continue\r\n");
- [9 I# w0 Z5 Q1 t( a5 t( r getch();/*输入字符看不见*/: m2 l2 `  `- X+ A
 }# R$ {4 t# g; ]/ b: R7 i; r7 @
}
! M: z; @7 c+ @7 N  @! E! f9 o==============================================================
: ~0 H' N6 l7 i【程序33
# M. ]6 |% V  q% x( g2 @题目:学习gotoxy()clrscr()函数   " U& p3 l( Z! A/ Z+ q
1.程序分析:0 E' v4 n. d9 |4 W
2.程序源代码:' e: S7 x9 c) u2 z
#include
2 v! q) D: D) p, T" xvoid main(void)
$ A5 ~2 \. }9 X$ D  m{' N# o- h2 Q& f% [) O2 d
clrscr();/*清屏函数*/
5 a5 {3 {1 Y9 f6 W* Xtextbackground(2);# S. n1 Q+ ^2 ^: L
gotoxy(1, 5);/*定位函数*/: w. o( \" j( r
cprintf("Output at row 5 column 1\n");
, A+ t2 Q/ J! K7 dtextbackground(3);' z3 ^) @  b7 [
gotoxy(20, 10);
- `7 E' _8 q1 v4 `' g) Qcprintf("Output at row 10 column 20\n");  o# H& K$ C7 S# `* K
}
& N8 G: q( ?: V6 }' _& v5 z==============================================================
0 c1 }3 P$ \9 r% A3 @【程序34
* J4 a- T  t  e  a# X题目:练习函数调用
: l2 T0 u, g7 Z7 X* e. g! v1. 程序分析:
/ H3 D/ w% B7 O" _2.程序源代码:8 E0 U3 A8 F9 R. Y6 J% y, b( g
#include
: }- w/ s. ^4 `! Dvoid hello_world(void)
4 v6 x. o: c- o; C( H{! O' |# I; B% H3 v- ^) ]. Y6 ]
printf("Hello, world!\n");
2 w; ?, F  v/ T3 K% O; A1 w}
) U. q  r5 ?& l2 |void three_hellos(void)
( q! ~6 y" s0 R. \; }' w: s+ x{; h% P+ ]# {. u
int counter;* S' N" n' Z* F
for (counter = 1; counter <= 3; counter++)
: P& t: M# K, `. W  Ihello_world();/*调用此函数*/, e$ J* S  |% b( ]: _2 f
}/ `( @; K) ~6 \& o; ]* I+ q
void main(void)
9 ?6 b( }( _: F; i8 |8 J{  |$ O5 b, ^9 O! K- K$ N: e5 d
three_hellos();/*调用此函数*/4 X0 J; X0 R0 e% Q, f
}: C7 Z& N8 P6 k, F- d& w
==============================================================
! D! }+ F+ d. k6 {【程序35* p% H5 U+ h0 g/ U' {, J
题目:文本颜色设置
- j. ?: R, u3 B1.程序分析:
: e7 P2 f* t: R8 t& E9 N2.程序源代码:) ~" w6 z$ ^3 w* Y" ]
#include
3 E) S3 U% G- c; uvoid main(void)
* U9 c- i; y. k6 @% I' W1 R( @6 n{
1 S% r  b  Q. \8 k& m, Gint color;
6 [6 Q1 Y; K; p8 C6 cfor (color = 1; color < 16; color++)6 E0 B- P+ Y* ?, F' k
 {# ]2 [6 E; ^$ M/ X
 textcolor(color);/*设置文本颜色*/
' W, @% P2 U0 o: Q' K" G6 q cprintf("This is color %d\r\n", color);  u& K5 V' P# D# [% V8 p6 a
 }0 w7 A3 f# d% t
textcolor(128 + 15);/ c2 H, W! q+ f* N6 }: {% H
cprintf("This is blinking\r\n");4 a+ g. T1 L5 C. O2 X1 K
}0 N% }4 @" G) q
==============================================================; P8 l; z7 c! R# D" t$ Y6 H# S" b3 p
【程序36
, s. D5 C1 {1 w2 O/ e, K题目:求100之内的素数   7 ~" s# f! U' F% t
1.程序分析:5 T& Y* i3 Z6 B. h! x5 q  O
2.程序源代码:" j2 M  [8 t5 W$ @6 I/ M% i( \
#include 9 {4 J' K) a4 [2 h: Z1 K6 R% I0 @
#include "math.h"9 q9 |$ T' f2 F0 b0 d
#define N 101
9 d/ }! w* M( P5 Umain()6 P; ~3 z- H7 ^' h% I' Y
{% a  M6 X, D9 V& o6 H2 Y
int i,j,line,a[N];
0 _# b  `3 n0 h0 ?; H5 M6 nfor(i=2;ifor(i=2;i for(j=i+1;j {
7 D/ X3 T. P. \$ E( u0 e  if(a!=0&&a[j]!=0)
& Q4 n, D: O& c" P4 O" r- N" g' p" L  if(a[j]%a==0)
- @+ H- @- M  x$ j' g; k  a[j]=0;}
0 y/ R5 u8 c0 V8 m4 s+ H6 I: rprintf("\n");
- x0 V' w+ A, T& x, Hfor(i=2,line=0;i{
3 i6 J$ ^8 E$ h. @& n7 b4 a, n if(a!=0)1 \, L. ]7 G  w0 E
 {printf("%5d",a);- b4 {$ E8 r) A1 k4 Z
 line++;}  D. r  y2 u' n. {! q" R& _. D4 V9 T
 if(line==10)
" c3 K! a# P) J" ^$ m& b1 X {printf("\n");1 S  K: ^6 \7 B. L
line=0;}
( q  A5 l6 g# C& ?3 X  S}9 C0 `- y: O6 [3 N9 T$ F+ w
}2 E8 J7 T4 m. q% W, C5 Z& Q
==============================================================$ c- N0 G! |3 X- [4 N
【程序374 R0 T: O, A+ q
题目:对10个数进行排序
  \% S/ x* G+ s( j1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
$ `3 Z# ?# ?. x! i/ g+ ?) r2 t+ [4 l      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
, [, q  V3 I* g! u$ `9 U8 u2.程序源代码:1 A& U9 f. m- K
#define N 10
$ G0 A/ J2 |# u: T/ Imain(), a. g/ B  |# J* R; l
{int i,j,min,tem,a[N];5 N$ U1 w# S$ p0 k! a4 S
/*input data*/
3 ^% _8 B. ^5 z8 H5 k) g1 n# ]( f8 hprintf("please input ten num:\n");
# H) j8 k, i( O3 S5 f: Rfor(i=0;i{% g  }* K& |; D( q9 N$ f
printf("a[%d]=",i);) N0 n8 J0 M% i; M+ k/ K
scanf("%d",&a);}3 {' }) w& `! P" d9 K& {- N: G
printf("\n");
5 N9 L: B6 |1 ]. z3 Ffor(i=0;iprintf("%5d",a);
1 Y# X( E! b' p& Zprintf("\n");
5 U6 }+ M  {. P" X: s+ |/*sort ten num*/3 O5 v! V, Q4 |# `" T
for(i=0;i{min=i;4 b% R+ B3 @" e0 m, @: ?
for(j=i+1;jif(a[min]>a[j]) min=j;
5 e6 N: e. @: wtem=a;- Q( p; X# s3 [4 Q* G0 A, L
a=a[min];
$ P# G' a/ ]; g& |a[min]=tem;
; D+ ~9 z0 Y1 N- W1 G}
5 S$ H. b/ s% g% o2 G' R/*output data*/
7 E5 n1 a0 J4 o$ y8 H6 z! P. jprintf("After sorted \n");$ B/ w, S- ~. `- ?
for(i=0;iprintf("%5d",a);
. [0 |; f, h# D! [- ]}
2 T; l+ U2 \. |9 Q==============================================================. R* O( P" ?+ c% s, ]; e

$ q/ p% l* y# c2 t
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-23 18:44 , Processed in 0.067830 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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