机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序27: O# T5 ~9 c+ _
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。9 `; {( \! r2 F
1.程序分析:0 t+ M2 P! z. R$ g4 ~8 S
2.程序源代码:7 z; s3 u& N7 s7 n1 O3 q) O
#include "stdio.h"
1 _1 I1 ~( Z/ |) D5 x7 G! nmain()% ~- s+ ?9 B" t, V4 Y5 U
{
+ R' v9 Y: x& D# [6 P9 uint i=5;2 O- I' ?/ Y9 n- m4 q
void palin(int n);1 z  n+ m. `2 {4 r" w% m" w2 Q, j
printf("\40:");
- n( e  c9 p. @% M) p) `- p' ipalin(i);
! Z# O0 X5 q: ^# q2 x4 A* z% Tprintf("\n");
: g5 h0 z0 O8 S1 j$ Q) _' R}
! X4 `$ L; l; W+ n' Pvoid palin(n)
/ f% ^/ u3 n( c/ g0 P$ hint n;# g& J/ U) ?( [3 F
{
6 m' y! F6 `& V. E2 Q* {- U" gchar next;) S4 i/ ^6 m! H" t6 X! r' m3 y$ h+ c7 z$ {/ E
if(n<=1)% a( y, u  P) F
 {
  n4 w$ b; ?; L* c0 S# _$ \. C: I next=getchar();
" r& m. N, g# y  ?5 D! ] printf("\n\0:");+ i7 j* }6 S& f4 T# V! j  \3 {
 putchar(next);
; y, @! m% x4 K9 b# L7 ]1 ^. T! U }
4 X# |$ V9 J) {4 h4 ^else: s: p5 c8 b: `
 {9 T5 i; A5 u" w' Q& n
 next=getchar();
: c0 ?# H- t8 G! `( w palin(n-1);
) x9 I+ G. O7 i7 Q; ?* E+ E putchar(next);
3 Z) q7 m/ }0 R9 n6 J7 ~! L. [ }6 F, t# y8 _# |4 D3 {
}
7 t  y2 x% i, Q- U; v8 m==============================================================+ R1 ?6 e6 O/ j! T6 _* Z
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
- {- }, v* D! j, J' ~" B题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第' a4 ]/ ^- Z) F5 @: Q5 c- ]8 |
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 ' C9 c- l) M# M
   问第一个人,他说是10岁。请问第五个人多大?' x5 x& R! v3 P6 n" q- V
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
0 T2 B; U) G$ y% z& D3 ]  R# S' n      第四人的岁数,依次类推,推到第一人(10岁),再往回推。3 W- R6 u' Z! S# `% f* U& Z" f2 S
2.程序源代码:9 w, z9 A2 [2 F5 q! `1 p
age(n)1 f" s) T4 c. v
int n;
+ o0 v/ w( t( Y7 \{
& n5 `# U( h2 p" ^) lint c;: @" C0 N. O2 R
if(n==1) c=10;; r% @4 w; ~5 _! U4 M. ^/ o
else c=age(n-1)+2;. A7 f) x  {/ \& H7 t' T) d
return(c);
, l: C+ p0 P( i}: ?" q# d5 s" r
main()
, s* j2 q: _3 [# w& C{ printf("%d",age(5));
. J. e) i" i! o* A}! @& ]( M# M0 G( o  k, \
==============================================================9 N# h6 }* w' e
【程序29* L2 n  S6 k( ?4 I1 [3 v
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# {9 G- _) U% q2 x% ]& `1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) $ ^  C8 b' m9 n. i) f, F
2.程序源代码:
# g8 g* r/ {; {! Bmain( ), ?" M1 C, w- V) A" h: J/ A# t
{  l0 b9 b2 p  W! x1 l
long a,b,c,d,e,x;
- }  [3 t% ~  L) ?scanf("%ld",&x);
% F/ x5 A- d# o2 D3 W/ l) Fa=x/10000;/*分解出万位*// E3 w3 h3 a# N) q
b=x%10000/1000;/*分解出千位*/
9 K5 y% R$ {$ |: Z$ Qc=x%1000/100;/*分解出百位*/
& h6 r3 W/ q% E. Wd=x%100/10;/*分解出十位*/
/ |. O" K# ~5 C# P- Y/ x8 we=x%10;/*分解出个位*/, E) u) t( b# O& b- m3 N
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
/ f& i/ D8 @- U; Y' u) welse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
! }* g3 J2 K2 p! X  C* T  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
  j7 P, X# X0 l) m5 m    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
7 |4 ~" l+ Y# J3 b5 {      else if (e!=0) printf(" there are 1,%ld\n",e);: e) h7 ~) @5 z, z! O
}
& |, e9 {+ G+ ]4 r' t5 g: w==============================================================7 r7 h5 V& \$ K
【程序30
. X. ~7 A, ]! ~) ?+ U题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   0 v; b. e+ Y) E5 |3 H. i
1.程序分析:同29
" i" f; k! a* Q, d' ?; [2 h+ W2.程序源代码:
6 v% |& k; Z: E# N* v( [main( )
% m& M) b4 s) C" F7 g( _) z{& v( v- m, }! Q) W1 X8 [
long ge,shi,qian,wan,x;: L+ M9 N' \& @( S
scanf("%ld",&x);1 C% }. R) W0 y3 f4 u5 l$ Y/ i
wan=x/10000;
( y* @* G) F# I4 k- Z; Eqian=x%10000/1000;
; l, G) c0 \3 v' Sshi=x%100/10;
/ I- R3 i" u, m# P* F4 R6 Kge=x%10;
  \3 c1 m. Y+ N% Gif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
