机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
【程序277 j4 H# c6 [5 c& [6 f/ K& c
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
3 P: k: K$ s1 t( L1.程序分析:
1 V- a' n2 V  U" l  H% S5 T1 z+ C/ b2.程序源代码:9 B1 F9 s7 `, ?% f# s2 }( ^9 w
#include "stdio.h"
0 I( ~( U8 v1 i! d' Cmain()
! s" `# y( _( L6 q! P, j3 E3 t{2 w9 w- v# N. y
int i=5;
9 m5 v" K* G5 Z$ R3 Y! Dvoid palin(int n);$ T/ D% Z+ q! K# ]( X
printf("\40:");, G& {2 P# n$ O2 ~' |
palin(i);6 H" [0 W" K" b% C! W
printf("\n");, `  e: y7 m2 f. G  @" S$ B# G
}' u0 s# [; G8 t  j0 D: V, J
void palin(n)
0 v; m6 j1 o( H( s5 {int n;( n4 v: _; d8 s" h
{+ ^, d$ M( F7 u
char next;
# |* V' Z' _+ m$ @if(n<=1)
+ C  g, [& d0 A {
% f' u& [' j, U next=getchar();. w5 g. l& z& e+ A4 u& A
 printf("\n\0:");9 c' A: s+ z  k5 g" r' U5 M1 y
 putchar(next);
  y2 K+ A' Y1 `5 d- e, T }6 e, \9 |+ H# [& k2 D) U# e
else/ C  C2 B- [' X2 [) a4 _
 {
% U- F2 d: c! S  `3 S+ V next=getchar();
' T0 n1 G: K4 j, ?/ W2 S, Y' _4 R palin(n-1);- l2 ^! n: n9 r) g; R& H1 H
 putchar(next);
( B2 S+ E8 G. H9 N: H }
9 u, Q  Z# v$ @+ N) n" R/ t( w}  |; b, }3 g7 O& d% u" N
==============================================================8 V) r8 z- Y4 W# S* a
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
$ I' e/ g$ `7 I. H# h6 j+ F$ Y题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第& T! [& H$ S( T% i; P
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 ( G: E, Q* [" {+ T1 K
   问第一个人,他说是10岁。请问第五个人多大?% l2 _& l9 z* Y$ s$ Y
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
+ n( S3 j$ o; d: [; h      第四人的岁数,依次类推,推到第一人(10岁),再往回推。/ g% j6 x  O3 |: N6 j& U
2.程序源代码:
( g" B" O1 y. }1 Sage(n)( N! b. V6 Z9 n/ v
int n;; ]; q3 |4 y  o5 m4 o  }
{5 D3 Y: v9 n6 D( |& X  u3 I7 ~
int c;9 o8 O' e2 x) \
if(n==1) c=10;
" c( B0 f8 s7 s/ Y9 N9 d' Telse c=age(n-1)+2;; j' r6 x1 C( ^2 |
return(c);
  G% a" J$ J8 Z}
* f# _3 H+ M2 F$ \8 ]! `! |) @main(), A1 s$ u; x4 I) [! E1 a! t( b
{ printf("%d",age(5));
* V( Z4 r. q7 a* f2 m' i. r}( |* U* \) v5 c5 m0 S+ c6 T7 k
==============================================================
4 l3 C( b2 L$ I, N( A【程序29
0 [6 d8 D; I5 ~4 _) a题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
) `' ~. ]! _" ^* B1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
4 g" e( C5 V) f+ P* _2.程序源代码:
0 L5 k4 o4 E' h4 tmain( )" t, c3 D  g1 t- k# ?/ @/ R
{! K7 u; V) Q: Y' j% H
long a,b,c,d,e,x;/ Q* N2 g( s! j& e6 M2 S+ ~
scanf("%ld",&x);
% a! r# M5 p: V; _a=x/10000;/*分解出万位*/; w/ L' K4 }  x1 P+ a
b=x%10000/1000;/*分解出千位*/4 o: c$ B' ~( m
c=x%1000/100;/*分解出百位*/+ s% B  q* u% O9 m' G# ~8 S! E
d=x%100/10;/*分解出十位*/
2 i; `( L4 r" @' @2 R) ?8 ne=x%10;/*分解出个位*/
2 x  x, O( O3 a. U* E7 l+ Z' tif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
$ _7 G: j8 _" a0 R: Uelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);0 Y9 P4 ?4 L" g! p. n; A( q& N( k) I
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
+ k' _' D4 i+ p& F" {    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);7 ^1 ?/ n: g0 n: B$ ?; \% W& z
      else if (e!=0) printf(" there are 1,%ld\n",e);
3 P" j. U1 `* `) f# d" g* e}
% L/ q  n6 {4 P8 M' {9 L" \==============================================================
8 I  A$ E  h% c9 `【程序30) |1 t/ {" j+ _1 L/ T& V% t
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   ; I9 t: I1 y+ @5 T' c. X; k
1.程序分析:同29+ i/ ~2 o1 E0 E6 r  E2 D' i
2.程序源代码:
- [/ L* l4 G1 ^4 W1 D! amain( )2 @. N5 V  r6 O, I* k7 b
{
3 ^8 E/ n9 R, @6 T( [% d2 F) Dlong ge,shi,qian,wan,x;& ^8 C7 N- I2 u; M6 u
scanf("%ld",&x);) B! H8 H4 S; u, {% v- E
wan=x/10000;
8 A1 ~9 B- }1 r& b9 dqian=x%10000/1000;) X& m' Z, r1 L% \3 X- M- D
shi=x%100/10;
, v) e& f: l' c+ f9 b1 s7 Age=x%10;
4 \" x6 s. K: ^, yif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
( w) l, k+ g' ] printf("this number is a huiwen\n");
$ j1 A. x2 ^& X, E! W* B9 _3 eelse6 Q( w0 J8 E# X3 r
 printf("this number is not a huiwen\n");# h. L. R+ A% o/ s( h' m4 h
}
【程序31
/ }7 [7 M# }% I题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
2 E9 p/ d1 T& d; l: R   判断第二个字母。$ \2 A! z: f: L% \+ t" z9 ]1 o
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
* a" M7 Q5 C0 a  V: w& ^2.程序源代码:2 P. N/ H3 W: W' S
#include 8 G' K# L, Q1 p, \* @' h
void main()
( p) W. ~3 l6 f" f+ k' l{, n! G6 k1 a$ L' i1 [
char letter;
. C* k( c" j* i3 p4 sprintf("please input the first letter of someday\n");0 [' J4 O  V8 N9 k$ B
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/2 C" A. @* X/ l% m( [* x2 m" _
{ switch (letter)
5 ?) e$ L0 G$ C5 ~9 V# e{case 'S':printf("please input second letter\n");
3 S1 \  v. c( ?# I! h' d' n     if((letter=getch())=='a'), ~. P; B; V4 a+ d( t8 Z8 G+ `  Y  n
      printf("saturday\n");
4 b' m5 L! M1 i0 S8 R     else if ((letter=getch())=='u')
5 x3 M- v  u4 z7 j" e         printf("sunday\n");+ V' W7 G* D  ^+ C9 f
       else printf("data error\n");$ o: K  Y& z! r% \# Z
     break;. o! T8 ?' R$ `, x
case 'F':printf("friday\n");break;: P+ a& f! s2 q1 G) F! T
case 'M':printf("monday\n");break;
# q/ U8 r0 _, Tcase 'T':printf("please input second letter\n");% R0 L+ @8 y% ^- c+ z
     if((letter=getch())=='u')
- m. R% p: w9 k! x1 K# x5 Y& d      printf("tuesday\n");+ r, ~/ Y5 C2 u- S3 e8 K9 I, F
     else if ((letter=getch())=='h')1 x% O% g7 `4 M3 V
         printf("thursday\n");
0 b* {1 Y" d  g& X       else printf("data error\n");5 x2 P; b9 M) O" S9 N! a& H
     break;
7 d6 x7 G- j1 t  N! tcase 'W':printf("wednesday\n");break;/ _6 D" k! g& P" f1 Z) i
default: printf("data error\n");( O$ z' r! |5 D% w; U0 }" k. m
  }
: I0 T5 N) W$ [) h, h }
' G- z. b8 U! Z. l- O4 a1 l}# W* p" S' Q6 s$ Y: h, j  x/ e8 f
==============================================================  D$ `# \2 T  h& N* W- w
【程序32- P0 Z5 m7 ~8 l1 d  b1 z& @
题目:Press any key to change color, do you want to try it. Please hurry up!. ~- X0 f* i& b: j# ~
1.程序分析:            
: Q6 m! S, n2 k' r" v2.程序源代码:. q  ^3 N! s, e4 \3 `. e4 W
#include 7 C% H0 l. p8 c( }& Z) T  ?/ V0 Z& t
void main(void)! V& J1 p( ~% Q8 J, b
{9 E& ~" Z' a/ Q6 v
int color;
- u# D! f% T3 E. a% Qfor (color = 0; color < 8; color++)6 f% j6 A0 b, b. w: H" b3 }
 {
- a. a7 m6 N& v# ?  c$ [) I: X+ C textbackground(color);/*设置文本的背景颜色*/- {% O, ^9 z5 b5 n) h
 cprintf("This is color %d\r\n", color);
$ ^# s5 Q( o/ I cprintf("Press any key to continue\r\n");/ a' C  X2 Z0 B7 X/ A
 getch();/*输入字符看不见*/
/ K  S; m! z# J4 c# U/ Q* E }
4 p3 j/ k# J6 X" P6 V}! l! m- M1 X3 ^$ D. u
==============================================================& q- L1 Q( ]% ], t6 ~, y* `# x: e
【程序33! h5 o% B9 `7 V
题目:学习gotoxy()clrscr()函数   
/ `7 u5 e/ P+ A4 N( }1.程序分析:* P+ W- E1 ^2 a% k4 J6 L
2.程序源代码:
5 R# C/ m3 L1 P9 C#include / r' M; D6 q" M- c" i( y( J1 R
void main(void)
  Z4 _0 S% w6 a9 O{
2 b  a2 V! T. ~7 Kclrscr();/*清屏函数*/: k% W7 x/ I1 K2 s* j
textbackground(2);' ?6 ?  l% a- V* z
gotoxy(1, 5);/*定位函数*/$ `1 l) `' N% j) [7 w, U9 c5 z* N
cprintf("Output at row 5 column 1\n");6 L4 H7 T5 L8 g( V2 ^
textbackground(3);) @3 _* ~2 T. x4 c% S
gotoxy(20, 10);
* l7 c# u8 S" w/ ~, o8 a# O/ x# qcprintf("Output at row 10 column 20\n");
5 c* o8 F: Q- @}
- F8 K2 n* F# z! N7 S3 x9 N==============================================================
' J3 h+ O  [5 V1 i【程序34
( c- I+ o5 N% S) V7 x题目:练习函数调用
) ?5 I, B/ n& I, Z$ s/ H, f1. 程序分析:
- c+ m5 x4 ^! T5 O  _) W- [5 n  H2.程序源代码:
( i5 l% k, f& I6 l  k#include
+ j9 o7 W/ b0 S' D( q! Q  S7 nvoid hello_world(void)
! p0 G" K( [( r7 N( o{& _* c4 E; S% t- d, }9 _  t! y
printf("Hello, world!\n");  X7 p2 }( x# C9 C$ e+ N
}
* w" x; P- R* P- w/ r1 y# I" f4 qvoid three_hellos(void)
6 {0 ^( }( ?) i( C9 H! {{
3 l( c4 Y2 k& |int counter;
4 D# f6 |4 |( r* F) L4 F# jfor (counter = 1; counter <= 3; counter++)3 z# o% ~) s0 n8 f2 ?0 B
hello_world();/*调用此函数*/8 r7 d" f# H* G  V
}7 A" L$ c. N- [+ K2 C  z
void main(void)( }3 ]3 I! k9 K  t0 R& U
{
0 H& v; P2 t1 p/ D7 E9 a- H% {4 ?. `three_hellos();/*调用此函数*/6 X* L6 C9 N/ v# M. U: \; }
}8 M* b8 y& k( ?: L' F5 t
==============================================================
6 ]8 i6 B3 o6 i; U/ q【程序35
5 h- x0 F5 o: f( j# d! o题目:文本颜色设置
) d' Q! j' r" O  z' P1.程序分析:/ }5 _: z! I% \4 @0 K
2.程序源代码:
  i. z. i1 Y( T% ]: w1 I#include
9 _9 J9 s5 o7 v; l3 I, ]void main(void)0 |; f$ A, B# b$ L5 f% @
{
& N; o) f- U# M9 X9 u) N1 @  e! Xint color;
" Q0 \& F8 E4 ]' P; h$ J2 Mfor (color = 1; color < 16; color++)8 a. O. r  p- h( A8 Q3 y! k
 {4 t- ~: l$ \6 E2 l- X: h( U6 ?
 textcolor(color);/*设置文本颜色*/3 ]% _( q/ }& t: ~- ~4 V, `3 i
 cprintf("This is color %d\r\n", color);
3 y) @( y- l2 W3 H' u, \4 _ }
# Y, e* m0 @+ _# G7 S$ S9 o) S2 Otextcolor(128 + 15);5 h- l5 g+ O% I, n8 ^( l
cprintf("This is blinking\r\n");) C2 O, T1 K$ z# Y; N
}
; l9 S5 a. v, }+ f+ W==============================================================) x$ g7 j0 |: A1 j' w# G+ S
【程序36
; y; L& N1 K, I& }! P- M+ U+ h题目:求100之内的素数   
$ `& f: q, S- z; m5 t5 R1.程序分析:7 w6 O) I6 g; g& J+ s
2.程序源代码:
* I! e' u& B4 `. z% E1 L#include / ~6 W4 h. G' x7 c9 Z! x
#include "math.h"7 k1 K( D. p& W- S0 c; S
#define N 1013 j8 a4 B) \. v
main()
; |2 m4 e! x  `. m5 L3 t( ]7 b" y{
& f; |% v" x5 w" h, P3 g) X5 pint i,j,line,a[N];" P' `- U6 W- U, i/ R: f
for(i=2;ifor(i=2;i for(j=i+1;j {
1 Q( U# E9 H3 ^8 F  F4 A: \  if(a!=0&&a[j]!=0)* G' l5 R8 l2 u& Z1 {" t9 W& X- n( q
  if(a[j]%a==0)
0 m9 l# `9 P/ }* `# q  a[j]=0;}
: h  d5 M. _0 e+ B0 u9 }printf("\n");
" D2 \* F" [, d' lfor(i=2,line=0;i{
% n9 G5 A$ B$ \* C if(a!=0)+ Q$ _0 k6 B) B5 k3 j- F
 {printf("%5d",a);* c  f6 w7 y0 ~. }1 P" a1 [
 line++;}7 C% Y& K; X3 N% C: d
 if(line==10)7 S: V7 J& V9 k" U- i
 {printf("\n");
/ E4 E' G! z( U- B9 Vline=0;}
+ ^2 y6 D  G" b# {# r}
+ `* Q$ w* p. r/ g& L5 }}& U3 M, N: s( w1 L* Q) n
==============================================================
+ q: O: d3 \* T7 @2 D, B【程序37
) q  L) |1 Y, a题目:对10个数进行排序
2 R! G8 M$ q' B! D$ y9 Y- P1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
; f$ K8 t; R' V# `  P      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
- \* k2 ~; d3 e" l' m& ^, ?2.程序源代码:) H2 ~/ Y- O% M$ G8 p  `* v+ |
#define N 101 k* ~  }- `: [; `  J) p# y
main()! M3 z7 H* O7 Q$ Z0 b- n
{int i,j,min,tem,a[N];
5 I( \3 C* `. [* \2 \  q( D/*input data*/
# Q, v/ [3 c0 J& b  V1 gprintf("please input ten num:\n");) ]) c0 K0 W1 t& S* k7 h
for(i=0;i{# t( j9 O/ b/ p' E% V7 Y& ?4 Q( [
printf("a[%d]=",i);0 G8 D9 Q& Z% M: Y1 P7 K
scanf("%d",&a);}/ f0 R: X) a0 r% Z! p, N& m7 Q" f
printf("\n");
8 w5 J% d5 Q, V8 {, }9 C0 Ofor(i=0;iprintf("%5d",a);
% E) k& I- ?9 z( ^) Bprintf("\n");1 }: o( \0 i& V
/*sort ten num*/0 T) ?7 c7 C. e" T) w2 l5 b
for(i=0;i{min=i;5 D5 }! t' a9 V+ K' V* e
for(j=i+1;jif(a[min]>a[j]) min=j;
9 o+ n8 F' z' B0 Y% T# z9 g- Htem=a;
! r& h/ U2 s" C0 E$ m7 w/ k! Ua=a[min];, s4 E( @( V3 O2 b. r
a[min]=tem;
; p4 ^* V; S5 ?- L/ L; Q}
. C! z# m. y' ?' b% U7 A; `/*output data*/% X+ v8 R  P/ K) X
printf("After sorted \n");
+ {2 ]# P- P; Z8 h& y# g- M' J: Tfor(i=0;iprintf("%5d",a);7 I& @/ P% o1 f: l9 R6 c% F+ A
}
4 R  i; O2 O; S$ O) x# h! B# [==============================================================6 ]- m9 x9 R2 p1 G0 c
, `( M9 W+ S2 f7 a
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 15:39 , Processed in 0.049474 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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