找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

C语言算法27-37

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

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

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

EDA365欢迎您!

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

x
【程序27* v, \) L" }- E5 R+ b4 o. u
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
% h2 y  G& e0 z: m) G4 [1 ~1.程序分析:
1 L# D- F: J1 m  W" U2.程序源代码:/ X5 L! }. z) y
#include "stdio.h"
6 H3 m  d& a" z& k) e8 ?main()) M& o" \9 P5 o3 d/ A' }! v
{) v' Z+ g2 |% c  `& @; J
int i=5;- k: ^' m2 D; G9 a$ F& O9 k! A
void palin(int n);8 I; X& C# t. R( Y" A+ }
printf("\40:");0 l/ }1 j, o8 ?! ~
palin(i);# _1 R+ v, t; b' h
printf("\n");& R6 m8 n4 e1 w6 P9 D; G
}8 s8 y5 V+ K% h+ y( C
void palin(n)
' R8 j* x; C6 @int n;8 d6 X, |, ~' c3 J/ m
{
3 V2 l8 g! a# ^. v( Echar next;1 @0 o& l2 }6 b  H
if(n<=1)
7 A* [. U4 P: N; y0 a" q3 d. K# c* K* A/ W {
2 l/ J- Y+ Z' H/ ?# Z# F5 } next=getchar();
/ {; {' C* ^- k  d% k printf("\n\0:");* c; H5 ~) W! s" s0 l* ]" X; M
 putchar(next);" z9 E8 l- i1 l1 Q3 @
 }7 E7 i& _3 v$ X4 R$ F5 U
else
7 Q9 I* u! P2 H4 b9 h. r7 E) } {) E, i( W. O" G1 o
 next=getchar();
% D' q( ~! n2 ^( V" a palin(n-1);
$ [% }2 u  |+ ]% y' G3 ]" Q& N putchar(next);: r; v3 P. u" R' r4 q
 }# c5 B" j& A8 p' V0 u
}
7 g, Q( u6 y7 I/ S6 I$ n6 q==============================================================
# e) J2 c1 g5 @+ D【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
7 S3 ]+ F, |. S# [2 N. E题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第. R7 w9 `/ f( S* _1 I: z4 e
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
7 L! G" F2 F1 B+ d# x6 J" d: U, Y   问第一个人,他说是10岁。请问第五个人多大?5 g1 c) ~; C. t" c9 O' U6 F( D8 f* S0 y
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
  N5 B3 Y) I* H5 D8 v      第四人的岁数,依次类推,推到第一人(10岁),再往回推。( \- J' \- {: V
2.程序源代码:) U5 c! }8 E% q3 Y" _) C
age(n)
7 V/ }  h7 N. {8 \* `: o  N+ O( i+ W3 @* cint n;* z! b4 J. p, N0 \, L; n3 }
{( z! }! s8 R. Q, f) r
int c;) d2 n7 e3 L' h  T
if(n==1) c=10;
) F  H% `! @- k6 S; Celse c=age(n-1)+2;" R+ j$ W6 M# S3 l
return(c);) U/ f  u# z6 C  ]! {
}8 O; ]! X' W& @5 t0 @7 F
main(), W1 r7 q+ c* D& ]
{ printf("%d",age(5));
5 f- j6 e" \) |( e% O}% n7 Z6 l- }0 y
==============================================================
  y, f; B/ c& D. c% f- H* P【程序29$ ^. G( }/ x% O& R( ?
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。4 k8 O2 I: i( u4 I, n- }
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)   q4 R# N1 u8 r+ j$ e5 ?% H0 E
2.程序源代码:- p. G) K' F1 i% n; P2 ]
main( )
+ D) g/ \; q6 y# k{- e. _% G; u& }
long a,b,c,d,e,x;3 ?3 P% v/ ~" w, w0 Z
scanf("%ld",&x);
6 E* y' i7 M* d3 ]8 v) X4 G) za=x/10000;/*分解出万位*/
+ Q  }, I7 I" E3 }0 Z; {b=x%10000/1000;/*分解出千位*/
! B7 ~/ u. g- b8 Kc=x%1000/100;/*分解出百位*/6 ~! \0 s9 h( w- x
d=x%100/10;/*分解出十位*/6 k# @2 B" G, F0 [0 v& i4 U1 q
e=x%10;/*分解出个位*/
" U! {* c  g! [9 Oif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);7 B: ~5 V- i) O: K" _( h
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);( t4 I. B6 @+ @6 e( d, I7 t
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
0 \/ f8 @! E& U) X: U1 u8 Y/ `0 c    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
9 T* @1 o8 d) H5 c2 [      else if (e!=0) printf(" there are 1,%ld\n",e);
; E8 Q$ A' R) D: ]: C" y' Q}
. d# X# x( q6 `8 v2 E==============================================================
6 Q; h0 u/ B5 ~; K- J【程序30
# B7 r- b' v" e( r: w题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
! E8 \2 N& O- S: z3 B6 E0 U1.程序分析:同29
, D2 ?6 d. `) M2 H9 l+ Y4 e5 D2.程序源代码:0 B$ N8 l# A! V, s8 I
main( )
4 z8 A  t" d, I8 k{
( ]% u+ [5 C7 @6 y1 ]# L4 b+ zlong ge,shi,qian,wan,x;! x% `# t* t/ Q7 g
scanf("%ld",&x);
* d: C; V# Q* d# m# N5 Swan=x/10000;
4 c' t# y- ~( a2 e6 ?qian=x%10000/1000;
' J' W1 d! R& z2 P" c$ tshi=x%100/10;: _8 ]& K& @) P  _
ge=x%10;/ x- S6 i1 J# a  u7 d  }: ]% K
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/! J+ K# i, X4 y, D* M8 y, ?
 printf("this number is a huiwen\n");7 ~% }; Y+ F  D) u3 y, h3 |1 s
