找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 59|回复: 0
打印 上一主题 下一主题

C语言算法27-37

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

x
【程序27
3 k9 |$ c# X7 k  A* a! |0 f题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。, i) s( k9 R/ r+ Y
1.程序分析:6 b* [& B3 i) q) A! E
2.程序源代码:" M; e5 q* K- U" Q: e7 i) i7 t1 q+ v
#include "stdio.h"
6 u4 B( K4 o! U+ K) [, Y7 j& zmain()
& }. H6 P6 U, C  n{
% Z+ p7 Y$ v3 y. f' K+ \8 K+ A7 o1 aint i=5;
( ?1 E4 n% r5 w. T4 Bvoid palin(int n);. t; ?$ V% e! P: e$ I5 L" W+ L/ r
printf("\40:");
3 C4 _! r+ E4 B  k" S+ P% ppalin(i);- h0 Y6 k9 T9 `' i# D
printf("\n");
% q0 S' A4 i( c# f}. q& l1 |6 D# r: A
void palin(n)+ u% m% x1 M9 l( D  v
int n;; ~' ~, `& P& Q, N
{- s3 c7 b" z' L. b( A6 _8 t/ n
char next;7 p  t* q1 m: l' t- _) y* B
if(n<=1)7 \9 ?* M+ a- T2 V; U
 {
3 x( s( P' A. y! v0 @9 }# ?; L next=getchar();! K# m* v( v# p4 Q' I! c$ n
 printf("\n\0:");
" H( G6 H6 U5 Z6 q* o( ^0 D" z putchar(next);
' ^- S6 ^0 C! g, B' O( }9 F' | }
- V6 g3 N! `' X# K* p# W- aelse
- }: K6 z% J- G {
( I$ }: \" |: e* Q! {  ]0 F8 O next=getchar();
$ F2 S9 s/ ]. S1 x9 X0 m# p palin(n-1);
" M1 l" O7 @) y5 h: a  b) n9 S putchar(next);4 H( {( @6 L! Q9 b' C! [: H0 A
 }4 B$ c$ Z/ B' B
}
3 ]& o* g; K" c& L& V# X7 P==============================================================  p$ g% s& ^. m1 P
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
3 q* p0 ^6 D* J% c题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
' j0 A# D  P( E+ o" \# U6 d9 U% m- l   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
* K5 g$ u3 u. ^1 s, z6 M/ }' D   问第一个人,他说是10岁。请问第五个人多大?; g, B% i* |: Y8 j- @
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道. i) t9 Z: C# J& c) W4 t
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
/ z8 W: K+ ]+ H. X2 ^0 `8 d2.程序源代码:. ]: S9 g3 o/ B3 V
age(n)
! ]' ^$ s0 k/ Q. A8 T/ o) v& cint n;
, l4 {" A" @5 ^! O{
% a, Y: @' c: w8 R1 eint c;
, |% f2 z$ {6 b& {2 X: S) {if(n==1) c=10;# J3 n. y# X1 A. R& m
else c=age(n-1)+2;, d+ `5 j5 \- y$ O
return(c);
+ V" E/ ^! o7 K* i% j}
1 j. C$ b- O9 z" vmain()
" Y" Z) S( Y" v* X. i% s8 b7 @{ printf("%d",age(5));
" l$ J7 n9 \2 {& d}
, g) ~) a+ Z! r; j( s; n: \==============================================================! k8 Q& t9 _% l
【程序29$ @( y) B. Z, v. F& T( ^7 B  t
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
* d& @" X0 b" ~( E* c1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) + u' U/ b- E* u
2.程序源代码:
/ B/ v8 e0 q! T( Nmain( )% H" }& E+ f6 u: `) y) E
{4 g8 R" c+ W: j! J! y
long a,b,c,d,e,x;
* a7 L3 ]9 s8 [$ Mscanf("%ld",&x);( o  {$ P7 Z- I7 c
a=x/10000;/*分解出万位*/
# M' u) h8 m" U! Z( @# jb=x%10000/1000;/*分解出千位*/
  h4 y- w9 O: ?! R  g3 I6 c( ~c=x%1000/100;/*分解出百位*/' ^$ b' F( l! c
d=x%100/10;/*分解出十位*/4 X# v1 w4 `, n( ?8 Q3 `& C
e=x%10;/*分解出个位*/
: B6 i. Z- ?1 ~- k3 iif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);; K: z4 u* n4 `; d1 X
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
3 U7 J9 b+ N: f# u8 b  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
, Z& k" Y; {5 ~2 Y% [1 X1 c9 E6 z% \    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);- U" d% v! l. x3 t+ q1 l9 B7 `" B1 g
      else if (e!=0) printf(" there are 1,%ld\n",e);5 n/ s+ k: J3 |
}
: ?& x1 j' R% C7 A6 h+ l==============================================================( g  [2 _: F2 F" ]
【程序30
# e8 X2 g5 T) ~+ E7 ~- h, K: ^题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   % w7 |" U' K. ^. h2 u
1.程序分析:同29. V9 e. u  U) Z& ]8 |. p0 t1 m( B' `5 Z
2.程序源代码:
  Z- ~, D& q2 Emain( )$ u5 E' Q( H" ?3 X' V1 \, k% e
{$ c6 e8 R( q/ s/ ^' E
long ge,shi,qian,wan,x;
7 I: g( A6 i/ xscanf("%ld",&x);( I, ~% n) Y2 A6 T4 J6 F" l, r
wan=x/10000;
4 T! `  `" b+ N9 A; _qian=x%10000/1000;
- _$ w5 g& [9 n9 p7 @, Jshi=x%100/10;
8 i# M) F2 Y# g+ c  K  ]ge=x%10;
% K* X6 Q. ?# T" G8 J9 B; M5 @if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
0 B; }2 I2 ~1 | printf("this number is a huiwen\n");
3 D8 Z5 B( F" V3 k4 Z% {3 A. delse) Y, ?7 M5 o% K- d7 o
 printf("this number is not a huiwen\n");2 U8 _1 z! ~: ?! x$ `% Z; {/ W
}
【程序31
6 `2 D3 u! l- g+ x( t) q题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
4 d) ^4 @* ^2 P. K; Y7 O3 s   判断第二个字母。
2 {- c% m1 r" \- ~+ S1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。. I  X1 l, h) n- k7 {
2.程序源代码:
2 Y; _/ J: p+ }. f7 M' W5 S#include 4 k% R+ q  y# M* K- X- N
void main()
& t* e8 ~0 |2 t5 i6 X! F# ^8 ~{
& {3 _1 S4 i- [char letter;
! {1 q! `, j' j" k! c" a( {printf("please input the first letter of someday\n");7 Y/ j( a, G2 R/ q2 `0 |$ a: x$ {" X
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
) ], |% f1 S0 Y{ switch (letter)* l- F$ C. h1 [- R4 ^& a0 W
{case 'S':printf("please input second letter\n");! v( A0 C1 y, r! {& w( F. H
     if((letter=getch())=='a')7 f1 \% T5 k) N
      printf("saturday\n");
$ ^& d, J! n1 w* j( h2 [1 d     else if ((letter=getch())=='u')3 n+ v  P! s% d9 Z5 A" g
         printf("sunday\n");  k' ]0 U* O1 F$ O: I- H
       else printf("data error\n");* T2 L) O% x5 V: p8 F3 t
     break;4 s' ^3 S- j- ]& h- o
case 'F':printf("friday\n");break;8 M6 u" }5 W% e: o( l. ^
case 'M':printf("monday\n");break;- P8 z& T. P( D  ?1 E' J# e
case 'T':printf("please input second letter\n");+ ]! W) X/ a  s6 r2 U  C
     if((letter=getch())=='u')" J% y) z8 [3 K& Y
      printf("tuesday\n");
  m8 u' t) v2 r, L+ L     else if ((letter=getch())=='h')2 `' Z6 N& k2 m
         printf("thursday\n");% L- p4 x# u; E/ T
       else printf("data error\n");
) k. i7 \0 l8 z8 q9 `, N4 i/ W     break;
- h0 ?: n0 i  _+ J/ w9 |case 'W':printf("wednesday\n");break;/ Z4 T5 T  F# L; r# r. H
default: printf("data error\n");
0 n. Z( f) e! U! X6 P+ M  }
" ?7 r' `0 p% P  \ }- d& ], F: g  z* N+ u9 N
}; v/ ~. ~  s+ ^
==============================================================
' p  p  C% y  ^4 h" _【程序32: L# b* \: k! \" M* C$ [
题目:Press any key to change color, do you want to try it. Please hurry up!& ^* O' A2 o+ y7 R: P
1.程序分析:            
6 F! L5 V' O; W2 @0 N& }2.程序源代码:
- h! r6 R' m9 w) ~9 F+ K% x0 C#include $ P* J: Q8 Q, Y- g
void main(void)
" t. f+ \+ z+ M% `{0 h/ e; V8 ?) }1 @% @  ^/ @
int color;5 ^% L3 Q" k, t. ]; @, l
for (color = 0; color < 8; color++)( f& |. E  Z. |: `
 { & v5 C7 K' Q9 A; @1 h7 s
 textbackground(color);/*设置文本的背景颜色*/" A- g* \% E" x0 b4 Y# D
 cprintf("This is color %d\r\n", color);; F$ H; a9 i5 n
 cprintf("Press any key to continue\r\n");. Z. x( O! c1 @: n) A1 K+ b
 getch();/*输入字符看不见*/7 r: X) W2 o4 Q! a8 q( b
 }
1 ?9 |5 o; M, z}
4 \' w2 d8 X' I( d* z==============================================================( k0 {$ `* x( W: l- g- t7 z! b; D
【程序33: _8 _) ^) P: D, m9 F7 p
题目:学习gotoxy()clrscr()函数   
2 i& f1 P: W, [% p1.程序分析:, {( _: P, G: ^" Z2 v. O/ P
2.程序源代码:. z. O' |3 w1 Z* D4 {
#include
$ f4 |; O* r9 v6 dvoid main(void)% ]+ s( b7 l/ Y( e. t0 K$ T
{7 @- L1 B! h/ h1 f0 G$ a
clrscr();/*清屏函数*/
. N* Z: L* Q2 z( I( Qtextbackground(2);
! ~% u+ m! m, Wgotoxy(1, 5);/*定位函数*/
, d# x5 D' h) q  Wcprintf("Output at row 5 column 1\n");4 ~3 o* v5 J- A
textbackground(3);2 O* w# K& a1 l! t& L6 l* [
gotoxy(20, 10);
. e, q; r! I: g, J& Scprintf("Output at row 10 column 20\n");1 H: Y. I( c9 y( e( y
}4 I! t1 Z+ x# D/ Z! z
==============================================================; [- f0 p9 X1 j. _
【程序34- `8 z+ F$ g. u; c; o, z: p
题目:练习函数调用
' w* m2 B' V$ u; z1. 程序分析:
3 ]' F3 z3 z4 B: r6 B! E4 k2.程序源代码:9 O" O2 M# t( s2 w4 g2 O# ~
#include 5 a5 F/ _& X5 U2 H3 q
void hello_world(void)1 G) _. Z8 i" h! R- _4 l
{
5 n1 y4 N4 F  o, Pprintf("Hello, world!\n");, e' q5 I1 ?3 W# o) R# A. r
}5 e1 X3 s* }& @8 u1 i) A1 ~
void three_hellos(void)
& Z1 l; W% S9 v/ X% c# X, E{
+ k9 v2 q$ W" s8 Y0 [+ }/ ?. K. ]+ @int counter;
5 ^3 W3 o& V& \+ t8 ?) S# p7 G0 i" {for (counter = 1; counter <= 3; counter++)
5 q4 v$ k; F. o. {+ lhello_world();/*调用此函数*/7 l) F, a) x" i* C& N7 c
}
2 _& A$ T4 ~5 e( ]: bvoid main(void)
+ m- Z0 H, V) @% _{2 {, t* Y) w& L
three_hellos();/*调用此函数*/
9 O1 i/ g" y5 M0 {/ i' M}" b5 L/ u) }" a  z
==============================================================
" a9 a3 R( @6 u【程序35
1 R9 a, K0 c3 E/ {! k题目:文本颜色设置, T. h) F: w  j6 c
1.程序分析:4 d% o$ O; Q- \7 }0 c# B% I
2.程序源代码:2 z9 v0 X+ `4 c2 T' S
#include
9 f# I1 Y0 b' E! bvoid main(void)
# f5 }! |. X! ?{8 P- \/ B5 k9 C+ z1 g- K
int color;, G/ y5 v4 H5 G& Y* G7 r- s7 q
for (color = 1; color < 16; color++)
/ B* ]5 R) l/ D% f" c5 d6 c {
7 g: H1 u! D% b( e7 m textcolor(color);/*设置文本颜色*/9 E# a* U) j3 w8 {
 cprintf("This is color %d\r\n", color);
4 V1 c& x. [& `7 t. O2 ]5 b' Q }
' X; y8 S6 C: u1 Utextcolor(128 + 15);
. w. Q: l! I3 L3 _7 K9 |  l( qcprintf("This is blinking\r\n");/ e8 V6 O0 X7 z  C% k/ s
}/ i! w) G) u; ?; z
==============================================================
% x% ?3 X6 Z/ {4 g【程序36
4 x1 q7 a9 k* B题目:求100之内的素数   
6 O) N1 u. [- Y/ K" l$ n6 C! S1.程序分析:
; m4 B6 K, w% ]2 ~$ ?2.程序源代码:
: ]' e' q# }  H9 s' `#include
- `/ p1 a! ~/ q( K. X( ]#include "math.h"# R4 t) i) o7 u) X& E2 U, l+ n
#define N 101
! J% }# i5 F' |: V5 lmain()- w7 x, _0 s! J+ _% r; U; K0 X
{0 A3 A* x  q# c; H' y/ b% u
int i,j,line,a[N];
8 Y/ v& ?7 h! R; F& ?for(i=2;ifor(i=2;i for(j=i+1;j {
/ ~+ F- n( W: _; G' J( g  if(a!=0&&a[j]!=0)! `. a. t4 M  {( `' x2 z
  if(a[j]%a==0)
: X$ x* E0 C" |5 G9 }: s! r; \  a[j]=0;}
$ l/ H. w& x1 c; L: Zprintf("\n");" c: w! M; K* I( l0 q
for(i=2,line=0;i{
7 C: [$ i3 T5 J% E4 E: `+ o1 U if(a!=0)
3 K" y$ i* j' ]8 p. \ {printf("%5d",a);
: Q8 r& X# u! M, h0 D line++;}
( P  [# v5 U, u8 M' `8 F! `+ O if(line==10)9 S4 `4 H4 G* c; A) O
 {printf("\n");
. V' j3 G! Z6 T6 hline=0;}. T' P$ ?, E: t( x
}, K' b9 y3 S2 p" l+ @. i8 f
}! p% b* u5 T9 M$ C# w, N8 c7 j4 H& q
==============================================================
# J2 \2 C, T8 `! }2 @6 ~# p【程序377 }' O# V2 p8 q
题目:对10个数进行排序
. W$ G) u5 D% D0 m. L1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
+ {: M4 P6 {( {  q! z      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
) T6 }( }9 ~; O2.程序源代码:$ [: }: s+ j; Y
#define N 10. B6 ~8 o- C$ `, N
main()" h) N" A. n: x) u
{int i,j,min,tem,a[N];8 T9 ?5 W- `2 ]2 d
/*input data*/
$ G/ V( R, Q( P5 h- ~, fprintf("please input ten num:\n");0 ^* p# ^" U: Q' |" P
for(i=0;i{/ c6 x7 V, ~" B- o1 e) X
printf("a[%d]=",i);1 o& A+ Y# o7 `# I+ |
scanf("%d",&a);}
( `7 [+ y5 U9 }* m2 u1 w% }printf("\n");8 ~* R% y9 s: v8 @" y3 `7 {
for(i=0;iprintf("%5d",a);% M& h0 O; x8 n3 y6 M9 l3 x7 s& a
printf("\n");* o1 Y4 w/ B2 @3 `/ y" k3 i
/*sort ten num*/$ ^: u& d* Y! X* h
for(i=0;i{min=i;
+ T* `: e4 r( ?9 @) k+ vfor(j=i+1;jif(a[min]>a[j]) min=j;
% x: h' J  p! F# [3 L1 h8 Otem=a;% `7 _+ z6 d1 W6 F2 E) K
a=a[min];
: ~' |' `1 `+ W( y3 ra[min]=tem;7 N) }! S; y( f/ H- C
}
/ P9 a" |  m/ I! @/*output data*/; s* s: Q* H* c& P
printf("After sorted \n");! ^  m9 c  x( D9 N3 M8 X
for(i=0;iprintf("%5d",a);
1 a, b+ T5 X: E( U! f8 o2 @4 x( F}
. B" G# l+ g8 o. D( E# i==============================================================
, Q" n$ T; {2 K: X

( P& v0 C( c3 G% o6 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-1 03:57 , Processed in 0.062823 second(s), 32 queries , Gzip On.

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

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

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