机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2337|回复: 2

C语言经典算法27-37

[复制链接]
发表于 2017-10-7 16:23:09 | 显示全部楼层 |阅读模式
【程序27! E( f, B8 m7 k' x
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
8 C5 J6 T! I/ K1.程序分析:
5 j7 S# I4 {, R3 Y$ E2.程序源代码:5 `, p- p  R4 \4 U* T% K' A( e" a
#include "stdio.h"
# d3 w3 f6 }# n4 t& T$ |) imain()
, O4 ?. E( @" W1 ?" v/ Z{. ~; b  e4 T- G: y! s
int i=5;  s9 `' D9 N! `( v9 J1 t% w3 y
void palin(int n);% C; B# ?! H( q
printf("\40:");3 k/ h, F0 ?" F& h
palin(i);
) W& A4 T3 C$ w9 r& i! Rprintf("\n");
! ]! F* P  Q1 v" H% s8 J}
' o5 x" j+ X" {- f& L% y5 z* B! Ovoid palin(n)
& C1 [1 w8 W5 X6 Z4 Gint n;. b5 H* P# H5 ]) R4 @
{* R" u. ^. `5 ^- ?' y
char next;! v" [1 z" y. A7 x, C9 Y5 q7 ^
if(n<=1)
( g6 B* `* l9 e- g- L: I# }3 M3 e7 H0 k' M {
7 c! E3 o; b# G' G next=getchar();
8 q. ~( Z3 k2 B1 B5 |& D- y printf("\n\0:");
9 V- @# r  q. }( f% i. D putchar(next);
/ k: D! |& P) C/ X% T$ l) P }
1 `* [, b: N! `3 @else# r9 q) ~% T; G- S6 n8 b6 X- z- a
 {5 |# S: Q8 X3 V  N" O+ v( `. |! E, q
 next=getchar();  i5 B6 M, @0 B  C! N
 palin(n-1);
5 h' |1 q% i. ]  ^: f. Y putchar(next);( s3 W3 y; @' W
 }- {: C! q+ ~  l9 @7 A
}/ }/ q8 d% S& f3 X* A" T
==============================================================6 ^' Z3 l8 R- ]) w1 F& H
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
, X1 ~" W" p: j题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第+ J7 [( e. M- W& e; I
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 + N/ X6 c7 j1 q
   问第一个人,他说是10岁。请问第五个人多大?
; q0 g# }5 g  j' E0 A& M1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
; \: U& j' I7 x      第四人的岁数,依次类推,推到第一人(10岁),再往回推。1 X8 f' l; e( z0 b
2.程序源代码:5 W: A( r7 s8 i. O: V8 Q' B7 e
age(n)
, `- p0 P1 X. P  X/ aint n;
/ _5 {% t" ^; I$ \{
5 J+ N2 }3 ]# m5 h1 C: cint c;" E; [( P% f; C" D& K* K' s5 Z
if(n==1) c=10;
4 A4 n6 t2 M4 j1 w) M- n8 U' X8 i0 Uelse c=age(n-1)+2;4 U8 u8 V7 R4 R! @: E' [" ]) ~
return(c);
' ^8 O' w! y; `6 L}
0 s2 N* R* c5 o7 mmain()6 _3 y& p+ s, ?' R
{ printf("%d",age(5));9 Z+ w- e+ n2 G  s& Z
}
! p; {5 |7 L) {- D! O8 f==============================================================
) g, }* _- C& ?8 h& b' [8 x! M2 P【程序29
$ I& ?5 r: ?% y1 Z6 d/ o题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。! M1 a8 E, B! \
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) ; }6 b* [& p( }- P: O' i' B# }
2.程序源代码:
  f# [8 j2 S5 d8 lmain( )
' R" o6 J/ P  r( }( `1 C{
" g  T0 Y  T8 m. L- v0 g% o% jlong a,b,c,d,e,x;. K/ a1 v6 F; e+ y& I
scanf("%ld",&x);: X2 W4 V) w: N
a=x/10000;/*分解出万位*/
& [( g3 W( m; y; eb=x%10000/1000;/*分解出千位*/) p4 S+ }" x. d2 p% R, G& V
c=x%1000/100;/*分解出百位*/+ X/ _# R2 g$ y4 k5 n
d=x%100/10;/*分解出十位*/
# }1 j3 b) w0 Le=x%10;/*分解出个位*/- m' @& l+ Z$ ?7 w/ H. e
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);9 v7 ^3 E( m% o3 l
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);) ~7 h/ _) ]4 B' [# T: w
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);- L6 Z2 [/ I# m. p
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);# E, S" r! H% I. p# r
      else if (e!=0) printf(" there are 1,%ld\n",e);
