EDA365电子工程师网

标题: C语言算法27-37 [打印本页]

作者: dilidili    时间: 2017-10-7 15:14
标题: C语言算法27-37
【程序27* G- B* s1 x, R( x: c0 b
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。$ |' o6 O/ z# \' a% m  Y1 A# \
1.程序分析:! [' A7 v# H, i8 V! X1 D
2.程序源代码:2 `. C8 ^9 E- B, `4 Z9 m9 t
#include "stdio.h"4 K  b- j% h8 ]+ d1 l! b; b
main()0 I; J3 X9 l+ \6 d& q' H0 x
{8 y# I/ a" t8 q: O+ l$ `
int i=5;5 \' E. Z+ ?( O
void palin(int n);/ M8 t* x+ M' J  U: Y
printf("\40:");4 U1 x0 U- b2 {' b/ D6 J
palin(i);( I+ S2 R( U$ F! E* l# r+ S! N: }
printf("\n");
( v' I& X) Q- [- q}* G' ~# I+ R" I( G' L  s
void palin(n)
0 f+ Y; m/ B4 J( _  d. tint n;
, P, `8 Z+ {! f7 i8 B- P: [{# z2 M4 f+ e% C) _& s
char next;
/ v3 [" s  e  O7 S1 s# _" D* kif(n<=1)
2 ]$ |/ F9 P7 j; [/ ]$ r9 B {
- m4 }  m" r3 m3 Z  H  O" a next=getchar();
6 K& v& A  g3 ^7 `8 T* j printf("\n\0:");
4 T0 p5 }; F) J" P putchar(next);
/ H8 R$ M& N3 \  z, d }
$ V7 e6 Y. Q  ^4 k. a+ Jelse5 _1 }  g0 S( x
 {
2 r$ O" k6 Q- M3 j next=getchar();5 ~& y2 b: M1 v  r
 palin(n-1);' P; i/ W$ l9 Z4 H: t* C* K
 putchar(next);- \5 B) K7 c* u6 x% ^
 }. L3 [( t8 I2 C# m2 o4 y1 Q$ P
}, ]5 j7 g6 ]4 f  D4 V" b9 r( B* ?! x
==============================================================: h: Q# i7 l! n  l# |( i' T, m
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
7 y/ ^+ g3 L1 e' X- j7 q( A  H4 ^' W" a题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第. i1 }/ q0 N3 O' M, q0 `
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
0 x" ]; k( b- d   问第一个人,他说是10岁。请问第五个人多大?
9 r4 i4 A: C; ~6 b6 B0 \. P1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道1 P: ~3 u, Q0 j5 ?2 [8 X
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
  B5 `9 a+ _  e$ a1 Q; T/ w2.程序源代码:. d8 N5 o7 M4 [: \/ k
age(n)* p  o/ b3 s/ N- i; i. Y* B. I
int n;  X% L0 H+ D7 E) A: e1 g
{& F' G4 `; I( @- y' e" ?
int c;
; p1 K$ `3 N: g! ]& j) P& ]+ Aif(n==1) c=10;5 c3 O% Q! v: U
else c=age(n-1)+2;7 v  W+ L# ^4 E0 H; s
return(c);! f' @$ M; A: l  C4 y$ l8 Z0 @
}
2 l$ N8 I4 I2 {4 c( d$ V5 Smain()
# ?* i; n9 m' g{ printf("%d",age(5));
0 D9 w6 n/ E: G2 V& M0 c1 \}9 ]4 k2 B, C# M
==============================================================! |' U' {/ U& |  R1 _& p2 `% N# w
【程序29
% v: r& ?* r2 w$ ]  V6 U' z: `5 U题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。9 r8 f: ~$ x, d% x( u
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
7 e8 {4 g8 u" V( s: y2 u( e2.程序源代码:
6 y9 v4 ^$ S  t9 O4 P, P; K) umain( )
" P' p1 _0 ^/ d/ L; o- ~0 e{
% F; A6 o3 T/ T- {) o' clong a,b,c,d,e,x;
1 n" M* X- |) Nscanf("%ld",&x);8 f# H' u% V9 ~% ?! o$ e+ K& G
a=x/10000;/*分解出万位*/
+ U4 z& T2 F( vb=x%10000/1000;/*分解出千位*/% W) {0 y' ?5 _8 R. ^- B& M
c=x%1000/100;/*分解出百位*/
" h1 g* {) s; T5 cd=x%100/10;/*分解出十位*/
6 q7 D+ Q- @- _$ G, [2 ne=x%10;/*分解出个位*/% H0 O6 S. }$ w: i* S6 R; T
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
; s6 n/ o1 T; Aelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
5 ^5 u% ^; ^. `7 w7 a, v  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
8 Z& q% d: [6 B* S    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
4 w% w" o  B) X# }, z: i* ~      else if (e!=0) printf(" there are 1,%ld\n",e);% p- U2 U' U4 k# H8 ~
}
$ Z& h2 o1 f9 P% k; U5 M==============================================================
6 r* p( C" m2 U( Y6 v【程序30
' M5 `; b! h1 Q! @$ U题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   , f- J7 F# a$ ~
1.程序分析:同29
" P- T2 p$ A' ^, ~2.程序源代码:
: c/ ?! I" d% P- e' l, rmain( )
+ ^  r6 h4 r- m2 h& V8 @{+ O, h5 a- Y) Y( u# A
long ge,shi,qian,wan,x;3 X" c) Q* k1 O" A4 A
scanf("%ld",&x);
0 J+ P# N+ S* I" T5 x8 t  s# Bwan=x/10000;; {$ L0 C8 z! }5 B( G0 m2 P) P
qian=x%10000/1000;
% m0 K5 @- s3 r$ G: wshi=x%100/10;- P' {6 ?5 B; K, A( c7 A
ge=x%10;
" l$ ?# h2 [6 o: }if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
5 {# Q5 M  k1 h" l9 o) p printf("this number is a huiwen\n");
9 H( H# Q8 s( |else1 e2 N1 B1 O. @" I6 p! I
 printf("this number is not a huiwen\n");
" W$ b! _- Y9 O4 _3 {6 w  y}
【程序31" O& A3 ]% x$ B8 M1 ~& C1 t
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续8 K. M5 F  G. F4 c. q1 _
   判断第二个字母。0 }: x0 O9 Y8 |6 g8 Z' B
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。$ {3 Q2 l2 T& K$ ?5 a( K
2.程序源代码:
. g! _- ]& R, V# I" I/ y#include
5 v! v( \% G- A3 d. jvoid main()
8 _. K9 L7 _" g: c{
& |. E8 X: Q' h; a( [, dchar letter;
" |+ q: F( L" z: ~" j; Y9 Sprintf("please input the first letter of someday\n");
4 l3 z0 ~5 Y3 g/ Twhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
9 t4 F6 N) u* r7 w{ switch (letter). g- o" s  _1 ~% m2 w
{case 'S':printf("please input second letter\n");2 k& [9 ~1 J8 J" ]* [% W
     if((letter=getch())=='a')
) A( z# q& ]/ X( K2 r; ~$ |* x5 h- C      printf("saturday\n");
, s: ~/ y$ Z8 f     else if ((letter=getch())=='u')9 w7 g/ S2 @: |, b1 {/ [
         printf("sunday\n");
1 d6 T$ Z! _" T$ e+ o5 P! c, p" K       else printf("data error\n");
: i% A* k8 L0 Q1 D8 ^' W     break;
. v3 `1 Z6 ^7 D' O8 _4 Zcase 'F':printf("friday\n");break;6 J. c( _" O' t' J
case 'M':printf("monday\n");break;' O. }9 u) E. Y- a3 u7 R
case 'T':printf("please input second letter\n");
  i9 d# M' H3 {; Z     if((letter=getch())=='u')
% r/ B" H" z; \6 m  p( o: T      printf("tuesday\n");. {1 M3 {$ B' Z7 [6 H8 }
     else if ((letter=getch())=='h')* N* L4 k; k/ `! i. I1 @
         printf("thursday\n");5 G" O5 @/ U6 Z: q# E, J9 S! r
       else printf("data error\n");
' X5 v; q! A) x) \- |     break;
- j$ f8 i, G) O, M- Acase 'W':printf("wednesday\n");break;
/ h6 g( R: J9 C& b5 w) [3 C& wdefault: printf("data error\n");
8 s; |# e: b4 a2 K, p9 ]+ u5 ^  }
/ G# ^6 n& d/ _+ A2 @ }' f; H5 Q$ _3 N- C/ @( I
}& \2 U) f. |5 F8 w2 G
==============================================================' X5 [" R+ y2 I* h+ j+ Z
【程序32
$ ]6 q, {- j6 ]( }/ ?! U" j/ X题目:Press any key to change color, do you want to try it. Please hurry up!. w' }, W. q* U9 V* x5 U# w6 e; J; P
1.程序分析:            ) c4 z$ `* O  K5 k) w3 d2 ~) T
2.程序源代码:
- ]3 _$ P, [7 ?+ {( U4 O#include
; |5 v7 e' o+ _4 s( V& K8 tvoid main(void)
7 ?1 x. y0 J5 V- T! _* r4 X& t/ f7 x{
- S/ d% x# n: }# C% Q7 mint color;
( t' t0 {& }7 u' m2 ^& D- d% Rfor (color = 0; color < 8; color++)7 T- s8 F& ]& B2 u) f
 {
/ v1 W: W; ?, j1 b4 r1 \ textbackground(color);/*设置文本的背景颜色*/
& t% s8 f9 J9 D cprintf("This is color %d\r\n", color);
6 H1 P9 g/ d1 ]; v0 ?" i cprintf("Press any key to continue\r\n");$ ~5 Y) x2 D4 Z4 q
 getch();/*输入字符看不见*/: F; j. B2 Y0 [8 [* q) S, t( g
 }! j2 L% @- s) p8 n9 H( G8 _7 @! a
}* i- Y2 G, u" w9 s; w% f6 G" P: ~
==============================================================
) r  p0 |/ M# D) }  }" c) y- A【程序33
, q2 N3 w$ z. E# n0 P. L题目:学习gotoxy()clrscr()函数   - N* h2 |; [0 U8 [: G' f2 H1 p
1.程序分析:- t$ M7 F& x+ V- M
2.程序源代码:
* I; T; v4 u) O6 N5 l#include 7 P! p  B& G4 x+ N  l3 H
void main(void)
) g3 M; \6 S8 n$ A$ A! u8 z* G2 y{3 e( D# P( X1 w* @: @1 s3 |3 ~" j
clrscr();/*清屏函数*/
+ K& V) ~3 m* ]textbackground(2);
- i5 s- N6 w+ `% j# {4 r! d  F  h. Cgotoxy(1, 5);/*定位函数*/
/ {, y1 s+ \$ r% C7 Scprintf("Output at row 5 column 1\n");9 m' A7 m9 ?4 V: U: T
textbackground(3);
$ j- _- U( G# t& `. y# Bgotoxy(20, 10);
; k! Y% n1 l. v8 L: Scprintf("Output at row 10 column 20\n");
- D" o8 G$ W4 k0 L# s- z; k}6 K' J" w# Z+ c1 v/ D) p7 m* M
==============================================================- N- }' z6 W5 P( Z
【程序34* ?+ I' O$ K! X6 R9 _
题目:练习函数调用
4 N  ~: E' m- v; {  B. W) M1. 程序分析:
" A/ f- \/ C1 n/ O  D2.程序源代码:
, s) F* w1 w5 Q. W; L#include
7 p2 d! i4 S2 F1 y; y1 L8 ~void hello_world(void)* K7 N5 S9 f; P" c- F
{9 W" c, ]4 k1 }6 v
printf("Hello, world!\n");
3 }! {# g5 E  }% E0 U/ V0 W; o}# g( x# W% T: i, f
void three_hellos(void)
6 P+ V) }% s& O3 k' S+ G9 v{0 M% ]. y& ]8 G" ~) ?% j+ E
int counter;
5 b: ]: _6 I/ G& Pfor (counter = 1; counter <= 3; counter++)
& w; ^! D- i6 M6 }# M$ U0 Mhello_world();/*调用此函数*/
8 f/ |8 j7 S7 i* b}
: d8 L7 D' C1 v9 v  f& ~7 gvoid main(void): z$ \) S- K3 Q% ]: }6 B
{5 z2 G1 A- Y% F; j# g) y
three_hellos();/*调用此函数*/( G9 V2 N2 n  w4 e" b
}9 z2 o& p9 U' ]1 L  ?4 d/ t# ?
==============================================================3 E! ]4 W# X! n% R- h6 U
【程序358 j% h" ^1 [- e( {  [
题目:文本颜色设置
+ ]: X9 ~$ @$ [( S1.程序分析:7 f1 Q" s. Q& w, w
2.程序源代码:1 Y0 E+ H' ~# V) F
#include 1 g% J  m. |- t
void main(void): o# m, a6 m, ?9 Y
{
. l' h: q5 Z9 j( ]% o% _) ?int color;8 D" U- _1 S* @% \  V
for (color = 1; color < 16; color++)
5 n% }' b. T) K  ] {
- l. v' \( `' Q0 | textcolor(color);/*设置文本颜色*/9 ^  V4 R3 _4 g+ j6 J$ ]* W/ y
 cprintf("This is color %d\r\n", color);
5 K8 u) F7 T# m; C* z, w }
7 D4 Y% q, B- Gtextcolor(128 + 15);
5 K+ S& A' @9 ]- F& P& {3 f2 ecprintf("This is blinking\r\n");' d* h& i9 f% C4 e* h3 ]
}
$ C3 O  v6 U5 |: s, E, x$ z1 k  E==============================================================
2 R* N  l/ f9 O6 @5 l【程序36
( O8 n0 u' p0 V+ n2 V$ Q题目:求100之内的素数   ' m8 |: p" B! J  }! f. D% k
1.程序分析:, B+ J5 ?3 P- P' m1 b+ m" B
2.程序源代码:9 M7 D+ W; L( _0 }4 r6 X
#include 4 P7 Y# d# k- }9 z9 b7 e* L" W; U7 y
#include "math.h"8 i0 p8 n: b( h4 w! ?1 Z" e8 X
#define N 101! C' p! Z8 E" `* d
main()
; ]3 i" d/ A5 c* h, ^8 d{
5 o7 i& e4 P% K( t3 Dint i,j,line,a[N];
6 O$ e/ u* k1 Y( n- g5 ]% Sfor(i=2;ifor(i=2;i for(j=i+1;j {. w1 L! ?# T( s% F$ r( m4 p
  if(a!=0&&a[j]!=0)
; Z' B, L2 A6 o( L9 c. q; H7 K  if(a[j]%a==0)
; R( O( |- ~& \/ c6 d/ D7 Z  a[j]=0;}& A& \7 c' S$ E5 \0 ?2 ~/ w1 ^( O
printf("\n");. Z) [- Y0 j, h: {3 T4 P6 n% {" H! s# H
for(i=2,line=0;i{
# X7 ~; I: m5 k$ U( V! Y  u. r if(a!=0)
5 [0 f) f/ Q: b2 A- U7 q$ b {printf("%5d",a);& T  ^" w/ }" ~5 G
 line++;}
5 W  [. G& o1 @6 [  z. \+ J if(line==10)
2 _; f2 }3 G1 j- K' l7 Q, j {printf("\n");/ M5 G' w$ s) p9 X
line=0;}5 x2 S3 f* {. D: U0 W! H' Z8 |# t
}
# [6 {/ L1 z( V" U; V}
" B) B1 o0 l4 U" N3 u2 i9 O' b1 v" a==============================================================  i/ `/ o3 T2 x8 ]
【程序373 k- ~% }' |8 E) \! w5 c
题目:对10个数进行排序: s  j6 u1 I+ C. ]+ T
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,8 W+ u. Y! n- n" [& r& z1 I( A, A# l3 Q
      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
; C& Z) {0 D4 f+ @2.程序源代码:
! W" G* W5 u8 t#define N 10
; ]/ z! t- Q0 i6 k8 t+ x1 Pmain()
. g2 _8 @# m; t* ^! P. `{int i,j,min,tem,a[N];! W3 i8 T0 X$ [& i9 D6 G
/*input data*/
2 D- h4 A$ r1 nprintf("please input ten num:\n");
' r9 o# D  Y' Afor(i=0;i{
" N6 J1 X/ [1 E  A. X. N; q* hprintf("a[%d]=",i);
1 r3 `# v! D' I9 Y$ b0 Qscanf("%d",&a);}5 X$ l7 L0 v  m
printf("\n");( T' [: g& X& D; S4 a
for(i=0;iprintf("%5d",a);% E4 s& w7 r; w- k* s
printf("\n");# X0 K. a/ B& y+ s# ?/ U7 Z
/*sort ten num*/
4 \  ?* o8 t7 hfor(i=0;i{min=i;1 b5 z% o/ }; q. J' e( M( r3 Z
for(j=i+1;jif(a[min]>a[j]) min=j;
/ Q* k4 m% X& N+ rtem=a;! {* D3 n/ V5 n; Y, G" t5 Q  R% a* ]
a=a[min];* f8 G( q1 G9 O7 k, l) R
a[min]=tem;
. G, \" ^+ I' H! ~1 F) j" J. g}
- c. {0 R$ [, S- d/ b" \- y, I/*output data*/
- w. f9 p. \' y% a2 Bprintf("After sorted \n");
7 s- L& n7 h8 R9 W9 Q" Z+ ifor(i=0;iprintf("%5d",a);
& l6 Y1 R) p' w6 e6 ^8 ]' [& E}# V! A4 _# H2 b' P9 O" o7 d
==============================================================0 e+ n" t4 A& _( m# _/ r

7 h6 @" z- \  _7 j& j; h' N




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2