机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序27# J, s4 D  I5 ^1 m# g. [
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
8 F% ^0 J# `; r: l1 Z1.程序分析:/ s9 K, H3 w( `3 `$ }
2.程序源代码:
+ Z( T; Y  e# S" n4 F#include "stdio.h"' Y' y, w5 `$ W, {$ N
main(); H9 Q: U1 D) I+ b5 K
{
  J& V& J# @: @* fint i=5;
- F0 Z/ v8 _. A( `: S! M  \void palin(int n);' J! r! p2 @" F2 e2 Z% m5 D% ~2 u
printf("\40:");5 U& ]) e% W! |9 L2 ~
palin(i);
9 X+ B* c, H6 Q- o" Y8 K$ `% T. fprintf("\n");
8 o- i' X  }  \# ~}& y9 T/ Z1 W$ f4 j  U* c) L4 c
void palin(n)9 r$ @8 V6 R5 x4 O5 |
int n;
! ]8 }3 g4 Q; A& o3 h4 h: a0 U; h{5 a7 D# M! I& g/ U% _" m
char next;' R! T5 d- m7 x7 \2 V
if(n<=1)
. {, @6 B# P( @  T7 x4 Q( T% I {
5 J& @  a1 q$ H" z& W+ I3 j- W next=getchar();. U  a( T0 \. M0 s" U. _
 printf("\n\0:");1 ~* k1 K/ R$ s: K5 I3 F! b# }
 putchar(next);
& w$ Z, n" O4 ]6 R5 x }
: Q+ j8 m6 @  Z, W3 Gelse
6 W% e& X' K( o4 a5 B1 ~. M {
2 _5 r8 O: j# j# o next=getchar();3 |) f2 v/ x+ A/ K5 Y- R9 E
 palin(n-1);6 w( U5 v' \5 y& l0 P9 j
 putchar(next);8 P5 R0 L& @# N1 V& @0 c
 }( c! _/ T9 H0 i* e0 z$ T! O! Y, F
}
8 X+ U4 w3 S0 ]. h/ _! Q& c==============================================================
6 j) G% H: @% C! Q: N0 a3 Z6 E8 d5 ^【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 - }) w, P$ x% y' W6 v0 ~
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
6 a7 J0 r( Z( o   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
, I+ q3 I" C% _* ^7 d   问第一个人,他说是10岁。请问第五个人多大?
& S, b; `' j$ _0 s/ U9 ?) O1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道. A# n: ^/ }. I9 E, C! i3 _1 {! M, o1 g
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。1 s- ^( w  L9 ?
2.程序源代码:
" j6 b4 B% d0 Fage(n)2 \! v0 \+ ]: c9 o
int n;
$ C! F, z: J! i3 r{) `# Q' Z# u( m) `1 g, m4 G
int c;
) J, U3 _4 p$ J$ l5 e3 Wif(n==1) c=10;& s4 H8 {4 \  o; B3 L0 b
else c=age(n-1)+2;
+ C" D9 L: X# ]3 R0 g( n+ Y% Rreturn(c);
# M' g$ {+ a# w% |}
+ K5 {- _7 R7 D) l( o4 M$ O! lmain()7 V% T' V) v! l9 K# v
{ printf("%d",age(5));
) `: A/ t7 W  B( S8 ]}6 ^4 i: K& _- M& A% ]
==============================================================! k% ~7 L4 _" r! p* M/ M
【程序294 N+ E9 D0 `6 u2 v! {" w' O( W
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。: W8 X, D; n) D  ^/ {
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
/ A, z$ ^4 u1 P) g+ B; F( t. j* X2.程序源代码:: L* M8 Q$ r. a5 z& ^8 G
main( )
( a( R  R, m: ?{
- B* k( \7 D: C1 `long a,b,c,d,e,x;
9 r! |* _* Y8 Q  D9 Y8 ascanf("%ld",&x);
6 p% y( n7 G' J% J% D% Fa=x/10000;/*分解出万位*/. Z; v- d$ V0 R. l
b=x%10000/1000;/*分解出千位*/
% }: f5 ?8 W: ]- t, `: V  hc=x%1000/100;/*分解出百位*/
4 c9 V. a  `" }- F& `$ ^d=x%100/10;/*分解出十位*/
6 y" p) T. y" J3 H; J5 c% g# l- pe=x%10;/*分解出个位*/
9 K( L+ w, I( J+ d& X9 p' w( Rif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);. p* I6 }  X. G+ C* n$ e
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
/ x% n4 k; H" l6 Z+ m9 W  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);2 R6 ^$ G3 k* h& s  |3 L) }
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
6 e/ Z9 ?6 w! v      else if (e!=0) printf(" there are 1,%ld\n",e);! P) l% P" A: x& x7 @
}
0 j" n9 o7 d4 e& G' q==============================================================! ?: E' C. }, ?, I/ P1 J
【程序30* d: D) \5 U/ k( H+ x/ X& L+ q0 ~, G
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   2 p! \2 f# {, m' l9 `* M
1.程序分析:同293 I* @6 X, u# X# x
2.程序源代码:1 U) l+ K: ]( o4 m
main( )
+ a4 z$ _  Q& ]& O  U% a# z) }{. z: |4 I" I, u
long ge,shi,qian,wan,x;- m0 x% U7 m) {/ `$ u. Y
scanf("%ld",&x);0 G; \  e9 l2 _# s3 y6 P# I  S
wan=x/10000;* N% U, d. q5 L6 M5 w; K0 U
qian=x%10000/1000;  W$ v6 Q9 t  W6 m
shi=x%100/10;
7 w; D5 r" q8 `! Gge=x%10;  ^! X+ }0 T; Z, i( u8 N
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
  o0 F! c8 b8 P( X# v printf("this number is a huiwen\n");% |1 E7 _) o8 P7 U
else
& N& G2 E- a, F, F* s4 S3 }3 d! @ printf("this number is not a huiwen\n");
1 s7 Y- A0 ~$ Y: }7 A$ E}
【程序31
+ V* [+ H" r: c, T题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
' ]2 f& F" \8 m* x% O   判断第二个字母。
2 |( N! w" T, j- E3 k$ s1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。! v9 O4 \) w+ }8 m( Q' w
2.程序源代码:- z6 t1 u) o5 s8 n4 ~' ~; p$ U+ u
#include 2 l9 Y) a- W5 k# v. L. u
void main(), [  H: w; P, W% Z2 o5 B. A
{' c- Q- J+ n1 o5 A
char letter;
% r/ }; F1 {% s3 o: |% oprintf("please input the first letter of someday\n");8 I* C, a1 O: W% I2 c
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/6 c' R8 f/ d% y; A
{ switch (letter)
6 U: d4 j3 V! D* }9 R: f3 G{case 'S':printf("please input second letter\n");
( _& }, ], X& Y7 q) ]     if((letter=getch())=='a'); a8 T( x6 A) M- S( o% S' I" @% a; W% I
      printf("saturday\n");! J8 W; x6 \. M$ }
     else if ((letter=getch())=='u')
9 q/ X- P. F/ W7 _5 m8 n# z         printf("sunday\n");
1 R) R6 i0 P3 u) [- U* ?       else printf("data error\n");" N* |# T2 q, A$ x
     break;
. {5 Q, a- O4 |case 'F':printf("friday\n");break;* i' I9 Y' N' G; n5 V' a( w& @
case 'M':printf("monday\n");break;
0 T' H* l& [& Ccase 'T':printf("please input second letter\n");* S, a/ Z+ V$ l" p
     if((letter=getch())=='u')
: o% S8 B* X; }+ Z: ]6 W7 P4 r- a      printf("tuesday\n");! K/ e( G. t: H( W3 q
     else if ((letter=getch())=='h')+ Y9 M- C! _/ B: f- x" x# `
         printf("thursday\n");4 J/ X5 F9 d; {+ a9 a% H. S  \
       else printf("data error\n");
6 s8 X9 ]6 `! n" _     break;( Q6 Z8 T  h$ {. ^
case 'W':printf("wednesday\n");break;3 j4 |7 Z3 P  V7 {9 T" F
default: printf("data error\n");" p" z* A+ @" v
  }" Z  I: t0 d, j1 R% s
 }$ ?1 J& B( l% W
}3 {3 N8 T9 @; L% K
==============================================================& L6 {% N8 D' p: ~  k7 a8 M) r
【程序32
: ?/ B  b9 v( w题目:Press any key to change color, do you want to try it. Please hurry up!
' \2 \$ n0 ?& l, {* D. s# S1.程序分析:            / b: t' v4 a# I. `( N
2.程序源代码:
1 G, v8 Q* b* `#include
. R/ h2 E8 R6 [1 ^1 hvoid main(void)
0 E* w' T) o6 u$ R8 s; k{  C6 f5 I( w: K8 P7 e
int color;0 Z5 D8 J% d3 }
for (color = 0; color < 8; color++), [2 B4 R, ]# u, o4 }
 { + g7 }% g* l4 |+ ]8 M" D
 textbackground(color);/*设置文本的背景颜色*/
. `* a# X+ G: k/ b- x9 K cprintf("This is color %d\r\n", color);
$ q, w$ M% [3 z1 R5 ]- W cprintf("Press any key to continue\r\n");
- N5 w3 {! ?: f. T getch();/*输入字符看不见*/
6 R8 l9 N8 E) Q }4 D4 N9 F% x3 Y' N2 e7 _
}5 ~3 M6 `) \$ r" J; N0 l
==============================================================
+ `  h+ ^: l0 o' r【程序33
0 c/ s: |" B. z2 C$ H题目:学习gotoxy()clrscr()函数   : c' B# u* j, I4 D9 i2 `; X
1.程序分析:5 s. W) |6 b' W4 p0 A; R  `1 C# c
2.程序源代码:" J( b- W6 W; `8 V% J
#include
$ J( j7 \% S; lvoid main(void)6 a9 r  E2 I' I- F
{1 L9 Q/ C, R+ Y, ?7 R+ y; ], }8 j2 b
clrscr();/*清屏函数*/
0 H9 L# ^3 Z' w+ M8 Y7 z6 i% ?# Ktextbackground(2);$ f! _8 e5 a# C7 C- \
gotoxy(1, 5);/*定位函数*/
4 {1 w% |" K" \& ~3 O$ Vcprintf("Output at row 5 column 1\n");6 e4 _* M9 h* c, Y
textbackground(3);
- b; q, \8 G/ s8 \: agotoxy(20, 10);- C) R5 b  n1 B. l- E. R0 M
cprintf("Output at row 10 column 20\n");
9 {$ s" A  [* V}
2 s7 o6 b% U) T, Q6 g0 g==============================================================! Z2 m* y) h  ?) w' B7 B; @
【程序34$ }; ~/ w3 ~% j/ L
题目:练习函数调用# X2 w% R" }. @9 D0 W
1. 程序分析:
' c. y  F( ~5 b2.程序源代码:. J6 O) S& ~% |- m7 w4 B/ h
#include , z. F0 j" J" K' A$ v; o
void hello_world(void)2 S5 m( a+ L( A5 S( H5 c+ X
{4 w( Y3 G; n, _) M
printf("Hello, world!\n");: V) x6 `( K- {7 m2 z* c
}! I. u0 F  M  P! w( \
void three_hellos(void)/ z3 e% S& Q5 i* d
{3 c1 Q) e. S- C$ {8 i. t/ f! U
int counter;
! _1 X/ e6 k6 U' r* g! kfor (counter = 1; counter <= 3; counter++)
# t$ a; W+ z% qhello_world();/*调用此函数*/9 d: B- E; H$ x. N4 W
}
! ^- R- G, S% G9 C% avoid main(void)
$ k3 p' H% U9 P5 T# v$ [{7 Z1 z; r1 q# j
three_hellos();/*调用此函数*/
8 [/ k) H! D5 f/ R6 ^" X, B  e}
: L1 q  f( u7 [1 r. r  z==============================================================: Q% W1 O4 j5 E( L& Y
【程序35
" B3 _! N* M# P" q/ B题目:文本颜色设置7 p$ q3 L  _9 P4 p& s5 {
1.程序分析:1 q% Z' i& G: r
2.程序源代码:* M% A7 B  n* \) b% M! g, X
#include
1 A% D+ |5 r4 T: g. ?3 zvoid main(void)6 w  {0 c$ I4 K) m, ^0 b
{
5 B: ?( v; d8 m$ j7 @" uint color;1 D' D8 P2 i9 Y% b! [3 P7 M
for (color = 1; color < 16; color++)
- Z" f7 [. M; W/ |$ K/ J- o {9 u' l7 x0 B: d+ w6 L, d
 textcolor(color);/*设置文本颜色*/
1 n8 R" C: P$ N; F cprintf("This is color %d\r\n", color);7 a) C/ C2 g( M  O/ ?
 }
* D" a5 J$ S: Ptextcolor(128 + 15);8 {6 [, i# ~; D7 s
cprintf("This is blinking\r\n");) g) `& v5 @& R5 o; X
}
, ^: d5 x  G3 g' G: y: {==============================================================
3 t! s/ u) d2 P# T) ]$ G9 g7 U5 H【程序366 E! J/ i+ u2 h+ m9 d0 [9 \3 t4 k/ V
题目:求100之内的素数   ' r$ N% S9 h  s3 b5 c
1.程序分析:
" H2 w/ F5 i6 K# s) V1 k. l4 e2.程序源代码:& b1 H' {; d6 d" v0 D
#include
' R, E1 @+ j! K' }, L#include "math.h"
4 c8 h+ o3 K* |; M#define N 1018 S7 \* R- o0 u+ K
main(). B- c& @% N1 V; X; c# w0 }
{. t) ]% }6 x. @$ x/ n& Z
int i,j,line,a[N];
1 ?; R4 c- k/ H" u2 w/ F+ a  Kfor(i=2;ifor(i=2;i for(j=i+1;j {
4 `& o" w( ~8 |4 @& }- C: j. z0 E  if(a!=0&&a[j]!=0)2 o7 v# S1 v$ D3 B
  if(a[j]%a==0)0 Z$ s: w3 W4 z0 i
  a[j]=0;}4 _( o; q5 o5 O7 }* H
printf("\n");
; v# c* s- i- u+ W) Q' V  t, A2 y. Gfor(i=2,line=0;i{" P; M& A8 E# h% G- `
 if(a!=0)
