机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2260|回复: 2
打印 上一主题 下一主题

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序27
% z: Q$ Z9 E0 G1 ]题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
' M% M1 Z2 `7 j6 z4 E. k. P! t$ C) W# F1.程序分析:
8 f0 m0 |7 G- [' d1 ~4 n; Q9 w2.程序源代码:# A5 P) K( e7 V0 l4 @' |* u' u+ ?
#include "stdio.h"
- J6 @8 [. z9 i6 Tmain(): @2 H, J7 V8 \; H/ T* d
{
  u  J( ~8 a# I* g7 g/ o- w, iint i=5;
! e7 P& q" J  Q& l* ovoid palin(int n);$ _  D) [- d, A+ ^5 ^% p: ?
printf("\40:");8 E+ L4 ]1 @( R- ~7 j) R0 l3 A
palin(i);
9 j. {1 C% H# iprintf("\n");9 E9 N+ C' v1 E2 j: Q( Z
}
( h& A- X( n6 @5 r/ n5 r' o3 Gvoid palin(n)8 }, I; N. v1 J  U
int n;* [) n. P0 Q- t( R( a, h5 o
{: }8 ?3 d1 s* U) {# U
char next;1 Z8 P" f& G" _# Y* C, L, }
if(n<=1)( ]0 O  s: ~0 X! R3 ?( w4 X
 {
  ~2 m  z3 i) R3 S next=getchar();( i2 k3 w8 ^; c5 G; q- o
 printf("\n\0:");5 Z  c/ b5 w" m* m/ D! \8 F) o
 putchar(next);
& H+ P/ t9 N9 W }
7 J) y. `4 J( J8 m# kelse
8 b  P2 Q, O: L' x3 @2 q! O {& A# {, j. M% E+ d) _, }
 next=getchar();
, F0 I- i% y! H palin(n-1);
' I% t' \; @* J, ^4 [/ M putchar(next);; ~8 l% ?0 u1 l: R! e4 j* d6 ]
 }4 U* ?+ f, h* a- R6 Q) E2 J, a; N
}% X( ^" p4 b8 n0 W% a' J/ u' _
==============================================================
! O6 O) X* C" ^9 M0 H/ n) ~7 i2 q【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 ( y7 A' q* @! q- F7 J
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
- u7 |# M# C& E5 B' y; P   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
; L( x4 z1 X/ Q% i5 b( z   问第一个人,他说是10岁。请问第五个人多大?
5 W/ f+ n% u/ E/ Y9 I1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
, J6 ~/ u2 a# N4 F' C8 O$ J2 W3 @7 e      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
+ C" u" }- {9 z) J  I2.程序源代码:% X/ ~/ _# E, f3 V
age(n)
5 u) E" g! l3 N( U4 Rint n;6 s( o% U1 t( |. H
{8 I- ]2 l/ o- c7 I* c3 m- ?( ]0 G
int c;+ V7 g! `) l/ `
if(n==1) c=10;1 k* @# G* c! e7 V2 z9 n! N* h
else c=age(n-1)+2;
" |4 ^0 N) t+ Oreturn(c);
# e9 L- J; |1 `; R: d* |}
" I' n9 C, }6 F. L  fmain()" f& v7 F4 d# Z8 ~: `
{ printf("%d",age(5));
2 ?" [* }6 Z8 j) a- b3 u" J) L}( q3 O; r# N4 p, G9 u$ h' K
==============================================================3 D$ n' t/ e' @$ z7 h: E( W* k! s
【程序29! z. R1 z: l% u& K! z
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
  r) v& x' G2 I' I7 u1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) 9 ~4 a; f9 X1 g- K+ U
2.程序源代码:: P8 G' a. P3 A& f* ?5 c# z
main( )
& ^$ ]" \3 B7 D$ M{  b: s: D# ]# h6 @1 h" O$ N/ E( F0 W
long a,b,c,d,e,x;) w. x4 W  t  q  ?- O
scanf("%ld",&x);1 ?; Y$ f; {1 J# }5 n, l$ N5 I
a=x/10000;/*分解出万位*/. P) t9 q/ R2 f4 t4 K5 \
b=x%10000/1000;/*分解出千位*/
9 Z3 m" J' P4 e8 D! u# _0 |9 x3 Bc=x%1000/100;/*分解出百位*/7 E5 k9 ^4 g, c$ Y5 S
d=x%100/10;/*分解出十位*/
) |. i/ ?2 V4 r+ u8 Ye=x%10;/*分解出个位*/
4 r" U+ J6 H; x/ R% c  pif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);: p+ m" d7 ^* ~, k! v
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
% O+ M3 J; \7 J1 X  J6 J6 Q7 y  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);+ [2 z' e1 {$ a4 K# e
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
$ _7 M9 N* h$ }2 I  R7 g      else if (e!=0) printf(" there are 1,%ld\n",e);
7 W2 n5 @* c$ h}, I- c* u2 z: J; U& J/ K
==============================================================7 R& x9 S) x4 H; m% m9 G
【程序30. r; F# e% V# a" o; ]4 o
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
: g! A1 D8 d- X6 p4 o! `1.程序分析:同29
7 B) u1 R: g. P4 [% [/ d2.程序源代码:
6 e9 R- ~& T1 w, Kmain( )7 J$ U7 j+ c+ h2 e( b
{4 S& i: o9 h6 S  t. h
long ge,shi,qian,wan,x;0 O0 i' Z4 u0 i* I" V5 F3 H
scanf("%ld",&x);
4 Y) A6 N  v) g* y. g+ w' ~: O/ fwan=x/10000;6 t8 u: D) A$ v# E2 r; O; d0 ]8 L
qian=x%10000/1000;
# b; g) f' m% B  {& w# b' Jshi=x%100/10;# d: R+ @7 K0 c6 f0 X- k3 z) D- [% K
ge=x%10;6 w) h" V! `  g1 \, q4 y
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/- Y0 X+ y6 z9 ?0 X; c$ f
 printf("this number is a huiwen\n");