2 l3 j4 S; a7 ]2 d" u8 Y}
3 \: c  C( S; b. c6 O1 j! O==============================================================3 M' e7 V. r' c
【程序30
- U" H# D. l& d6 W8 q/ K% Z. w题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
# [/ P6 s* g# N: H! e8 Q3 w1.程序分析:同29
1 K& B. g7 X, v8 Z! R2.程序源代码:4 K7 y) n; x* x; O
main( )2 M# \4 E: q5 l: E8 I7 F/ a4 Q
{, z  W) H1 R7 w( F3 W
long ge,shi,qian,wan,x;+ R  e& b- R8 G/ g6 m% X
scanf("%ld",&x);
- f, h- i; h. v( R* J" }wan=x/10000;; `2 E7 u; J' \# G- X/ x
qian=x%10000/1000;
/ ?9 F1 O3 `0 |' o& ~shi=x%100/10;
4 Q1 w; Y- f8 z$ @: D, J0 ~7 Oge=x%10;: A' H4 ]- P* Z
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
6 x# d; T6 o% v( g+ k) _ printf("this number is a huiwen\n");
$ H6 d) L6 f- D8 y' Q( F6 Felse
; N' ?7 V7 }! y printf("this number is not a huiwen\n");
' k% K, e) i& v}
【程序31" L& r  s+ P6 O# Y0 E, ~3 D
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
. S7 t/ }9 b/ n) N4 v" r& l   判断第二个字母。- ?+ h5 U4 U" v9 ?
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。4 M" t: Y# P4 F* @1 r" r5 U% [' C
2.程序源代码:  r1 g- l: C8 l+ o- v# r' U7 ?
#include 1 u- r) @8 l6 p4 P( b
void main(), ?9 t8 X1 }; }' P. Q& ~
{
! Z' r; S; c# ~+ O8 Lchar letter;
- B& u" X: B0 q  z* F' xprintf("please input the first letter of someday\n");% s6 U/ E) m- @& u* }
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
4 X1 k! h3 A3 _" I3 r, I  }, @{ switch (letter)
1 R0 |( S' j& ?1 U$ G{case 'S':printf("please input second letter\n");$ d4 w( M; R) I* z2 e6 T0 n+ i' Q' A
     if((letter=getch())=='a')
0 X& ]3 g3 A8 B8 L" e3 \+ e/ A      printf("saturday\n");
7 k- F; v7 Z4 E% i. Y     else if ((letter=getch())=='u')
4 R" K/ a! ]& Q4 F- f6 X. W         printf("sunday\n");' T# v7 I5 h) }" |0 A5 p1 p& A
       else printf("data error\n");
! S  f6 u7 m: D     break;
& J3 f) t7 E+ ecase 'F':printf("friday\n");break;
2 C7 C0 ^5 y3 q2 H% bcase 'M':printf("monday\n");break;
- |- j- q4 k( J, Acase 'T':printf("please input second letter\n");  Q% d* q; O4 n0 ?8 ~( z  I! G
     if((letter=getch())=='u')
! g- X8 H6 J! b6 E2 a      printf("tuesday\n");
$ _, X4 J) i  r. \9 j, Q% @8 t     else if ((letter=getch())=='h')
( @2 [( @$ n8 [         printf("thursday\n");. M4 E: y& W1 G8 @" p+ M
       else printf("data error\n");4 L: F$ h( v0 E$ a! R- N9 _. y5 d- M( o
     break;
& k0 R1 ?8 I7 m7 B; icase 'W':printf("wednesday\n");break;
. j1 V6 z& Q' B1 W4 A0 p' x2 Mdefault: printf("data error\n");
! y) G; ~; r4 a) T2 U  }
" M8 e- ]& z; T3 E- S% ~$ `* a2 m }
/ k5 ?8 H  i: j/ {}5 M, Z0 a7 g  t1 X
==============================================================0 d# c: ]$ f5 R  g4 P
【程序32. {/ l1 ~! c6 {  m4 X, U5 M1 O& M$ L
题目:Press any key to change color, do you want to try it. Please hurry up!* O* y- N& u, d% x
1.程序分析:            
5 D1 B2 A6 k; z7 C( K6 L9 |2.程序源代码:
" M! H; w. X4 F* c/ m) M9 N6 h0 Q9 i1 E#include
' ?; E' R" S9 E( S8 \8 E: |/ bvoid main(void)
2 V+ `  I5 ~# H3 |6 h* C% K+ g{  P/ j# M! {  L
int color;
* n/ M) s' Z, b* k8 Zfor (color = 0; color < 8; color++). c! C* y. U5 t+ H
 { 5 x& [% a" D5 G6 ]  D
 textbackground(color);/*设置文本的背景颜色*/
9 g) e/ t4 o! `* u/ q cprintf("This is color %d\r\n", color);; @7 G8 f7 y4 x5 C5 E2 D  u
 cprintf("Press any key to continue\r\n");9 G1 ]) z2 ?0 a: E0 W8 a/ d
 getch();/*输入字符看不见*/5 O, r; P, Y( |6 t# Z( d7 @  w# s/ z
 }/ l* v7 J7 p- _: U7 A; o% H) P
}
: n( r0 I& T8 D, w; |==============================================================
/ R: e6 R9 S: I& @1 J【程序33
2 ~# y- B3 r* j) [# |' B题目:学习gotoxy()clrscr()函数   ! F; @6 z/ d+ Y  j
1.程序分析:
9 e; f& h2 h- k" Y2.程序源代码:
9 H0 A4 E! I" ^8 v8 G  [# i#include $ C+ Z. X0 `8 \: b; H
void main(void)
4 U/ l! q0 J, _) X7 u4 \{
1 }$ c0 v* ]* a: \$ c/ aclrscr();/*清屏函数*/& N  _1 s, p, i2 n/ J8 z) [" E
textbackground(2);
1 K1 P9 |% i) J2 P+ W! _- Lgotoxy(1, 5);/*定位函数*/
, I& P$ s$ P* [0 K  U0 xcprintf("Output at row 5 column 1\n");, E+ v! t' s' N: |6 ^7 R2 g: S
textbackground(3);
+ ?$ c5 i8 m% Z: y% H7 Z5 Pgotoxy(20, 10);4 q5 S. t; o* K, D/ ~, u
cprintf("Output at row 10 column 20\n");
" f0 Z4 L$ T- U( l4 X! s8 \; k}
. ~3 d4 |1 W3 c$ w1 \4 D) j==============================================================
4 k1 {+ x( T2 l% r) k8 P【程序34
  I* F) ?9 X- ^7 A+ Z题目:练习函数调用* V1 n: n- y; Q
