找回密码
 注册
关于网站域名变更的通知
查看: 393|回复: 0
打印 上一主题 下一主题

C语言算法27-37

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-10-7 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
【程序27+ x) O* |) |+ Y* d; g
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
, q& z, `5 {! m) S2 ?, ]  G% y1.程序分析:
4 e) D- H5 W4 [3 I9 P! U& q2.程序源代码:
) k8 [- B, x* c; e0 \6 B1 w) D3 A#include "stdio.h"
& G% D- J! R4 r5 C7 g- a" r) z; imain()7 Y  [& i1 X4 _! r. U3 @
{
8 \& }" I6 N2 O0 T0 b; Dint i=5;- U+ M$ L: v9 h' w0 C2 n
void palin(int n);+ m" h7 P( I' g/ @/ j$ v3 O9 o# }
printf("\40:");
$ F8 \: O' f* \palin(i);5 m  ^2 A& K$ {" O; |* G1 q
printf("\n");3 o( b- r+ x* |$ ~3 P* V) \
}/ Y- {# o! z$ R' t+ M
void palin(n)
* ~) F5 B$ W- S  R/ q* K5 `int n;7 `) Z" f$ i: u( N) A0 }
{5 @1 S, ~4 s1 H( a& T
char next;, t4 }1 h; J9 ]1 y8 \7 M  }7 U5 F& L
if(n<=1)
  J4 H5 k& [6 H {" m9 R/ o% w; q1 q! U
 next=getchar();
9 ?. Q$ T6 t" L. v6 r" R printf("\n\0:");  D( C' S$ T4 s, w
 putchar(next);
5 X6 y7 E% }6 X }
/ ~* L. x5 m9 felse
# I8 m7 {9 t) K4 i0 V# c' O {
& s4 a$ e/ L6 P% Y" ?$ ^/ d. y8 b1 F next=getchar();; F- D+ G' h  n% V* K) p2 ^; Q
 palin(n-1);, B* T. P+ H/ N7 K0 C. w+ {% q
 putchar(next);4 j+ p, R5 ^( }1 @- x4 ~
 }4 ]8 |9 q1 h( [" R0 e. ~  c4 \
}( t. ]6 F' u% t) v4 L
==============================================================+ p8 n8 X8 u) h. D2 W
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 " J7 \/ B% E! a; r. i
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
- `# w1 f* G5 E1 A7 l   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
6 }6 O/ g0 o( y  ]) o   问第一个人,他说是10岁。请问第五个人多大?8 }5 P+ V9 W2 F3 O! S. y
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道# H. e" u# ^" n
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
, Q/ o7 U, f1 ?( V. P. ^1 H: O2.程序源代码:
$ w/ L7 N) S7 u2 Aage(n), S0 V# p' Z* x; Y7 c: u2 f$ s
int n;
- H0 O4 A+ t0 G  s{* ]6 G. d9 F- ?3 S% W2 Y  ~+ k
int c;
: l  ?! s  o& h* G, [/ N" n* pif(n==1) c=10;; V) r; d: H$ M7 O7 G) {6 y
else c=age(n-1)+2;
1 \' ?3 b: ~# p3 xreturn(c);
0 |, g  b5 |1 r0 ~0 A# I1 Z  R}
8 [1 ~! A0 q* k0 n4 Q6 O0 ]' Q6 ~main()
1 e& b- u& B/ H4 q{ printf("%d",age(5));  N0 x4 y0 c; I. [
}
+ P6 _  ?8 m7 P2 c+ C6 {+ h! [==============================================================, Q. I9 I+ L) Y
【程序29
/ n  o+ u& y/ I3 L6 w4 X8 G2 R6 s2 b题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。- [# K  ?2 n" G& \6 e- Y
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
. a; u% R/ B- L: B2.程序源代码:" e9 s6 p) X3 ~& E2 \
main( )
0 O; X; y" ^! j; I" c. b% y' W: T2 r{
! z1 H4 Q- T$ K6 nlong a,b,c,d,e,x;* m: R4 D' {( a+ R3 v+ r# n/ L: w
scanf("%ld",&x);
$ X0 P& ~" @6 m, x: f2 Ga=x/10000;/*分解出万位*/
" g/ a0 f) z% T# u0 z+ Ob=x%10000/1000;/*分解出千位*/1 d# |* E0 h- E3 I8 r
c=x%1000/100;/*分解出百位*/, h0 x2 V- k' J% a/ W1 f
d=x%100/10;/*分解出十位*/0 ?  }9 g. U" ~9 R( j- o
e=x%10;/*分解出个位*/
/ A& r# [6 b4 g6 F5 i7 vif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);$ m: c. E; v. b- P' q
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);- Y  _; E; M" g! w+ L& J
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
; ^& T) @: ~, U8 K  }/ W8 _1 f    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
6 P! b; q1 [8 a3 u* k) J, ]      else if (e!=0) printf(" there are 1,%ld\n",e);# @$ W3 }! [) j: S
}6 g1 y, ^: ]! b& f
==============================================================
2 r. w6 `; p' m, H1 I! C【程序303 E2 {4 q: y3 I' g
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
' y( C, l( d. n& s1.程序分析:同29
3 X5 l5 k4 n! S' j# C: R: l+ _* b2.程序源代码:4 H" ?, N! N/ X. O6 `" \! [7 @
main( )
9 C, \. U$ A- Q0 P% F{( w/ A: j" n5 @9 O6 m4 B% d6 M
long ge,shi,qian,wan,x;4 P4 P8 g+ K8 @- ?' Q, }* I
scanf("%ld",&x);  i' D: m# T" k! A
wan=x/10000;: i/ e# J1 p# s
qian=x%10000/1000;' a+ i, D- l& g# [! o) M
shi=x%100/10;
4 J. j( T/ H; N% T: xge=x%10;4 C$ X% I2 Z+ F+ ?: P, B9 t
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
( s) v: u) r* e' p6 G printf("this number is a huiwen\n");: ^! o  h5 W5 Z' V3 _6 I
else1 R; X+ ~# S  W/ Q: C
 printf("this number is not a huiwen\n");
/ Z8 T* Q9 w7 k+ M}
【程序31# m# Z. X) s4 c$ H- c) q0 w
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
0 N7 ^( K, B, t1 d" B   判断第二个字母。2 |1 E) V. u& x' B' q1 d2 Y- D
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
* {+ Y, H) i% {8 `7 c2.程序源代码:
+ l0 a3 e" d4 T2 J6 p# _; L#include " ^3 T5 q: }( P7 `. l
void main()
5 \8 q0 P& N& X# Q" {9 @1 }8 W& j# V{
& V+ Y& H% W7 G* cchar letter;& K/ d! d1 R5 `' t9 A/ v9 b( {
printf("please input the first letter of someday\n");
, c/ l  c: {  [: A5 j& Y3 m3 J( l7 Fwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/; e& b2 ]# b0 L" o4 a
{ switch (letter)
# M2 T) H7 N. x6 ~4 _1 Q{case 'S':printf("please input second letter\n");) }+ U: u- t5 j4 a
     if((letter=getch())=='a')( i- p2 a/ U! l6 S: u  b
      printf("saturday\n");0 L! O9 g; ?+ w) V. }
     else if ((letter=getch())=='u')" c7 _0 Y9 ]/ T0 a& M" [% q
         printf("sunday\n");
$ b$ W1 O) T& u; a9 |$ r% r" Y9 f% K       else printf("data error\n");, }4 O1 r( M5 L3 Y# T
     break;
6 e: s2 O2 Q* J; Kcase 'F':printf("friday\n");break;+ J( I. t0 D- p* s# x0 z: A4 d
case 'M':printf("monday\n");break;
- ^$ g7 m+ i8 _6 Y" mcase 'T':printf("please input second letter\n");& g8 R; U6 @# f5 [" X
     if((letter=getch())=='u')5 t0 b0 R6 F# e5 Q% b! m1 s
      printf("tuESDay\n");
3 @$ v- L. w3 i2 |1 W# q     else if ((letter=getch())=='h')9 j  |. I( D$ d; F6 M% ]
         printf("thursday\n");
: [; b3 r& s& M& h       else printf("data error\n");7 g% m) k9 \6 Y. r3 Z
     break;0 b( G0 w$ A2 H- s; @
case 'W':printf("wednesday\n");break;7 u7 n, k) E, D
default: printf("data error\n");
. b0 @2 A# U2 w( N7 {/ Y  }3 R$ k9 o8 O8 S6 o( `% z
 }' Z$ j9 p1 G1 k9 I6 f( v
}
! [: {, M3 B8 q. c) u==============================================================
! W7 T# Q6 b$ `  r【程序32
/ h0 k7 s4 y: ^4 T0 ]7 e. \1 H, v题目:Press any key to change color, do you want to try it. Please hurry up!- M  H: F+ U/ @
1.程序分析:            
: D7 J- c1 v. C3 t, b2.程序源代码:3 K; c; ?* s1 l) j* e
#include 5 u7 `7 r( H: w6 F6 C
void main(void)
5 C$ k" ~1 r" ~  ]{
: m$ I) ]/ u! T) G3 Sint color;  a$ }1 ^$ z0 W1 _4 b2 v
for (color = 0; color < 8; color++)
$ Q- Y' W, x- T; C, b0 e5 \ {
4 U* H- M# D9 q  Q; ] textbackground(color);/*设置文本的背景颜色*/! ~/ z' E; M( |+ D4 c4 g6 G
 cprintf("This is color %d\r\n", color);