9 ?) E' G$ l- [' w9 Helse
% {$ R6 B1 l; v4 S( } printf("this number is not a huiwen\n");  M* [0 D3 E* T( d9 X2 Z& T+ l
}
【程序31
1 \& R5 X5 \' t9 d; c题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
5 f, F' K; ^8 `0 g! ?   判断第二个字母。
% h% |3 c2 u1 E0 y# R1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。* e8 K$ E/ p+ w. D) V/ U6 _& w0 {' R
2.程序源代码:  A" ?8 j3 ]" }$ m; N
#include : U* Z3 r' q+ I5 L9 M
void main()# A( p* N8 j: _4 V  T
{# d5 R2 g* }8 x/ i6 ~
char letter;
: H4 v/ M; W" @printf("please input the first letter of someday\n");
0 q- a( @' E7 Z% D5 Vwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
* r# \# E5 c/ m' Q) e0 k( s{ switch (letter)1 b9 ]$ D5 o  N0 W& S
{case 'S':printf("please input second letter\n");
1 O0 v2 \% h. m# ^- \7 Z     if((letter=getch())=='a')( A; b+ K9 E4 f, B, j( C4 s
      printf("saturday\n");
  m0 D7 o1 M  O, P1 O     else if ((letter=getch())=='u')5 S' X4 P9 Q) P/ u5 }5 }
         printf("sunday\n");% ~2 B2 P" ]+ C5 Y3 k1 I
       else printf("data error\n");& \: Y+ Y) H' q
     break;
2 Q% {( r- C$ L2 z$ b; ]. ?case 'F':printf("friday\n");break;
2 r6 G# @' @( jcase 'M':printf("monday\n");break;$ P, F* _. R& [2 X
case 'T':printf("please input second letter\n");
  k. L7 h1 [9 @0 y6 P! n! J) ^     if((letter=getch())=='u')
7 X; ]7 u9 H  _* y6 t      printf("tuesday\n");2 T; ]4 F( c* O
     else if ((letter=getch())=='h')
* C8 i! K2 Q" D) [3 t. e) c/ P         printf("thursday\n");
) ]2 F2 J8 e7 k  M3 ^       else printf("data error\n");7 P" S: x: _: s
     break;) ?' y0 m: y' I$ D+ r
case 'W':printf("wednesday\n");break;
3 L+ \+ y6 s6 e$ Udefault: printf("data error\n");( X" N4 W3 }2 v; i6 }: |
  }
