机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2222|回复: 2
打印 上一主题 下一主题

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序27
. N% f- X$ e3 E/ }  ?题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
% v8 q) @8 q: Q- h1.程序分析:
; t$ @3 A4 c/ W! w% O2.程序源代码:
9 f" ^3 W) f/ J. ]/ B#include "stdio.h"/ s  `" z3 @4 x/ f3 f6 F
main()% n0 m2 O( f5 U
{7 _  z% o# Y! g- M# W4 u
int i=5;
% P8 p* f* T" [; ?void palin(int n);& L1 l! _  T9 t/ y* ]+ f
printf("\40:");
# o- n9 h+ @  [9 q  q* Y* r$ N5 gpalin(i);  V) D& {( Q2 E! z
printf("\n");- g; o% }! A& K3 J
}! d3 j% ^$ U1 q- ^; R
void palin(n)
  s$ l( U6 h9 \6 m9 e# b8 m0 x( l$ s3 tint n;% W+ R( E* F; ^0 I2 P' K. u" M- ^" k8 ?
{$ P. e) a1 u) W, C% S& C2 O4 n
char next;0 U5 Q% n% D3 Q+ I( t. I/ O( J) b
if(n<=1)& G0 w/ ]6 m1 g/ z; V7 g$ c1 T
 {* X5 v. f' e  a& ]6 p8 s) C8 M( S
 next=getchar();
3 ]4 C( y) \: @- C3 p3 F: u6 f printf("\n\0:");
" g7 u2 S; j; x& i% ?4 M* ?( F% n$ s putchar(next);
* `( @. W; d; z) j0 R) H5 v; r }9 }, H# \1 s$ s
else3 `0 V) j1 M# U& N, @+ e2 s, B
 {4 L. e: _% a2 d- E& X
 next=getchar();, i3 W1 X; x8 r( O- f' \
 palin(n-1);) Q1 ~( L2 g/ K
 putchar(next);3 W8 y5 k- ]3 E* ]8 d* a  m5 l
 }
' u1 E. L& W$ j9 k7 B9 ~}. B/ x. k* Z0 c; A6 d+ u
==============================================================
( G$ T6 U1 T/ Q2 a( Q【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
6 L2 T8 z7 O9 U& `) [题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
* T3 o5 G, U% E0 ]2 |& R; I! s   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
. U/ G5 L* ]4 X7 R   问第一个人,他说是10岁。请问第五个人多大?% _* E2 ^, @7 E1 E5 Q: g
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道. A3 j/ C: l) L) e( q
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。* W* a2 H. V$ U5 n
2.程序源代码:
# W# P( Z/ l1 D; vage(n)
9 y$ E3 a7 |+ @9 \3 P( j, h& Y( Q5 Aint n;
2 f" E$ c) E0 \5 F2 J/ @) r: Q{
5 J) s: n: e( u+ b! Kint c;
# _# p9 W. r- }8 B+ k' }$ oif(n==1) c=10;
$ C+ \2 o0 }8 ]) z7 u0 }else c=age(n-1)+2;
5 M* W# V' @. [% A$ m9 L( Z9 S7 Qreturn(c);
3 q4 |" x/ C, h; \; K/ c}) B! j8 Q  H& ]# d, G& `
main()4 M! h+ e. Y. W& L6 f5 N
{ printf("%d",age(5));
9 P2 @( k  l6 I/ {}* ~# b$ y2 Y' `- F
==============================================================: a3 h" G7 v' o0 n: x1 s. p
【程序29
  t1 X  p  A& R, c% S) Z6 j$ }1 N题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。4 z7 T$ p  M( T
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
" ~& O1 t  T' F" {' z* g8 ~/ O2.程序源代码:, d9 b8 f2 q9 O9 {1 W- y8 a+ q
main( ). Q" Z) t8 z: c- U/ h- A! M) g
{
* O) i# ^& c: K% Olong a,b,c,d,e,x;  _* @5 c6 y5 p+ \5 [
scanf("%ld",&x);- o: t/ D9 v. W* }
a=x/10000;/*分解出万位*/
8 i4 `" w  _1 t! fb=x%10000/1000;/*分解出千位*/' w9 I& X1 y8 A5 D1 ]6 _9 n
c=x%1000/100;/*分解出百位*/" l' |% W3 K7 r# N
d=x%100/10;/*分解出十位*/
" Y4 W9 s4 y% l& K& M1 f6 \e=x%10;/*分解出个位*/
1 c; w7 F3 j: w5 oif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
1 S5 k5 E  Z+ X" }& k* G" g; relse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);) p  W, [  P9 N* _6 ?
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);9 d) _6 i3 Z& s
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
' o. ]* N: F. r$ V: N# V& z      else if (e!=0) printf(" there are 1,%ld\n",e);0 G1 [- M8 p8 n8 `! Q! q3 w
}
9 E+ _: p* b9 ^  n/ l$ N4 y==============================================================
: Q7 @+ g& W3 X: |【程序300 }" t! w! g( }  N4 L
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
" H, w- Z; C( l3 r" K  p5 M1.程序分析:同29
) O' [- a. v3 G( H8 w2.程序源代码:
: H4 O) F0 ?; b4 ]main( ); l& H) b1 m( w+ `: p0 R
{' \  P; B! B1 n
long ge,shi,qian,wan,x;
! }  P. q/ L" j; ]6 d- oscanf("%ld",&x);- s: L& N4 v: T' j: Y5 {9 P
wan=x/10000;
5 b- k: b3 |4 k6 m0 u4 I) B" X8 [qian=x%10000/1000;
/ c; Z3 q( \4 ]$ fshi=x%100/10;
4 k1 Z$ n- c! Z: }7 T( T3 wge=x%10;
' C' I2 u9 T" c; |, J3 t3 A  ^7 fif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
( \! J! l7 G/ S: {+ \ printf("this number is a huiwen\n");
" T* f6 t5 |% O5 M$ a& ^5 ]else
/ M) I0 u9 t0 v$ |( T9 `! H7 J printf("this number is not a huiwen\n");
  C7 w+ z& i4 [) L8 e* F$ s}