9 g0 Y  t6 C1 g+ e {printf("%5d",a);/ p- G$ d* R. }& r' O' ?  R
 line++;}0 I$ B; t  Z" I3 O/ E
 if(line==10)
( D3 y+ Z5 I( B2 j! s$ U: K {printf("\n");0 x2 t4 g* R/ P9 H, k; l
line=0;}
+ f& @5 n  v) o% v4 x7 b$ r! |}/ Y$ y0 ^/ p: v
}0 e# c; C% C7 O9 Y/ a3 H9 \
==============================================================
, M5 P: ^9 L- F. |5 U【程序37
# b7 D. t3 d" a9 n+ R4 J) I# {题目:对10个数进行排序
7 P- n* j; S! k1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,3 Z+ ?3 Q+ v4 b9 [3 {% a) b. @
      下次类推,即用第二个元素与后8个进行比较,并进行交换。        + I% |3 {: X: g- i3 T5 O' P1 o  w
2.程序源代码:4 [0 P) |( |/ y7 o
#define N 10
0 ]3 g, G  X6 E% P7 f' D- zmain()
& `" d0 p0 C4 {& P, q' J5 `4 u{int i,j,min,tem,a[N];% i( B: Y" M# G1 `% u3 r6 K
/*input data*/
. _, H! f: \: k  e" a1 _5 Fprintf("please input ten num:\n");
& B( p6 J/ O3 @8 a# Z8 \for(i=0;i{
: c0 [" s2 H5 X; R0 v* t% hprintf("a[%d]=",i);
1 G: J- w& [  C0 ]8 Yscanf("%d",&a);}
6 K6 H, X1 t/ X9 D/ Wprintf("\n");
" o% x8 ~' a9 f2 B6 V  M" }* F/ Bfor(i=0;iprintf("%5d",a);
7 U* W1 x9 w+ g, ?7 {printf("\n");
: a, S6 P  J0 }! H4 S- Z3 B. L) v/*sort ten num*/7 [6 u# y7 P, G( ^! q! f
for(i=0;i{min=i;
- s# }" z* H4 J) |* }. |for(j=i+1;jif(a[min]>a[j]) min=j;
, }+ V6 I$ y; q) N& G0 Stem=a;
. X; i8 _/ \$ l3 |6 B. P$ la=a[min];8 k0 M. S" d, z7 D. F. Q% B
a[min]=tem;
+ z. a" H3 C0 q, }, I}: z  v+ \* Y3 \/ F- f# M6 x
/*output data*/
7 l2 D- a* A" s* ?  l  pprintf("After sorted \n");
2 {4 ?2 M: U% Bfor(i=0;iprintf("%5d",a);
! Y+ f  H( H6 P" y' O}
3 Y% \4 X5 T- ~+ f: ?- l9 [) T- E==============================================================
  d' z4 s  t, h% r+ o, Q/ G
& C- ?- R& f) h* e+ k
回复

使用道具 举报

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 18:40 , Processed in 0.053207 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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