% j7 `- M: e: @, {" \/ }6 ? }
! n, |5 ]3 |8 `9 g/ _' z* O}
, `0 t0 b8 o, [) `$ H% g/ [2 h& ^==============================================================
4 l& x5 k- z6 n+ C【程序32
5 n2 s5 X4 }  Y& F9 R题目:Press any key to change color, do you want to try it. Please hurry up!
1 N# ^* W  Q1 R- L4 y; q3 a& z1.程序分析:            
# Q& S: e' e8 i. _! `; k2.程序源代码:
3 W/ B& x4 I/ w$ ]" n#include
6 c2 q7 n3 Y& k; @( A# Jvoid main(void)7 P/ p5 X5 r. r. ^. D
{5 Z) @7 c- a# K- z0 p! ?/ k! e
int color;# ^% c* h& v" {$ I' Y# `
for (color = 0; color < 8; color++)
% i8 G) \9 ]; d2 k {
0 ?  ~3 b8 N" h0 _! R textbackground(color);/*设置文本的背景颜色*/( K% q5 O& Y6 D5 ]) q
 cprintf("This is color %d\r\n", color);' s0 l" W7 Z; i; r+ v3 w
 cprintf("Press any key to continue\r\n");
( D7 G- S, Z9 Q+ W9 {4 W getch();/*输入字符看不见*/
- i2 o$ E. {! r$ P; ^1 G }. Y. N# e( g, ?* I  S
}
; f1 L7 v$ @; X% |, L==============================================================
9 E3 e  T4 i# Z7 h7 u, I' p& Z【程序33
" |' G/ r, i. F题目:学习gotoxy()clrscr()函数   
& i* R* _5 |( l: v3 B" l1.程序分析:' x$ C8 c& ]- I4 V' r
2.程序源代码:5 }% e1 P% J7 X0 z5 n
#include 7 U/ M  Z1 B# O, z- U. [/ Z
void main(void)
' f% `/ r( N( s' c& I{
+ |7 D4 @; x$ `clrscr();/*清屏函数*/
* ^9 A$ p4 Z0 P. V8 Ctextbackground(2);
/ P: x- b9 t5 g6 c/ ^: G6 r. sgotoxy(1, 5);/*定位函数*/
1 s0 m% e& }# R/ acprintf("Output at row 5 column 1\n");
  v4 v" V: {) e: N( J* x' J- Ntextbackground(3);
+ M) J" e1 t0 X! B. {+ mgotoxy(20, 10);
8 k8 x" b7 @6 i" U# ncprintf("Output at row 10 column 20\n");# z# j2 E' E7 O5 b
}, k7 C5 _$ o4 b5 c
==============================================================
* c" p6 F3 @% K  F6 r【程序34
3 o0 `$ j- T) H4 O题目:练习函数调用
1 F; i; A, R' \3 G5 t' R" E2 U1. 程序分析:
7 [, P: V) m$ U. f2.程序源代码:) \* P/ k6 K0 X) X' Q% M, E
#include
6 }; U6 Z. f! r/ A0 K2 [! tvoid hello_world(void). T- ~4 z) W  T* k/ Y6 ]# {
{
9 {/ D7 O6 E1 p- N2 Z" E0 W& Kprintf("Hello, world!\n");
; }; ^* e) Z; Y1 A. w6 H) n' s0 b}3 h' R; q- f, b/ r% f; z
void three_hellos(void)( u: \# G5 f' Q
{
( b/ c3 s2 b# _3 X6 O. G1 F& eint counter;  L( l  B. x5 }2 ?2 k. J
for (counter = 1; counter <= 3; counter++)
4 `9 {6 ?5 R3 I4 o# |5 H) {hello_world();/*调用此函数*/' K8 [. D1 o% l2 P0 c
}/ i- I5 d' [' J* @* H9 L
void main(void)
* A$ A/ \1 r0 r% y2 C{
- I& ~/ y$ V: Mthree_hellos();/*调用此函数*/7 ~# I, f1 C: J$ V9 r$ g! r4 K% t
}
& t: x. ]5 M; B==============================================================# [: I$ p' q  r9 i
【程序35" B: d- L! J; U9 O7 L' V
题目:文本颜色设置1 |- V" T- F; o! S% I3 e% I! @
1.程序分析:
! O% V& {, Y3 i8 ]. H2.程序源代码:
7 y# s1 e# J# s: @3 B; d" D#include , W( e4 ?: A* [3 O7 L
void main(void)& ]! B- P, ]: w* c- m! V
{
) p  ^& B! K- `4 d; Jint color;+ T' ^% j, {( @- |% [; O
for (color = 1; color < 16; color++)
6 z0 W4 ]! C; u; z2 n {
, c; \. V+ s1 n, M! s, k2 [ textcolor(color);/*设置文本颜色*/
+ p' R* ^# z5 w8 B cprintf("This is color %d\r\n", color);
. B: U. l1 J+ Z }
* s# B+ n' [0 ^1 q% Z9 r4 U! N$ [textcolor(128 + 15);
6 |' b# ?8 N1 D7 _6 a3 ~* E% mcprintf("This is blinking\r\n");
) h* n& J9 k6 H! c! V) {1 N) v3 V' U}
; W- e/ D$ J6 r==============================================================
4 F5 V/ ?8 N5 t4 Q( E$ V; m【程序36
! f# F. n7 k+ s% b( x题目:求100之内的素数   , a! f, C4 z2 a* J
1.程序分析:
3 u2 C, M6 I5 e: c, z7 H7 X8 m2.程序源代码:
$ a- F1 d: w2 n) w: B! V/ P#include
- z# N, Z, z! O9 S1 c9 ~" d#include "math.h"' m6 `$ |. d3 |) g6 e
#define N 1013 M# U  ~- J( K# D5 G2 x4 }
main()
5 b( ?  G/ j) }; @+ o{8 {% u. L9 m1 y$ }5 @
int i,j,line,a[N];+ r6 ~3 J( B$ z
for(i=2;ifor(i=2;i for(j=i+1;j {
* p$ f, v4 s, V  if(a!=0&&a[j]!=0)
4 G$ O# X( d4 V7 V2 w0 [: k5 T  if(a[j]%a==0)
; }  @* x' }$ _( R  a[j]=0;}
- J; J1 P& Q& ?( |2 }0 @printf("\n");
9 ^: ~2 l0 t4 o4 C0 k; F' Lfor(i=2,line=0;i{
3 u8 y  p7 `$ x6 [( {: ]+ x! z if(a!=0)
3 m0 U( q; {# C  T9 ~4 t6 v {printf("%5d",a);
& O$ s5 J! o; g/ v* z line++;}+ q/ i' h8 h5 o3 L: F; P5 ]
 if(line==10)/ v, G" E9 P9 V' {  q8 ?& l6 J
 {printf("\n");
9 K4 X5 i0 D* f: U9 k& @line=0;}, L. S/ V# l+ v1 [* U6 L
}5 _* N! ]+ a* x$ d3 s, s. U
}
. L$ C  h3 Q4 a/ @: E/ A; \" N==============================================================2 s4 Y% z. z% b: |' A
【程序37- y- x! ]& ~6 ^( G0 }: |' [5 F
题目:对10个数进行排序" \; B8 q2 A8 J0 u7 O4 r
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
( c3 [$ q. M! j+ Q, R; F* `2 `      下次类推,即用第二个元素与后8个进行比较,并进行交换。        * o2 J1 q2 f$ S. M$ U) e2 Y
2.程序源代码:
, k3 Y6 Z/ S& @0 ~* h0 K7 i, k#define N 10
3 e& M: Y' v! Q" q' E0 X% bmain()6 j( `+ m4 I7 Q- j5 a* m7 p: g
{int i,j,min,tem,a[N];7 @3 X1 c: ~0 x" ^  @- y3 `
/*input data*/% l$ Y5 |$ V! o4 j' Z
printf("please input ten num:\n");
) R2 Y& E# y$ t* M% h! nfor(i=0;i{
& Y1 y, D! G" G( aprintf("a[%d]=",i);: W8 _1 ~% g/ q! j% c
scanf("%d",&a);}
7 E5 _# R* F: y2 l8 A- aprintf("\n");5 L. }! I6 V9 [# v$ E1 _' e
for(i=0;iprintf("%5d",a);6 U" L3 ~8 x' h" ?$ u$ M
printf("\n");5 ~/ v, H2 }& V' p0 m, N' {
/*sort ten num*/
- a/ j" Z) ]; w# R+ u& v% Jfor(i=0;i{min=i;, t. J8 d! z" n8 j' J
for(j=i+1;jif(a[min]>a[j]) min=j;" |$ ^/ k2 i5 B0 ~3 F- e: U
tem=a;$ e, Q% Y! Y1 A" P- G9 J
a=a[min];8 E$ S7 L4 C: ]3 v0 F, [
a[min]=tem;1 Q( u: J. ]- K4 F( J2 [& \
}
+ T; \+ c+ l5 A/*output data*/6 `' L1 q' b, A& U. z2 o" [3 u
printf("After sorted \n");- {6 R% z4 O6 {! Y( O
for(i=0;iprintf("%5d",a);5 k* z# X# v% I1 r( c
}
9 X4 c! @6 J8 E$ |==============================================================
: Y0 a+ e, q% ]7 i5 l9 l
( |& p& l5 |# F: s( J" ~
回复

使用道具 举报

2#
发表于 2017-10-7 16:29:57 | 只看该作者
十五字十五字十五字十五字十五字
回复 支持 反对

使用道具 举报

3#
发表于 2017-10-8 11:09:22 | 只看该作者
C==
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-24 21:54 , Processed in 0.058392 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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