else
( s# _( q8 h. [3 E+ ?; x printf("this number is not a huiwen\n");
0 m$ Q* b2 B0 h4 T7 R! h& [* B' ?}
【程序313 V! {' s$ q' M  Z2 z
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
" k0 o( p" c6 M* d8 `' K+ R   判断第二个字母。1 j5 W6 `2 y: M/ D
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。+ G2 N8 s/ P: ]: d. h6 J# ~4 H
2.程序源代码:5 S) @- }  Q' b) @  O6 h  L
#include
! J2 X" H, t" ~/ u5 H; gvoid main()0 N7 o& t% a" v' b9 L
{- u' B& z) x; ?6 }4 ]- _
char letter;0 p8 K3 }1 [# u6 O, Q4 I
printf("please input the first letter of someday\n");
" A$ t4 n. e0 W" T0 S- _while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/2 t" ^* i0 m! ]0 E9 ]2 H) V4 c
{ switch (letter)* Z( X' v9 o2 ~" v- E+ E
{case 'S':printf("please input second letter\n");
6 Y. k/ ~: g7 O     if((letter=getch())=='a')# Q* T( p# b1 x1 R2 f7 s. k) U
      printf("saturday\n");
8 G, X8 J& i* }     else if ((letter=getch())=='u')) K; }7 h0 Z4 ^' m5 ?4 K) D! }
         printf("sunday\n");+ N! N8 X2 L! C: t0 i, s
       else printf("data error\n");5 A: k  T# h! E
     break;
4 N% T! ?6 Z; H2 ^0 h: y  fcase 'F':printf("friday\n");break;6 r3 c* J/ p. l. H* h  j- s0 w
case 'M':printf("monday\n");break;2 m: S7 y: T& `- u8 V6 n# o
case 'T':printf("please input second letter\n");; _2 s- p- z$ I/ b
     if((letter=getch())=='u')
8 f3 I+ Q; D, z9 U      printf("tuesday\n");6 p4 j3 k0 j, Y* X
     else if ((letter=getch())=='h')
5 `8 J. ?2 d2 R) N         printf("thursday\n");
- Z' o! |& a" q9 ]. J7 v1 h, p       else printf("data error\n");
* A9 a, d; |9 B/ W( M( G     break;
' X! J# ]% K7 Ycase 'W':printf("wednesday\n");break;
- v0 `8 S% s9 U: @default: printf("data error\n");& L* ^& m/ k9 c0 j$ z: f4 v) f$ g
  }
6 C1 Z1 K% P8 t4 p+ t& f }
* H  [* W( T4 Z8 F5 C  a( @}
! x4 e1 e0 ^# l. h==============================================================
- N, W6 d' e9 o+ Y- y4 T' |. H【程序32
# V- n2 {$ D5 j0 Q" p! K3 M( x题目:Press any key to change color, do you want to try it. Please hurry up!
  C( b% ?$ A8 }/ E2 P' D1.程序分析:              O0 V* a" s/ t& T3 Z+ [/ b
2.程序源代码:
7 {# A- g3 o- A7 ~6 z#include
, i3 d4 W' s. }4 I6 v9 V9 ^void main(void)" i: m5 J" e3 I! k2 H
{
, a4 [) q+ t: U' x; q1 u1 ]int color;" f5 s3 E! Q8 E6 w. ]! q
for (color = 0; color < 8; color++)
- P/ H/ u- {- C9 r( c { # W/ {4 t& @3 i% @
 textbackground(color);/*设置文本的背景颜色*/$ G; l0 q: u" |/ t1 P6 G$ i
 cprintf("This is color %d\r\n", color);* z# }) P' R% H3 Z) O. d: p! z
 cprintf("Press any key to continue\r\n");
' O1 g% N9 x7 m" N getch();/*输入字符看不见*/
! G. ]) O$ M3 `: y3 u( H& C }( M8 d8 U* M+ \, b0 Z$ A2 O
}( l- }% @; @; W, F  `: P7 w
==============================================================* W- Y% Z) f  t+ [  i1 }: h* y
【程序33; B9 D# j  u4 n4 Z& _
题目:学习gotoxy()clrscr()函数   % u$ }% S, e" n  I6 Y' u8 w
1.程序分析:+ J& `! V5 E% m7 w
2.程序源代码:
5 Y# a% Q0 |2 Z$ q! q, V9 y$ [#include
  M1 K, L1 z8 O! C, z/ F2 x7 x) Zvoid main(void)6 t  U% p5 a! w) q; y5 L' R. k7 Z6 h
{
4 H# F( t2 K; I: ~  Aclrscr();/*清屏函数*/2 J2 k) s% {9 @# ]* y: T  A
textbackground(2);5 F! H# E4 b% ]' i
gotoxy(1, 5);/*定位函数*/  o. Q5 D) O% Z/ o9 r
cprintf("Output at row 5 column 1\n");% c5 U$ m' B, A4 e2 w1 o9 g
textbackground(3);
/ m9 \) p& C0 j* V, hgotoxy(20, 10);
2 A- V% _4 g0 {7 z! l( xcprintf("Output at row 10 column 20\n");
9 e; E" L( V! v5 h) }) N6 h' P}
8 y5 y$ J3 G& e==============================================================1 n0 t6 [; I# }! ^* C4 J4 `) s
【程序341 J4 b9 E% [( S0 E% I
题目:练习函数调用
4 O  C0 Q: h& J; @5 x1 c5 I1. 程序分析:
4 q3 a! E; H5 J: M  m, E# [2.程序源代码:5 Q! f/ w/ l$ y
#include * m! N* D* q$ s0 O* o6 x2 d2 u; w
void hello_world(void)
; t, \% c9 d2 {4 x9 N{
; X  S+ _* k; S% k7 {printf("Hello, world!\n");
0 k, B6 n/ `5 G8 E% p}% F2 V* T8 l8 w* A2 r
void three_hellos(void)
9 d7 @) B5 P9 G5 U{
5 ^2 ?, ?* k. }  \9 r7 o' oint counter;
1 q; X8 @5 l( S0 bfor (counter = 1; counter <= 3; counter++)
2 m4 e! Y3 w4 J8 U# m0 phello_world();/*调用此函数*/+ O9 |7 O+ P5 k; t3 |* F
}# E7 d' V; y6 l" A' B( C
void main(void)
. q& t2 {& T/ M0 u+ p{; U6 s2 E3 U; i# ~2 E
three_hellos();/*调用此函数*/
/ V- h( z3 r3 w8 R5 n/ n# ]}8 g, K0 }. Z6 I! X* _3 n9 r* h) b1 u
==============================================================
# |) }( S( Q9 J$ o( u* t9 q【程序35
+ |6 z& T( w# ?7 N: t- N0 s" t% w7 |* H题目:文本颜色设置+ Y. c7 r! J" S1 s6 {6 I8 h
1.程序分析:
+ _! p1 W2 V7 {) `, p. ]2.程序源代码:
& a8 W1 Z/ R1 Y8 c, y#include 3 S4 W# v* l5 U( F4 ]( O
void main(void); [- [5 e# q% K; R4 }; B5 p' G
{
% k+ T) d: `' {4 Y: F4 tint color;& I, ^) j! l! X# _/ z* z; v% [
for (color = 1; color < 16; color++)' r6 b' L/ V% e0 ~
 {
6 Z: X' H# Z9 s/ @8 `5 s$ x8 k textcolor(color);/*设置文本颜色*/6 ^  r0 e4 L+ |+ V# d
 cprintf("This is color %d\r\n", color);
6 B, e8 _7 E+ |) e }$ g  R1 p1 w8 b/ E0 t+ s
textcolor(128 + 15);# ]4 P5 f. @, ^
cprintf("This is blinking\r\n");7 k" z: h& I5 j7 d+ V( M
}  f% \3 Q; ]4 C$ j
==============================================================
1 e- ]& ^% l0 l【程序360 {4 A* q- l) c5 v5 s! m" ?/ [
题目:求100之内的素数   5 |6 W) j& n0 g' v
1.程序分析:: P$ b0 q" y4 @
2.程序源代码:/ b6 ]2 p; ^4 o- y
#include + f/ P+ j5 f& S& v( E
#include "math.h"
3 `; b. X+ r7 J8 |, U#define N 1019 b% o: P9 x! j( C4 D* V" \
main()
, g0 e2 I! O! w" I0 w) S( n# }{5 Q1 H+ k! b9 g
int i,j,line,a[N];
  q. ^* Q: h  i7 R) K4 Gfor(i=2;ifor(i=2;i for(j=i+1;j {3 M8 A9 {+ S- l( V& N& x
  if(a!=0&&a[j]!=0)$ b/ V! Y' T" l2 @: @
  if(a[j]%a==0)1 V2 K* m0 l0 T
  a[j]=0;}, U- X) M- ^% d  R
printf("\n");
6 d/ {* e: ~3 T$ pfor(i=2,line=0;i{
% f0 `9 M& Z+ _" M. r if(a!=0)( _: d+ f  s- y: {( _( c
 {printf("%5d",a);0 q% x/ _/ n. M+ Z9 n' Z
 line++;}9 k8 s% t+ a" K4 A# L" _( [/ t
 if(line==10)
4 c  K% h8 S: Y& _% K5 ]- E {printf("\n");  U9 q; A  f- Y; a
line=0;}/ U& j/ z0 z) @/ X# @2 Q& N1 }
}$ h5 C- _8 ?9 ~0 K' V
}9 r' o! h  C  P  v# T2 c
==============================================================( P% y( k- _' ~
【程序37! C4 m" I9 K6 O  J
题目:对10个数进行排序
/ e! ]+ W$ i: t/ [! o1 M  a( S1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
9 D/ M7 T; C, X: [      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
4 {5 K# M- m7 Y$ b$ x2.程序源代码:6 X8 K2 F: T5 L- Q0 E9 `$ S. Z$ m
#define N 10: q1 I  W! B3 K" W' t$ b, L" Y. S7 t
main()
; D- b* o% T! s1 Y7 B5 x% Z{int i,j,min,tem,a[N];8 a2 n3 l' {* t& h3 p' ]
/*input data*/
" q& y0 S1 i6 Rprintf("please input ten num:\n");
( N. D$ w3 K6 s/ Ifor(i=0;i{/ u7 [, [* k6 i
printf("a[%d]=",i);% i5 J1 d: Z' d" o% z3 X4 ^
scanf("%d",&a);}3 S' X3 {; l, _+ ^4 s
printf("\n");- }& r& J9 m5 Y5 X! E( E5 n
for(i=0;iprintf("%5d",a);
3 w6 k( v6 }3 [1 Y; F7 V2 Zprintf("\n");
$ {% u5 g3 ^  \8 ]% r. G6 `. P$ W3 y/ f/*sort ten num*/4 k5 m0 z( r$ Y3 j4 e& d5 d) U
for(i=0;i{min=i;( @4 g- S6 I' P# j
for(j=i+1;jif(a[min]>a[j]) min=j;5 r( M8 W9 O( G* N5 k
tem=a;
4 M5 \( Z/ a+ M( E( x  h, ta=a[min];5 P$ B. a' X% s. R' w! Q2 c
a[min]=tem;
: W8 \' D" I5 |" F2 V' |}
2 @4 h6 x- _! {; }2 x/*output data*/* a7 r3 s6 x3 N' ~9 h6 i7 f9 R
printf("After sorted \n");
) x. x; p" N* l4 L! o- X9 e; ifor(i=0;iprintf("%5d",a);
# s- H/ N/ i: t. |}9 \. U$ L( e6 P" z
==============================================================$ g3 M" D. B& a( l6 R4 ?- v9 n3 `
) W+ o4 o4 |, M, ^0 F1 C. z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-3 22:13 , Processed in 0.060947 second(s), 33 queries , Gzip On.

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

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

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