找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

C语言算法27-37

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

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

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

EDA365欢迎您!

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

x
【程序27% a! ~( ]0 N. U. g, D
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
2 c2 \' b8 C  f/ Q1.程序分析:
: X$ G# S3 ~. q: k& C2.程序源代码:
' _% {2 ?# n+ z% Q, j' [% \#include "stdio.h". m1 I( C& q' A% K) y6 t
main()
5 G) w0 s  ~: u; l" h# p{. E! y8 D& h1 g( l9 X. E
int i=5;: A7 m! R' I) U4 o: u1 D7 b
void palin(int n);* u; Z$ _+ W* K
printf("\40:");. k2 V7 ~  N6 a( f
palin(i);
: `  Q; K4 A; S8 iprintf("\n");
! a+ T  ^$ R  {' N- a6 [}. H& u+ R2 t) S: Y4 w" q
void palin(n)
/ c& ~' P' X/ v$ _2 A! E: vint n;
7 G/ {6 r2 V$ y4 j9 l  W{
) N/ s/ }! C0 i  Cchar next;) C  E1 m) F1 j) v6 x+ T  N( C
if(n<=1)9 S2 Q+ N$ k: A( [' ?' \
 {
- L3 @& c' S/ r* E7 t5 n$ D2 T% c1 H next=getchar();5 s  Y6 F. `7 x6 ?! `" P1 d
 printf("\n\0:");
( D- I# |* L6 }4 _! V putchar(next);4 |5 b; `/ x8 i, J
 }
+ ~$ l: F+ B) F, Y7 v; d9 g0 e  _7 p2 K3 Relse
! s4 b7 Q# y/ L+ e {7 Z$ ^" B$ ^8 p4 p1 y3 Q: z6 U
 next=getchar();
5 G0 v8 h! o+ D# d# n! S% x4 _5 n palin(n-1);
' o+ s7 C0 E2 G1 X putchar(next);7 u0 c: V: i. }2 u4 T$ i
 }