: N4 F( P) Y. t& n3 e+ ? cprintf("Press any key to continue\r\n");8 ~7 @" {0 K' l: x
 getch();/*输入字符看不见*/# Y: J  [! u; i9 Q6 Z8 A; [
 }9 x; _0 L& j0 ]9 ^  z1 p- U
}, R" C- @  }, z2 }
==============================================================9 B$ F+ E# m' {. D$ c' g2 c
【程序33
( A9 o% {+ D0 n1 t- G2 M4 T题目:学习gotoxy()clrscr()函数   # q3 g9 y3 ]! Q' }+ J5 r% i3 b/ s1 z
1.程序分析:) A7 s7 L8 m2 t; R2 c) K8 P. ]$ l
2.程序源代码:
# e0 ?8 U  ]# ]4 j#include ) x2 E- `" k, @1 y/ {
void main(void)1 d. W$ b- W% j  G% Q+ B1 P9 t, r- |
{9 e* r- z- ~' R/ |% i. R
clrscr();/*清屏函数*/2 g$ H0 d/ c( ]1 A* G; n
textbackground(2);4 I8 U) n: N& D6 X5 W
gotoxy(1, 5);/*定位函数*/7 ?& `) V9 E5 t! v# D: W, _3 |
cprintf("Output at row 5 column 1\n");( M# Y( ]% m! A, V4 D6 K* W$ o
textbackground(3);
* u5 [  U: N' v- c4 ?0 ~  cgotoxy(20, 10);- J' m; V+ C+ J1 ^! {1 f: L* r" o
cprintf("Output at row 10 column 20\n");
0 C) N4 F5 d3 Y' J) d+ ~}
% v1 Z- b& o- ^* p==============================================================
/ I4 H: Z, R: T. b  N6 i$ h4 L  L【程序34
5 x4 [: d' X! u" W. X题目:练习函数调用
( B4 x& S6 I$ D; _1. 程序分析: 2 U) b9 q$ @" |9 E  M2 P
2.程序源代码:
: W4 `  l- y+ f#include * d6 z' o; {1 H+ d
void hello_world(void)- v, v1 X* `& u; q' X1 P
{
2 B4 |/ D5 F, R) G" Tprintf("Hello, world!\n");
- R: Z& s( x. T( ~! S/ d}
4 ]% @( I( j& F3 B- tvoid three_hellos(void)2 P3 x7 \& z0 ]
{$ m- w$ O1 {0 a, u
int counter;9 S# N" C$ K3 ~( Y( n& c) I- {+ t
for (counter = 1; counter <= 3; counter++)
5 N7 p4 R* o# T% r! C. Hhello_world();/*调用此函数*/
! Z3 a9 G9 ~2 u4 d- M}
$ |/ {2 M7 b( Yvoid main(void); J5 ?4 ^& B" H( S* E
{0 k) u  [: ]7 q$ @4 r# C6 h3 U
three_hellos();/*调用此函数*/
2 h& q- n, F. I5 Z$ ^  ?3 z9 f}
8 g' u4 A# u& f% E6 ?4 p( U4 p4 ^==============================================================
7 ^' D* s& Q0 x: b" D' w' n% V【程序35. z& m3 t$ K2 B! c; `4 \( n
题目:文本颜色设置
# U* x  b% R* m( O1.程序分析:
5 [0 F  e; v# |) e6 p0 ?: ^2.程序源代码:
6 O6 D  I2 [6 o& u3 m#include
+ U7 E0 A) H( Bvoid main(void)5 K+ `/ }! m; ~% S0 H
{/ D. \! P) D1 D" n( J3 o9 D3 y' \
int color;; b- Z4 Y% ~1 |% M
for (color = 1; color < 16; color++)
7 u& x/ `7 b! P {
0 s5 t7 u& [  H4 m* x" z textcolor(color);/*设置文本颜色*/- u- r/ F9 u- B
 cprintf("This is color %d\r\n", color);
+ Y( y6 W( C9 c' L" Z2 j3 [9 F4 d }5 m( I5 W- m3 [( \
textcolor(128 + 15);
" v+ X/ p& [# w/ H* O: Rcprintf("This is blinking\r\n");* I1 O+ ^8 ]9 }
}% J* ?' _* [. }: K! d
==============================================================& q6 L+ Y; m2 T3 U+ Q4 N( {
【程序367 K5 ]- t, f( X
题目:求100之内的素数   
4 ?. O# A) y" g. r9 N. `" f1.程序分析:) M* `9 q- E/ h3 Q5 r' b
2.程序源代码:+ ?+ L/ g. p; W; A: k+ `
#include
- ^5 N: }/ }+ p7 L% [3 X% q9 F#include "math.h"
  _# n$ ~$ _  K0 l9 F. C#define N 101
# K% a# R4 H' R0 vmain()# P; Q% }; U0 r; K5 V: ]: }
{: p7 d% E% v+ ]4 ]! j' o
int i,j,line,a[N];
( ^, ^# g% {( j2 g# w* ifor(i=2;ifor(i=2;i for(j=i+1;j {; f1 m) S% C7 _5 W
  if(a!=0&&a[j]!=0)( a2 H. W4 ^: {. s4 J
  if(a[j]%a==0)4 K; E: D2 j$ z; m5 n) F5 h
  a[j]=0;}. |& w9 W2 K$ V9 s0 A7 Q7 v
printf("\n");
- I$ g$ W' R" u$ w6 x5 Kfor(i=2,line=0;i{7 |& s: q, n1 x5 ^( ]3 N' ]) O
 if(a!=0)* k/ r5 l3 L: o5 z
 {printf("%5d",a);
% f- w( ?7 h# F line++;}! X& s- v- g& i' @" `4 M
 if(line==10)5 W; l: ^1 r7 ]% I
 {printf("\n");4 S4 k# c  C* M/ X2 }9 N; W
line=0;}
8 E& [3 H" m8 \* k, W}/ p  o3 [$ q/ O, g9 q5 y$ O2 E
}
- Z3 s2 w8 J" J1 x2 v==============================================================
. P5 l& s. N" z【程序377 j  K5 o" y, S4 d9 M
题目:对10个数进行排序) P  @' W7 h/ `$ b" @) m. |
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
# G: j0 @2 N) l7 {9 Z: n      下次类推,即用第二个元素与后8个进行比较,并进行交换。        & G. ^  j- j# d* Y4 P4 \" a
2.程序源代码:
& n# s3 n+ ?6 L#define N 10
9 Y5 `7 ]+ G4 v$ Gmain()
* b+ ^# z, M0 s% S1 U! W$ `{int i,j,min,tem,a[N];1 Y7 q+ {) t% C1 i) F( b: ^
/*input data*/, S% {4 S) o3 i. u8 i3 m3 k& B
printf("please input ten num:\n");
7 Z$ r, |) k  k3 r" l' A# Gfor(i=0;i{$ `* C) J! ~! _) ^6 e
printf("a[%d]=",i);" V8 I7 D( K# M& K  @& F
scanf("%d",&a);}
/ N& L4 _# e! [" {" G5 q; Uprintf("\n");
: J/ B. m/ K1 Q+ ?% s' R' j. Y5 p) xfor(i=0;iprintf("%5d",a);; H$ u: n) Q! q3 X  p& I% F
printf("\n");
) a/ y% f4 Z, n* b/*sort ten num*/5 P3 a7 a, Z, \8 w& T! F) `
for(i=0;i{min=i;
  t2 |3 K5 a) e. P2 \for(j=i+1;jif(a[min]>a[j]) min=j;. ?7 R7 {4 s5 K/ }0 Q
tem=a;
8 f, `; h  G8 Z/ E( Za=a[min];
) ]/ V. m% r9 t+ U; Fa[min]=tem;
& ]' p$ `6 T! P% M; z; y}. d+ U' p4 g/ s. c( [
/*output data*/+ M, @1 j2 D! o  Z
printf("After sorted \n");# [* O4 n0 t9 W/ c/ O% m6 `% ~7 R( g
for(i=0;iprintf("%5d",a);
- [4 j/ X( j' p}' R% m- p/ U4 I
==============================================================) s9 j3 T8 |8 W! K: p
+ s! }* p% N4 M$ B+ c! ]) ]. m2 O1 |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 13:09 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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