( Z7 T2 J* r1 h& K5 Q8 Y+ F printf("this number is a huiwen\n");" f7 U$ o% d- I4 j1 y- b- P
else
1 H8 z+ r- Y% d7 ?" `5 W printf("this number is not a huiwen\n");' d1 _' l- h8 B* N5 z2 x0 j0 k
}
【程序31* d2 c0 Y% u7 |$ h7 r
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续1 O" R* Y" k+ y' K. D! |, \0 I* j
   判断第二个字母。# v2 b. P( @2 d! \  M) b' f
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。; N6 W0 O/ |+ a" |' k% |
2.程序源代码:
* Z- U: |& V* x#include
! D$ r3 p* }# |- w5 t0 v" ?void main(), P" L! V- w* H% g& ?$ t
{
5 b7 x' ~; `: G. Qchar letter;
$ W9 x6 z% L& J& Vprintf("please input the first letter of someday\n");; h" P1 K( R% m0 w6 e
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/( g: w* [( f% H2 f: b3 W
{ switch (letter)
6 h* p( }- d  T: f  D{case 'S':printf("please input second letter\n");
$ @0 q( O) b! I     if((letter=getch())=='a')
# r! t$ D' Y! I- P      printf("saturday\n");
( J  |( D5 r- L  ]) i     else if ((letter=getch())=='u')% b" C, V/ k/ _! [+ X
         printf("sunday\n");  j( F" o% {) [, j
       else printf("data error\n");
( I7 `' O: Z. X7 P- V% g' r1 W     break;1 [' V* b* Q6 I9 E
case 'F':printf("friday\n");break;1 P: l8 n+ f  _$ P* v
case 'M':printf("monday\n");break;
6 g" C, N7 v( L  n0 Q4 Ucase 'T':printf("please input second letter\n");
  {- `$ z+ q# |& }4 }! O" z8 {# ^7 \. m9 w( U     if((letter=getch())=='u')
* x; K- @: `$ b2 O9 s3 K      printf("tuesday\n");
) H  K8 S2 |( j' |4 Y# \6 }     else if ((letter=getch())=='h')5 G- X3 f; R0 v  V+ m; h; U
         printf("thursday\n");* R5 V( K7 `8 s2 Q5 A5 P/ }- `
       else printf("data error\n");
- j& e1 @; [0 i, b. B     break;
% @! G. K0 Y5 |4 i' A2 Y' K9 P$ Pcase 'W':printf("wednesday\n");break;5 o8 ]1 F6 h6 Q0 ~
default: printf("data error\n");4 {# g% y$ ^$ C" w9 Q! e1 o) S( w
  }6 L/ p, g/ s- l
 }
; i& `' T. e2 N( d* I2 c1 z4 z  e}  i5 q2 w6 c7 {9 z+ Q0 }' i
==============================================================" l: r$ l; v/ H* m3 ?4 d/ @4 b
【程序32. R8 ^. q5 G- ^: G6 \( C
题目:Press any key to change color, do you want to try it. Please hurry up!
9 q; b% V' D) B$ |; l1.程序分析:            
$ y% @) o2 l& @6 p& j6 M2.程序源代码:: M& l3 V5 d, S+ a3 a
#include
) u3 U" z& W- M4 ^2 c5 M( {1 Bvoid main(void)
2 O$ J' J4 u$ @{
: t7 b7 d( g; B) r" Y* D; Pint color;
4 H% r% V/ _5 P/ ~+ a, jfor (color = 0; color < 8; color++)( c0 q. s; h- }. j
 { / V% A) `6 S: f5 Z! U
 textbackground(color);/*设置文本的背景颜色*/8 ^: ^7 d! d' D
 cprintf("This is color %d\r\n", color);, d& {0 v. ?! V" I! N
 cprintf("Press any key to continue\r\n");
0 b+ K* Z$ c5 V, q7 L getch();/*输入字符看不见*/  u6 J  Y. |  T! ^% b$ O  ~
 }
4 n7 e% s6 l: A5 S}
1 c8 u) v7 K0 w. L/ l==============================================================
# Z9 w3 o3 _( {【程序33
6 b( a) k" m: X4 Q3 V' V题目:学习gotoxy()clrscr()函数   * k. o! ^: C8 |: }
1.程序分析:
, r+ l- N# b4 D8 Y2.程序源代码:7 E# ^+ y. T3 `& e  \. K$ ?$ D
#include
9 W' E( F2 _+ b% A5 ~8 h7 m$ d# tvoid main(void)' ]& N7 V+ |" l- K$ C2 w" r. \
{
2 V$ |- z2 r- R2 uclrscr();/*清屏函数*/
/ U, C7 L9 Q) f% v7 ^. ptextbackground(2);  b  p2 Y6 p& F  Y' r$ ~
gotoxy(1, 5);/*定位函数*/
2 M& B' N9 a0 o- Z! Ycprintf("Output at row 5 column 1\n");. x2 R; b- @& e
textbackground(3);3 G$ f; L1 l+ W& z; Z  L
gotoxy(20, 10);# ~  y) D7 o) J6 O" ]& M/ T
cprintf("Output at row 10 column 20\n");8 r2 q3 }6 {( w/ V
}
- X( u1 r' t" r7 N9 s8 A==============================================================
* @8 q8 ~, H; Y+ K: q; Z【程序34
8 K, D9 }0 U( E; ^5 J题目:练习函数调用7 r4 o5 x& j. P4 \! d" _& |+ n8 _
1. 程序分析: 9 |) A2 z9 h7 W9 K
2.程序源代码:
7 Y$ c8 ]7 f1 r' w. N) d7 e& |#include
; W/ L- j+ P- H/ O- lvoid hello_world(void)) ^+ K, N$ g$ ?% Q0 @
{9 W1 `" Q5 o- a8 m  G! H! ?' O2 d
printf("Hello, world!\n");
  ^! k1 M; ^  T9 A}) o7 v. [1 `4 d$ c  Q! S4 M
void three_hellos(void)$ e8 \; L# `+ X
{& Q! A. n9 A5 Y5 K
int counter;
! R* A# D( l+ l# Ofor (counter = 1; counter <= 3; counter++)) B0 K+ k* S5 V
hello_world();/*调用此函数*/" ~3 ]: k1 w. b4 h
}1 p4 ^# ~9 F4 Y  O# c
void main(void)
& u0 }, w7 i- |: C+ ~$ j0 u{
& }* N0 e% x7 n3 \1 Dthree_hellos();/*调用此函数*/
! u. V* e" `' Q}
1 s; M! F% d9 n4 E6 E+ c( ?==============================================================
+ z$ N4 X( C9 X& x% j【程序35
3 u+ y; S. i+ M题目:文本颜色设置# w% Z1 @& T) |8 E. `
1.程序分析:
+ F' h( Z6 g* d8 A1 p2.程序源代码:
, [. ~( [1 \+ [! P#include
: _* \  i6 M  r* q0 u0 bvoid main(void)$ ~6 |7 o; @1 O4 o3 K$ _# ^2 R
{- W+ t, Z) Y( U' h
int color;
3 M, _, l0 P1 T5 J( Z. Afor (color = 1; color < 16; color++)
: k9 i+ P' D. d4 M/ Y3 `+ _ {/ \$ j6 H/ g9 N6 i; C
 textcolor(color);/*设置文本颜色*/
+ _/ L9 O4 n7 M( X* }4 _# z+ l cprintf("This is color %d\r\n", color);+ d7 T. J6 b( Q2 A& ], E
 }; F8 w" K+ j( v. t
textcolor(128 + 15);
& A- D) S  h! W$ X5 Hcprintf("This is blinking\r\n");
+ `3 \- T2 u* V$ R}( P4 v- |, ~- i0 v* F8 V: f
==============================================================
$ L+ @& q+ ~) x" R! G" _. u* A. [6 S" {【程序36: H0 i% }1 H. _" _) x6 L% U
题目:求100之内的素数   
% B/ B" l% g& A' S2 y0 l& S1.程序分析:
5 L7 m$ m& _9 W9 ^; R2.程序源代码:
" M3 R4 T: y' x  }  H0 G. A( R#include 8 a5 f3 r+ a$ R- o, S
#include "math.h"& h3 C( S  n; I: G6 R
#define N 101
, o0 a& o2 U' c% O8 Q3 A7 U/ R% `main()
" E: O/ X3 g9 I. y( p4 B# f! Y{
/ h* U- D% U) W0 ~' J) K# `) Dint i,j,line,a[N];* f7 L7 U$ f+ ]) F- m
for(i=2;ifor(i=2;i for(j=i+1;j {
% O5 n& z: c) {- @7 O0 C) g  if(a!=0&&a[j]!=0)
2 o- e& ~9 p. J# ?: s% b! S6 Z  if(a[j]%a==0)' l) I5 s8 q) V9 W1 n% v
  a[j]=0;}8 z0 t& M- Z/ I$ _5 K
printf("\n");, ]* O% i( L5 {. O  ]9 T7 L( g6 O
for(i=2,line=0;i{+ z/ H) w3 ~1 V5 m  s- d# s
 if(a!=0)
% j* a8 R2 z, X: \( d- T {printf("%5d",a);5 r! |4 a7 t5 z: L7 j7 L
 line++;}1 w5 W( v+ b2 `. o
 if(line==10). Z# f1 L* C6 w  G/ n' t
 {printf("\n");8 n+ z2 u5 I9 I1 i1 ^
line=0;}
3 i: _) c) m7 T( y8 a2 C}
' S; N# m, c  u8 C3 Y2 @}" S& F5 F+ d1 H; O$ m* A: s
==============================================================
" G$ J0 Q% E% e3 E( {0 @【程序375 v3 A3 U+ ?5 h( Q4 d
题目:对10个数进行排序
, j/ N. ^8 r/ D1 z1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
. ]/ q, Y9 p3 z" F; G      下次类推,即用第二个元素与后8个进行比较,并进行交换。        $ a, h- ~5 K, V* Y; O/ _
2.程序源代码:& z1 I- }& p4 q" v5 q( N
#define N 10
. U7 y9 r) w3 p) fmain()
1 ^6 q: ?2 _5 a{int i,j,min,tem,a[N];
6 b  s3 ]7 `+ c' j/*input data*/$ ~% y( ]  |5 Y0 M" A" S
printf("please input ten num:\n");: Q4 C* _8 P7 Z
for(i=0;i{$ _2 k& Q) Q/ E6 ~( d: q
printf("a[%d]=",i);( S* F; P+ l1 A' ?/ Z) {
scanf("%d",&a);}
4 |  z3 z' M3 a4 m7 }) Mprintf("\n");
4 m1 G' W, X: F9 sfor(i=0;iprintf("%5d",a);3 {7 w! Q- q( B. ^3 b- v
printf("\n");
! v- H5 [4 l$ z/ D3 U/*sort ten num*/" g- V7 s# L, |" m
for(i=0;i{min=i;& c, W2 l) G3 I: D4 S1 [
for(j=i+1;jif(a[min]>a[j]) min=j;. s# f$ {4 q5 t* e
tem=a;* y* l+ T- H6 G1 Y1 w8 V( U, N
a=a[min];
4 U0 n; b" Z* da[min]=tem;" f: \5 @) o1 S- g
}9 O1 R  e$ q. L: H, ?5 l% J* |" N
/*output data*/. {$ X" N2 l, k# ^3 C& [, W' S% D
printf("After sorted \n");
1 S6 e" R' j/ {2 n' ]# _9 pfor(i=0;iprintf("%5d",a);5 K( J( C- n/ C+ Z; S
}
1 ]) x. a) l0 Z==============================================================/ [. o( \% B- X6 Q2 c: a9 t+ R4 i
' T) N( E, E1 [% \( x8 i
回复

使用道具 举报

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-10-10 02:20 , Processed in 0.050414 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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