# t; _" J) J# \% V}' M* [. ~8 G1 A! b1 ?
==============================================================8 S2 E) _7 ?- m% B
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 4 w5 [& h. `6 H7 R% R4 o$ b1 `$ ]& q
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
# \  X, C0 [( [+ `9 I2 E# X   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
2 E2 R( h* g/ I9 M! M" E0 o   问第一个人,他说是10岁。请问第五个人多大?; r1 A+ B/ _$ d" S( J/ e
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道# V; _3 H* D3 P! e
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。6 J& C' L) ~. n7 Z9 @
2.程序源代码:9 p( I5 d' a& J' j" m
age(n)" Q; U. g3 }& p8 F3 x  T" e  z
int n;
. m2 {# [! H4 B' n0 w+ d! j5 o- N{; }# ]2 L, C* d4 x; R
int c;
+ R4 y% w1 Z) ?+ s, k' e" B; e6 ?if(n==1) c=10;. o1 K5 U- L* X; E; h& M7 [
else c=age(n-1)+2;
+ O  j9 z8 @9 i/ c! E( h3 `return(c);
  ~3 o' w% w: X  C}1 u; ^& v* K- l* c2 u2 S+ Q
main()' \) m) t4 V! s- v6 Y6 j
{ printf("%d",age(5));
/ D: l% V" L4 C7 M1 l9 M}3 Q' `0 p# p2 h) b) D
==============================================================
! z5 ?, w  Z0 @. X* g$ l( B【程序29
1 X6 y7 F) w3 p8 u# a题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
) M) z9 n, H0 O) M1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
) O9 o! y: A+ ^  D% z) B2.程序源代码:& M/ w* w1 Y; z$ N0 {/ M! z5 d: k
main( )
! S  r! s2 s' ^& O. K6 ^3 a{# W0 r3 x; Z& C0 j
long a,b,c,d,e,x;
: H" L% G2 L1 L/ P/ Bscanf("%ld",&x);
- z  f0 s& `% s! Za=x/10000;/*分解出万位*/
% ]: n) U/ h# b( W! Bb=x%10000/1000;/*分解出千位*/) z+ W# M' N9 `( v" j/ _
c=x%1000/100;/*分解出百位*/
3 P3 r4 I( w2 ~- x4 v4 jd=x%100/10;/*分解出十位*// t, B! ?0 {5 n1 E& W! Y: K2 W
e=x%10;/*分解出个位*/
$ c1 u' [  Z+ [if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
- H: h' P4 W! o. y6 ^+ aelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
( P2 @4 @6 A$ j( b4 `  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
9 p- M  f- q; M( R$ N    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
4 g  K  y) }9 G0 f+ o      else if (e!=0) printf(" there are 1,%ld\n",e);& H8 Y, o7 j$ s8 q& D7 O
}: M" ?- O+ Z1 D5 ~5 D8 R" T
==============================================================( e4 p* J- h$ ]9 e
【程序304 |( m0 k# [0 `/ s0 O
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   & a9 p) ]( [8 c: J
1.程序分析:同296 Z. a  M( Q0 g& F3 \* S
2.程序源代码:/ j$ `" |, C; }" L- w, n1 B
main( )
0 {7 w9 o8 ?3 L{' v* E8 l5 |: G  B( S0 Z
long ge,shi,qian,wan,x;: _7 [  G+ G8 k* }, v0 I* }  X
scanf("%ld",&x);
9 W# ?+ S( z. b8 Pwan=x/10000;
5 d' v+ U" O: _8 ^qian=x%10000/1000;' L) _- s2 ?, q, d* h
shi=x%100/10;9 Y- l+ |. j1 A$ ~8 [
ge=x%10;/ p& h( l( f& w
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/+ M. B( o2 g7 H; Z$ ]% y8 g
 printf("this number is a huiwen\n");+ o" S" T- b; |, y" y: b
else( ?5 R8 D2 r' l' b
 printf("this number is not a huiwen\n");, f! w9 n8 x  k4 B4 I! E; s2 L% q
}
【程序31% I+ k; v& o/ R) p- n4 y
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续6 K* h( t1 r: S  D' _) N
   判断第二个字母。) s+ ]0 Y: ^; ^! K% g
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
8 j( W$ C" c  G# R* v2.程序源代码:
& }; F( V7 C/ I9 w#include
( E; t# ]6 M% \% C+ u6 Jvoid main()
- u/ N, ~/ W- o{
3 P3 {% N' n: Bchar letter;' i, Z" a$ i8 L7 `' ~5 m
printf("please input the first letter of someday\n");! W! Y) D4 p9 K9 o
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
% q- V/ a# D; b* N% y' m3 U{ switch (letter)  M) Z1 g; h$ e- g* C& y; f2 Z: B
{case 'S':printf("please input second letter\n");
6 v' v, i+ n7 N) s" j     if((letter=getch())=='a'); a7 i, M$ m, D8 F+ t! y
      printf("saturday\n");. K# R, I; Z. S" Q$ {% Z1 R0 p2 o
     else if ((letter=getch())=='u')
* \7 m9 A6 ~! o( ?         printf("sunday\n");
) D  h$ N$ ?% z3 V1 n5 `2 _% g       else printf("data error\n");+ l5 f8 T: v: X! |- j) J" R8 N
     break;
3 ~. H% B# u3 {7 S& Acase 'F':printf("friday\n");break;# P, W$ i9 L2 u7 G/ c- n4 ]1 H, E
case 'M':printf("monday\n");break;4 D5 n2 ~' F3 V$ ^
case 'T':printf("please input second letter\n");9 y5 a: ~' q2 f+ `8 D
     if((letter=getch())=='u')8 a" H2 L, Z8 K+ Z9 A
      printf("tuesday\n");
% b; \! V4 [2 E( p" D     else if ((letter=getch())=='h')
/ _, o  g1 d% z         printf("thursday\n");
; O3 |0 R; ]# f/ Y% u       else printf("data error\n");
: i0 _/ C7 M- |  a     break;4 w) t. V" ]* C  H+ a6 |$ `
case 'W':printf("wednesday\n");break;3 _- e' U9 S: H0 I
default: printf("data error\n");+ Y( o0 J$ v5 E3 A8 g! @( g
  }
! T) T% Z3 W+ [ }
1 r1 }" A4 I1 r0 R6 B}
, T( x0 m9 T# J$ a9 m==============================================================
6 S1 j4 y2 L) W6 d4 c( N, K5 I【程序324 J: o3 h7 `# q$ [( {
题目:Press any key to change color, do you want to try it. Please hurry up!
7 |+ |$ f+ P6 A; j, n3 Y8 I1.程序分析:            7 \0 w! K% e( C- r# s0 u
2.程序源代码:
6 s$ C1 q1 j' u- D#include ! ~) m8 _, J; _5 A0 W
void main(void)' X/ A2 X% b9 v1 k+ c' q  x9 ?
{0 I% o$ l; Y! U3 u. L
int color;
4 |! S) u! l! Q  R3 x% Efor (color = 0; color < 8; color++)
3 X1 Y: @& ?7 f1 D$ n$ \ {
* Z) W6 A0 h% G textbackground(color);/*设置文本的背景颜色*/
# a9 y0 H0 ?& L8 I( E6 Z7 f cprintf("This is color %d\r\n", color);( R! P: v+ B- |( [9 ^# k8 u
 cprintf("Press any key to continue\r\n");
! F' }5 F8 f) O2 h, \- i9 b# y getch();/*输入字符看不见*/8 k, s: B: M2 h& j; S
 }
, J/ V# k/ `% r  f7 b}
' w$ T' ^! a4 _9 j  }8 k/ C- I==============================================================4 Q2 q: [9 O1 F; c7 {/ Z4 H+ \* q
【程序33
9 m9 z2 Q8 |/ }" h' r题目:学习gotoxy()clrscr()函数   
" @1 S$ h. r5 ]# h: P1.程序分析:3 E# K( A! `; s# {
2.程序源代码:( l) a) i8 o) a% H/ Y, t
#include 5 M. y1 |8 K2 }$ @* Z! D6 _
void main(void)
: m% U" u) t8 ?, F" H* T$ H{
1 H. Z# R0 ?( c7 \: C8 aclrscr();/*清屏函数*/5 k' V, W+ r# y
textbackground(2);
1 h1 U' m  ]# B" Ngotoxy(1, 5);/*定位函数*/# @4 U5 w+ a, x( _, |! B+ j
cprintf("Output at row 5 column 1\n");- E$ L4 [- q- n( u
textbackground(3);$ d1 |( h& {! S; X  ^
gotoxy(20, 10);- ], j- ]( C( a
cprintf("Output at row 10 column 20\n");4 n" E# ]( }7 l3 y) A# J: Y
}
* F& [# s5 @( ^+ ^% L. W+ e. t==============================================================
2 N( u2 ?, F  h: h3 Z9 n9 E【程序34: S2 ?9 {' \0 S* K
题目:练习函数调用
7 [+ }( I6 t' [) I4 u1. 程序分析:
( N" N( j$ u" H" \$ A$ {8 O3 H! g2.程序源代码:
+ Y; t) d- U# s- h& S#include 4 u7 f/ N  z7 T7 W& L5 h# b
void hello_world(void); f' U5 g4 ]# C( o9 K+ b
{
+ u5 y' h( F' L8 h  \& @- R3 b3 u5 }& uprintf("Hello, world!\n");
% f* d. S' X+ ~' ?& E" E}
7 t/ Q( Q! N) ivoid three_hellos(void)2 D- }4 R2 f+ R+ ?0 N. o# B: E
{
9 Y  |7 B2 i% D0 J. pint counter;
: V. a& ]: ?% T" w& g. B  ~7 nfor (counter = 1; counter <= 3; counter++)
4 D0 i: |* ~0 b8 [8 Z+ z* g, ohello_world();/*调用此函数*/9 K: C2 R& c; H3 t* o+ i! Y
}
, {" j& U3 x- n1 ?1 Pvoid main(void)
, u0 U* B0 U" b4 I) R) d1 [{
5 }3 }) R# f9 J3 T) n$ t( Y2 h  G* Nthree_hellos();/*调用此函数*/, t* c- ?+ N% B8 v7 J
}! p* l6 ~) a( g1 ^) c+ k# F- Y
==============================================================/ G. @1 l% Y( L; r+ H4 V
【程序359 V( {8 d4 j  c" I
题目:文本颜色设置/ N# A' {4 ~9 ~' u
1.程序分析:
+ Q, O* _1 j( K: _2.程序源代码:& o% n% t5 @5 o* n9 ]1 G8 Y  h
#include
6 e+ f- `# w) \% Uvoid main(void): Y3 e7 ~3 m% ]8 p& ]! P3 T9 ^2 w2 ?
{
" ~0 {5 A- e# Y2 d: vint color;
5 s' n' `) W7 f8 G- r) rfor (color = 1; color < 16; color++)
0 y) Z1 Y( t6 }# B {
' D3 Y5 ?! e) \) L; n& { textcolor(color);/*设置文本颜色*/' A* s0 N) m6 `2 z5 V; w
 cprintf("This is color %d\r\n", color);
- a  ~7 O. C6 C* s7 t9 ]# J) F }4 G/ U8 G# @0 }3 I0 t8 e; T
textcolor(128 + 15);- `+ A+ z  y: ]7 v% k  e  c
cprintf("This is blinking\r\n");
$ Y4 X6 r* d* c}
+ q$ @- V! _2 d3 B- v==============================================================
0 @" o  |* Z. {  C' S7 f4 O2 @5 Z【程序36
- f" b, D, ~3 X: F# }题目:求100之内的素数   & c: Z1 H% a5 H1 \6 B2 Y5 |
1.程序分析:5 S$ V" O% s' J- u% D5 T5 k
2.程序源代码:, s5 f2 C( p0 f. r) s
#include ' n3 F& r0 [$ Z4 U; b& z7 P
#include "math.h"& c1 ~6 R' b; n' ~
#define N 1016 ~9 v7 K+ }* o( H" b
main()4 H" s  n0 L1 z- m9 J" X5 e
{8 f, N% U7 l( x' m
int i,j,line,a[N];
9 Y+ n) y/ X# }; @& h; dfor(i=2;ifor(i=2;i for(j=i+1;j {
( c5 x. Y% O, b  if(a!=0&&a[j]!=0)  l- n) U* T: ?5 W
  if(a[j]%a==0)3 {8 k/ o" s! P! U8 N
  a[j]=0;}4 N( j3 B, i7 m# s
printf("\n");/ ]0 v3 s: {) [4 o& F
for(i=2,line=0;i{' w  I5 T% [0 v* ~" i6 K1 y9 _
 if(a!=0)4 Y, r: F. k: M$ o1 V" H& J
 {printf("%5d",a);
, d) M: W. ^$ @ line++;}
; K" z) }" R7 B0 z) o if(line==10)* x, q, ?( O; {6 i4 n
 {printf("\n");, f* @1 ^* }' C' f  L* U* L4 H! i
line=0;}
& Q. O2 a3 d9 a}
) n, [. M( M5 q* g5 E3 `}8 M' U; s1 I, b) Z5 \- r
==============================================================
# h% u& T0 E5 u+ ^: \* v7 b8 P! N4 S【程序37
* _! c$ ]4 c' K- i& t题目:对10个数进行排序* c; W) \) e6 ^" w
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
/ Z7 J/ R% l6 m4 |      下次类推,即用第二个元素与后8个进行比较,并进行交换。        # X: e5 t' `1 i; i7 t& A$ N, e
2.程序源代码:/ U! J5 U$ d/ L3 p
#define N 10
& p. f- v" m. }& Z9 R2 ^main()4 F0 c2 k4 c& e! r" s0 i- V
{int i,j,min,tem,a[N];/ d) i8 b, |$ l1 y* P
/*input data*/5 ~8 H$ \  ^3 Q6 f  t! ]; n9 Z, m
printf("please input ten num:\n");; a& H7 N" @5 a* \
for(i=0;i{  i4 P* x( f6 @
printf("a[%d]=",i);
  H( x( a5 ^7 M; ]& yscanf("%d",&a);}
3 }) S; N5 w$ L2 k. {) ], G0 A) Sprintf("\n");
* u1 T5 Q) N: E# ]for(i=0;iprintf("%5d",a);% o# u2 [: i$ H! V
printf("\n");
. T! @# \0 v2 `/*sort ten num*/+ M  R! X/ m8 h- \3 M/ m  t  P
for(i=0;i{min=i;
2 r* [7 T6 K2 g8 S7 Pfor(j=i+1;jif(a[min]>a[j]) min=j;
" o7 Q  V" m' S' Otem=a;7 ?' n+ V( u6 e4 G# L2 l
a=a[min];. S2 q1 J" q' Q: t- {! J4 E
a[min]=tem;
. G" Z4 z. Z& A9 q' p- c}
" g2 q2 B6 F/ }6 {5 b/*output data*/; s/ r* ~" `$ k1 q. @
printf("After sorted \n");
, U, t1 |# f. i0 V8 V, Xfor(i=0;iprintf("%5d",a);) ?. H2 t# b7 Q, _& y- h5 d
}
3 ]& J/ S5 p( r==============================================================4 C" h9 e9 n' P6 T4 F, o
4 y. ^+ e5 o  \& ?) Y, M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-9-17 04:39 , Processed in 0.057747 second(s), 32 queries , Gzip On.

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

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

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