【程序31+ S0 l$ R: z) B$ p4 V0 Z
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续2 k& W( H$ e$ e: P$ a
   判断第二个字母。0 `, q; r+ [6 i5 F, K2 C2 p
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
! |# s% d# f; v' @! p' {2.程序源代码:% o# K# _' Z9 `2 f9 k; d8 Q
#include
. M! t/ [  _* B. W' Avoid main()! H0 t; j7 C( x2 T
{
: F9 s' z% o. ~char letter;, ?5 a% L0 z: k* a' l7 D! E: t/ F6 H1 ]
printf("please input the first letter of someday\n");
7 Z6 v# H; s9 S5 T* T2 |4 W) Ewhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
' v4 {4 C* ~: H6 k{ switch (letter)8 U. T3 S! u, z3 u/ U
{case 'S':printf("please input second letter\n");
. [: f* K8 Y( t4 `     if((letter=getch())=='a')
6 s- M/ ^5 j+ Q! ~      printf("saturday\n");
4 R& @5 h% V1 P& ]2 V     else if ((letter=getch())=='u')# P8 d& ]0 i; ]+ }9 @
         printf("sunday\n");/ `/ ?! G4 h$ f- ~/ B
       else printf("data error\n");7 q2 w; t) r1 i$ n
     break;
; B! [1 o/ J! Z! g! Xcase 'F':printf("friday\n");break;+ m+ |% u9 P6 _& c. P' \
case 'M':printf("monday\n");break;) E2 V3 u* h- F+ A6 {4 T7 y
case 'T':printf("please input second letter\n");
2 T9 W% S% @& F( c. ^     if((letter=getch())=='u')) @+ v  P( \3 w2 m: m! }% {
      printf("tuesday\n");
2 C4 o' K) X+ o: w+ f     else if ((letter=getch())=='h')1 ]* n1 a  z- ~- `7 u  W
         printf("thursday\n");5 i5 t! H4 f* g- M: [- F# m
       else printf("data error\n");( k2 Y# @. o2 ~7 a4 h
     break;8 l6 R  l- |# B
case 'W':printf("wednesday\n");break;
3 g7 _4 B: G) \$ _5 edefault: printf("data error\n");. y+ k& W1 P+ b
  }
# ]7 F2 f: S/ v6 Y' g5 e$ j# y }" l9 W7 K& X8 S8 H, j
}* @2 D0 E: u% Z& Z% B
==============================================================
3 L2 I# U; k8 f2 T' g【程序32
) |& U6 _' y1 _5 S) O0 ?( o题目:Press any key to change color, do you want to try it. Please hurry up!
# G3 w" j6 |* X/ g7 G* w8 Q: L2 _1.程序分析:            
# k* o: i0 n- l5 P, q0 A/ n- \2.程序源代码:
" V7 _8 [0 L. T' T* P#include & r. P4 _/ h, e) O9 d& V. |, j, ?
void main(void)
  o7 H2 M  r8 q' w{; v: N. D0 P/ P. E! }
int color;( J; |* z  B1 {. B/ M8 H4 x
for (color = 0; color < 8; color++)
5 P+ _2 C" ]" W {
& j5 ?) M0 \( N3 M' y( V$ C9 M textbackground(color);/*设置文本的背景颜色*/
% a4 Z. y+ O: i7 s' u# k4 A cprintf("This is color %d\r\n", color);5 U7 |# O3 m+ I- c
 cprintf("Press any key to continue\r\n");
! z# n! x- t' ^/ d+ ]# {& E1 ? getch();/*输入字符看不见*// {& m8 @3 w5 H) a; A
 }/ c) @* r) @3 `. v# C
}8 `$ Y' Q5 w3 c
==============================================================5 l6 o' i8 a3 d# R& E- c7 g9 E& i
【程序33
# d5 J2 \1 t( s4 D5 l; W5 Q, g. }题目:学习gotoxy()clrscr()函数   
3 S+ W; x* e* ]  w+ @% T2 b( D1.程序分析:5 G5 ]2 Z+ R+ [/ s; h: X. j
2.程序源代码:
) k$ g' g% C7 X/ \9 N# s#include 9 G& C0 A4 u4 ^$ E0 r2 q+ y. x
void main(void)# H: |" ^  @3 J+ U
{- H. {- B7 I& f6 J6 I8 l1 Y1 h
clrscr();/*清屏函数*/
. O$ q' {# X% n5 S2 [textbackground(2);
) ]2 @4 [$ B$ Z6 I2 U5 \' R7 Egotoxy(1, 5);/*定位函数*/
( w% \: I5 g6 [cprintf("Output at row 5 column 1\n");
: Q) R2 j: `) Z+ ytextbackground(3);9 _6 G* l9 n; u% [6 T9 J
gotoxy(20, 10);; ~: w7 z, `$ t1 o  B0 w/ v+ C
cprintf("Output at row 10 column 20\n");
8 G7 J0 e8 ]( ~* w/ A- b7 Q}
* E  K' u* _- V% q==============================================================3 [  W+ W: V" w% O' E9 [" O0 H
【程序34
" h  l0 Y! c: P0 ^& t( }题目:练习函数调用2 \7 j; \# I8 |3 i/ N% w
1. 程序分析: 2 g" a1 Q% Q% {! G
2.程序源代码:
$ }5 G8 W# x9 {#include 6 J) \. i8 z. P6 {  Z) I
void hello_world(void)
! U; R6 y8 n0 ]( q% t# Z{1 k3 F  R! {4 P8 o9 _* T0 \
printf("Hello, world!\n");
6 ~  X/ f( S5 g}
5 P- l2 W7 g9 [% Bvoid three_hellos(void)
9 U( a9 r2 I7 j6 d9 g{- P* S7 E# `# Z7 y! T# y5 [  f
int counter;8 n" k6 G2 r7 _  u/ S6 @0 y  r3 _
for (counter = 1; counter <= 3; counter++)% B$ A# {5 w1 y/ F7 `" G# N
hello_world();/*调用此函数*/
$ A7 N( e/ S+ A6 G}; |7 G, D: L% r$ D; A1 e9 o) U$ T
void main(void), f6 q8 T: k% n2 A$ c1 v
{
5 T( S9 M6 r8 E7 Z8 _! nthree_hellos();/*调用此函数*/
7 W8 j2 u5 z7 t}
) z, a2 z1 c* ^) ^  V7 B# R7 U- J==============================================================
* l3 T% i1 L) }  q; `【程序35
7 X  @' ?* o' C8 U题目:文本颜色设置
% L4 H3 ^- o( Q( P" J1.程序分析:( m: G- g4 S/ A5 s' n9 A& h9 Z- j
2.程序源代码:: W% v, [; L- N. d# @, m
#include
0 b1 p; O4 c  ~5 o( q* M& ovoid main(void)
, [+ [( o& o$ y/ P- e4 N/ ~/ P+ D1 t{
& {- c5 P% q+ A6 j1 x" _6 f* d! J4 eint color;" d! q+ R6 _1 u. a2 y! N" D
for (color = 1; color < 16; color++)! e& c0 [' B- ?3 d- C
 {
2 J- b: y6 J1 S9 k6 m textcolor(color);/*设置文本颜色*/
1 K0 a- `/ j/ @/ w cprintf("This is color %d\r\n", color);9 N+ C$ s- H( K1 L& N0 c  P( @! Q
 }* ~& P( N; h7 v- z; `5 j0 F
textcolor(128 + 15);
& }' B( Z' b3 Z2 `" V/ k. _2 Qcprintf("This is blinking\r\n");
/ h1 m. ]1 [" L, |! d+ Z}
2 \( |$ R7 e( d! ^==============================================================1 ~, a. X5 h4 }
【程序36# J- V6 d4 n0 y2 p! \! v
题目:求100之内的素数   + u7 V7 L/ F& f" q' W: M5 T2 {
1.程序分析:
- x4 ]2 Q2 E. _! _1 L6 a2.程序源代码:1 P  @+ K2 o& F6 j- |- z
#include
* D: s4 V5 L. \; X$ K#include "math.h"% v  W* K) R. x6 V6 q4 p2 \
#define N 101
* M  \# X& A$ ~3 x) n; i1 E6 D/ L( l4 Lmain()
! F, `+ f" g# W: r' T3 s9 F{2 {  o; N% v+ I3 N/ T- [9 w' }
int i,j,line,a[N];1 [( M& [5 R& U' C
for(i=2;ifor(i=2;i for(j=i+1;j {* }+ g% n3 A7 ^; G1 S' T1 [3 f+ ?: j
  if(a!=0&&a[j]!=0)
7 h- f/ u, s2 b- \' t  if(a[j]%a==0)
" o7 Y* e* m# N7 G  {1 ^# [7 ]  a[j]=0;}+ Q+ i; R& r( r8 i9 o
printf("\n");
, R$ g& I5 B# Kfor(i=2,line=0;i{
1 T% N0 k& R8 ~$ U if(a!=0)
. J; V2 s# y4 e( v6 a) g# b4 O {printf("%5d",a);
, N* S9 e/ i' ~( P2 D- R# u; M! J line++;}& T0 P( w+ V9 |9 }0 O9 i: o  s
 if(line==10)4 R& S0 R/ Z/ M- Q' u$ H
 {printf("\n");
( m, L1 t5 F8 h  U/ ?line=0;}
$ x# ~; p1 ^9 B( R2 v}
6 T  X" W. l! B& Y9 \}
: r! i9 X( _. g% r8 l( l==============================================================
+ h9 N( e1 ^" H2 M8 D( k7 F; [【程序37+ K1 `, `* Y8 `1 i; c3 q
题目:对10个数进行排序, d! O" v9 w# m: m
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
& u4 Q; X" X) {, n6 v# x. ?, q      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
5 z  v! ~( W, n- E2.程序源代码:
8 ^2 i- P6 ?* D( ~& f#define N 10
6 W# D" s5 K$ j0 E4 F) ]! Z1 C7 Smain()
! `# t. m- k! w3 _{int i,j,min,tem,a[N];
! x0 a- G% J/ l9 x0 y/ z/*input data*/
# U" N7 H: t/ p9 }- R) _printf("please input ten num:\n");7 ]' X7 ?1 F/ B& `3 |" ^
for(i=0;i{2 }* d- K3 ^% M, u" r% P+ u
printf("a[%d]=",i);
: u8 G  O( S. I2 h3 f: o' Sscanf("%d",&a);}( d$ U" B' m* x, r
printf("\n");$ B3 q3 H. r6 L* L5 T& m
for(i=0;iprintf("%5d",a);
5 p5 G/ A* w+ Pprintf("\n");( i  ^4 m$ }4 ~& ^
/*sort ten num*/+ _( p0 x) ]! A) B& ]% E, i
for(i=0;i{min=i;
) @" Z; g- T% @. x  g( \, N" Xfor(j=i+1;jif(a[min]>a[j]) min=j;; F8 X4 W5 m: o
tem=a;
8 w2 F7 J% U' }, [  [: \$ m) Va=a[min];
- V5 A% B6 ?! l/ Q. Ba[min]=tem;) i: p  Y* E% \: @8 Z8 {6 K5 `8 q: k
}
$ [% |5 |" J5 |5 j2 k) C. |/*output data*/$ ^7 i2 q* B& B3 r0 D0 f; |# p- t
printf("After sorted \n");4 A' d" I7 q5 U6 ]; w7 M7 y: w( x
for(i=0;iprintf("%5d",a);
8 H& i; l" Y6 A" b% x1 d}  M/ ^" z0 C6 B  `' b* f# X
==============================================================8 `1 ~3 U. n" _" h
" N  \: G- T: V+ ]8 C
回复

使用道具 举报

2#
发表于 2017-10-7 16:29:57 | 只看该作者
十五字十五字十五字十五字十五字
回复 支持 反对

使用道具 举报

3#
发表于 2017-10-8 11:09:22 | 只看该作者
C==
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-23 08:28 , Processed in 0.050660 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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