1. 程序分析: % Z' N/ _' J, d/ N3 A/ a
2.程序源代码:
8 G' F. x1 f* w8 L#include
" ?4 a/ o0 K+ N& z/ U3 u1 H6 Z! tvoid hello_world(void)
" Y7 I8 f( a5 n0 [& h8 F( W+ O3 C6 I{; C1 e2 w6 I, h5 B4 S
printf("Hello, world!\n");
3 }* ]- V0 q9 m3 V  s}
5 W$ D, |  o% kvoid three_hellos(void)
# T+ T- r& W( \' l: Z{/ A9 P: ^  J. _/ _  {4 \5 u- }
int counter;
1 Y( q8 w! E& Y6 n8 y/ F0 h* s5 m" H# sfor (counter = 1; counter <= 3; counter++)
' Q4 [% f8 V- ghello_world();/*调用此函数*/
* s9 \, l* ]5 V6 O}
/ w) \. A) ?- y% b2 Hvoid main(void)& r4 O# k3 W" [; _4 w0 |
{
2 U) Q  s0 K, rthree_hellos();/*调用此函数*/+ K" g) f) `# \" ]
}* \2 o5 c9 n( U( |' B- y  w, H
==============================================================
  s; b1 m- ?& z, n) f. t# ^% g【程序35
! F$ ?/ U+ u' Q- w; j题目:文本颜色设置
1 F% ^( @& b; K1 b- R- P1.程序分析:+ M2 b% e5 r+ P8 I' L1 x: y2 D5 ]
2.程序源代码:: ?! I4 R$ u$ Z  Q- B! u
#include 1 F$ O) M* u' a- I) {- B
void main(void)
% u7 Z- `  n; T8 ~8 [, A! a; S4 A{0 p  x& k3 C4 [. ]$ K  y6 I) q
int color;- e% _5 p+ x5 D. S
for (color = 1; color < 16; color++)
4 Z2 R) w' y" b' s' K {: [6 C0 n8 H; l& T7 {6 f
 textcolor(color);/*设置文本颜色*/
7 O5 {. \' \* T5 V' j- H cprintf("This is color %d\r\n", color);* o6 @) G: |4 Z4 a3 n* S
 }
( \4 e; k; q1 K5 X/ qtextcolor(128 + 15);: i% h; u6 M& L7 ?( c& F& w& R
cprintf("This is blinking\r\n");
5 n: \5 }0 R2 T7 n8 Y, A}
1 B' V, H- H  v7 t9 q" p==============================================================, _/ u) G$ x) F0 \
【程序36
" K, x5 c7 b9 a* J8 S& J题目:求100之内的素数   ; m8 d( V; R  ~7 D. u
1.程序分析:
# @! U. i# U& P$ `* i8 Q2.程序源代码:9 o/ c" y' E# S) B
#include
- Z+ A- g9 {  T$ H#include "math.h"
6 c& S: B8 ^" W  _#define N 101% i* f3 ^# x' J8 B2 J
main(); x5 [" {: V7 f7 _' [) q
{$ v4 `7 m8 T! m0 p/ o
int i,j,line,a[N];4 Y& o0 S  ~5 @- b8 l
for(i=2;ifor(i=2;i for(j=i+1;j {
' e4 \; y6 J& k) q; D7 h: w  if(a!=0&&a[j]!=0)
1 U/ Z7 B0 {: Q# u1 n6 }  if(a[j]%a==0)8 i. m! i# C- ?3 j; v$ ~
  a[j]=0;}
9 b3 G8 ?: c9 i7 sprintf("\n");
2 N9 |1 y( X7 @7 \; m! `for(i=2,line=0;i{
" A$ H8 o9 I* y+ e3 u if(a!=0)9 V" E4 M: L+ k
 {printf("%5d",a);
8 [8 V8 c! e9 X line++;}3 V; Q( \& Y% H) ~+ w
 if(line==10)6 e+ Q0 h1 i, d* N% v
 {printf("\n");9 }  K+ F4 ?" |/ a! B2 J5 R. D
line=0;}
5 |, X  B6 y' A# c2 Q) q& Q}2 G' O. b; [3 S( R. M7 b- W
}
0 Y! h2 c: ^$ i: O2 M2 y+ h==============================================================; Q& R  P; g3 H5 v" i. A
【程序37
2 J" V2 {. f* l" L题目:对10个数进行排序4 E# b7 D4 N5 U. O7 ~
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
. Y9 Y( g; ~' d      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
- U" T: P) y) g8 w7 S6 u2.程序源代码:. T$ K' C4 v2 Y4 i
#define N 10
! Y4 X: J/ q& v1 ?1 ^+ N9 Kmain(); A/ N) U6 R, c  ~$ C" G' m3 _* x
{int i,j,min,tem,a[N];6 r1 w+ b5 O0 a
/*input data*/
+ @# l* R, y( {8 u: Aprintf("please input ten num:\n");
; P0 l" k4 g6 ?- W* d- ?, nfor(i=0;i{
+ K" f. h/ F* V1 Zprintf("a[%d]=",i);
' G& U+ ]/ f# Q3 z1 l( ascanf("%d",&a);}: w1 C( y0 _4 b  \/ q
printf("\n");
+ o. e! N% B# l% G3 U) }' zfor(i=0;iprintf("%5d",a);# M; Y$ G1 t3 H0 f3 q; c; X% N( E* Y
printf("\n");  I+ `9 ]/ b+ e0 q' h, v- _% _
/*sort ten num*/
) g/ e) b6 \* o5 B. V$ N* E" \for(i=0;i{min=i;
- _* Z. P) U6 a% Z% X, _, w- x; i- Afor(j=i+1;jif(a[min]>a[j]) min=j;
( Q' Z) D  M7 N# B5 i% @tem=a;
# @' [. W- y" H3 p3 o7 @a=a[min];
2 [  o' u/ V! b8 u+ `a[min]=tem;
* _$ F1 A$ P; e  N. w! y}0 O  S4 F0 h: I1 [
/*output data*/* H5 A; F8 x" i+ E/ b! ^
printf("After sorted \n");1 l* ]; B0 S5 g) z( l
for(i=0;iprintf("%5d",a);
& U4 T+ T9 {' t}1 E4 [+ }2 ]2 V7 h( N9 _# V5 p6 i( w. `
==============================================================
( R4 h  b) O: H0 S: I3 G3 _

# H2 b  l, {) l! C3 m
回复

使用道具 举报

发表于 2017-10-7 16:29:57 | 显示全部楼层
十五字十五字十五字十五字十五字
回复 支持 反对

使用道具 举报

发表于 2017-10-8 11:09:22 | 显示全部楼层
C==
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:34 , Processed in 0.061886 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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