机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序27) k- O; O8 j$ b% J3 ^
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。! f1 P; t) ?, v1 H+ U. q
1.程序分析:
, L3 g! W# L* l9 ^( X& Z2.程序源代码:. t4 e& _4 J' S( ]# V2 Z" _
#include "stdio.h"
7 m7 o3 T: q1 ]  I3 E' M2 z5 L" B% Qmain()4 e; }& r- b0 B. d- l' P' k
{
2 w5 g3 p0 c7 M& b+ Mint i=5;
2 o9 u5 X$ d  v3 bvoid palin(int n);
6 g$ P6 V) I$ G; o$ Q; Xprintf("\40:");7 F( G7 M7 T$ h, G' k7 D. m
palin(i);
# V1 m3 f3 i( l* O2 hprintf("\n");" O! J5 u! J% q# k$ x
}
  r  _6 \8 o; {3 Y& r" ovoid palin(n)
9 c" h+ q9 F# A1 D6 dint n;
7 z; {: C# [' L# R; h2 ^{) f% o% L8 a9 J0 s
char next;6 z( o' M* x5 j; E+ Q* R& N' r) d
if(n<=1)# p4 B3 H: W% r
 {
* |3 o4 k/ o: Y. Q4 l; l next=getchar();
9 I7 e* i5 n1 U printf("\n\0:");  g! {0 q) e) t# N
 putchar(next);
4 x  K, ]% t, O }
7 X9 W& M: K. B9 @) melse) h) K: g  k! D4 s8 [) A+ [
 {
+ S( v' R' H! P next=getchar();
" W; Q  ?/ [4 B% X" ~. V( c8 ~ palin(n-1);
( U/ b0 v! l& G& {4 i) h% t putchar(next);  A' i" t  Q7 A3 b# M
 }
5 v& Q. a" m; O1 a) [! V}
/ Q0 y; ?7 J" C* l9 }" U==============================================================3 U& s7 h4 i% L. E5 B) [
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 ; O) Y+ H0 W, K$ O' Y
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第+ x0 X4 }. `) a. Q6 q
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
* W6 G- N; L6 G  z; ?& X   问第一个人,他说是10岁。请问第五个人多大?
. y% ^) {+ `; x1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道, j% s% h# `# ^" ~" m7 ~6 h
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。- g: }& D6 T" c+ l! E
2.程序源代码:, M; f, k0 u& [, I0 A! L$ p
age(n)0 [. y5 `! E9 Z' J
int n;+ D5 b5 v$ J) T" N2 b
{8 A) U+ Q# H9 {( |7 S  Z* u
int c;( I6 m2 ~) w) ^: r8 R) R# d. `: D
if(n==1) c=10;# u. c" a# O( F& [5 y* v
else c=age(n-1)+2;
' @8 M# F. t1 f' K& p) Treturn(c);; J- u- d6 o+ s/ ?0 H9 o/ w7 x+ V
}) V- V% m9 u. a3 i
main()+ g! G% P! X8 o5 e" h
{ printf("%d",age(5));
1 `; X* }$ z1 J! S: G4 _5 W}
0 `& v- X- S( ]/ {==============================================================
$ r4 f( \9 z, S5 `【程序294 \" _( |/ T  B" N6 _
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
& a. ?, {1 T1 i) L) Z0 O1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
7 V6 z! ]8 ~4 V2.程序源代码:/ \) n+ R) O" |* t0 r
main( )
; ?9 k. T3 M' C7 f5 B! ^{# M2 j+ H7 w  T, O) t
long a,b,c,d,e,x;( D  v& f6 K7 R. }, ^
scanf("%ld",&x);
# N; ], O# T3 R7 w: S7 m  V& Ia=x/10000;/*分解出万位*/
$ @. ]# O3 G) d' ~b=x%10000/1000;/*分解出千位*/3 [& ~- z8 K6 p1 K+ e
c=x%1000/100;/*分解出百位*/
. x1 e& v( w3 V. W, ~  c2 r- ld=x%100/10;/*分解出十位*/- D2 l" ?) ~7 A% C5 e8 ?
e=x%10;/*分解出个位*/
: W! N# {' S2 ?" C* mif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
3 J6 u+ W( M3 Jelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);9 J9 V8 R: f* }8 N5 I# U& z
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
, z) q" Q/ l/ V* U( d# K, V    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
; K$ N6 K( g% S$ d" e0 q      else if (e!=0) printf(" there are 1,%ld\n",e);
) k# T) K/ S' V& o9 d/ t* w- h}
9 t6 Q1 \" @& J4 I+ x, [==============================================================! v' V4 |3 \* D
【程序307 H7 L$ C! x& B, k1 u* X$ R% K
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   % D: i# n! N9 O! B0 P9 l5 [
1.程序分析:同29
+ o7 D. e9 W/ Y* L" ~' F4 g2.程序源代码:, Q2 X3 `# a, V: \
main( )" m4 {' ]4 h3 [: K
{
2 }+ A$ `. H& jlong ge,shi,qian,wan,x;
- G( V4 e5 O8 V2 cscanf("%ld",&x);' X3 U! x3 n6 \1 m
wan=x/10000;
  T5 }( Q, _, u+ n, q( h8 [- Uqian=x%10000/1000;
& D+ y( H! [. Eshi=x%100/10;
/ W7 v  C% h- ?3 o1 B) kge=x%10;9 I8 t8 N( F$ w; N) z
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
) ?5 h9 a0 t1 I+ ^( D2 e( | printf("this number is a huiwen\n");4 w# s' |+ v5 Z
else' Z" m0 W  g+ k5 g
 printf("this number is not a huiwen\n");1 B2 Z& D1 A8 N" [5 r9 ]
}
【程序311 J/ F: w0 E: _
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续; E- g- h3 v9 g9 a
   判断第二个字母。  g( H2 E) b! G
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
) E# X9 G* C% W* n9 C2.程序源代码:. L+ d: _( Y8 O# Q
#include 2 t8 n6 j, V0 X. f( Q+ u
void main()1 f- F) i" M; o" r, G. L' T1 @
{
. k, t( P4 i7 o+ S7 q4 Y, |char letter;
& M# z9 w" E7 U' A$ B- Yprintf("please input the first letter of someday\n");7 V& S% H& [* A+ D
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
: h" H& m- c6 i( K: P, M' i5 |  S{ switch (letter)/ E; n! s# l/ X
{case 'S':printf("please input second letter\n");
& G/ V" n% x' I' h& f9 c2 l& o     if((letter=getch())=='a')% _1 l; W# F7 x" W- o7 d; }
      printf("saturday\n");
4 n9 e6 i! i" k, Y- L     else if ((letter=getch())=='u')
6 i) ~- v2 O9 H9 N         printf("sunday\n");5 K3 I& G9 F. V9 n& Y3 C7 x( S' z
       else printf("data error\n");4 W8 d6 _) c, U# X# R
     break;  o, q3 m& s# [. `1 U: K" l+ Q. M
case 'F':printf("friday\n");break;; u* h$ g; k+ C# P" f8 O
case 'M':printf("monday\n");break;* h0 ~0 ]7 h+ o- l# |6 S
case 'T':printf("please input second letter\n");5 D$ |% x1 E8 v: G5 _
     if((letter=getch())=='u')
- U5 P' w' K3 o" P      printf("tuesday\n");
% D0 m3 G( T: L     else if ((letter=getch())=='h')' U8 |- D! F+ {; h
         printf("thursday\n");& k' G) r# [1 r5 I# C% d. [
       else printf("data error\n");. E6 K/ O: d! n7 K4 i& j" N
     break;
4 H$ m; V+ [& a1 Q# z; E' H1 Ocase 'W':printf("wednesday\n");break;' N0 E! S0 g4 I2 |7 T
default: printf("data error\n");, F" Q! }4 k0 P- s% \5 H+ t
  }3 r$ \6 ~. @' k4 ]/ C
 }) n8 v) A. w) l4 B, Z0 l- ^! [, c
}
% H4 G1 k" A" q1 e: t2 e==============================================================2 x: V( Q) o" i
【程序32
( B1 z% l, z" I5 s: O+ B题目:Press any key to change color, do you want to try it. Please hurry up!; F- ]( i8 \" F6 G
1.程序分析:            / Y* [! Q- z0 Y# X5 g. T
2.程序源代码:
5 {! G4 F( O& ?7 {; A#include : Y  w7 r3 M7 e$ x. C3 j: q; r
void main(void)+ C3 ~( N( [) x/ }2 a
{+ y' l4 y9 Y6 _, y0 c  N
int color;
5 T) g. F# P- m4 S1 j; G' y/ mfor (color = 0; color < 8; color++)$ w6 ]9 ]' C5 y  E+ d( F
 {
3 S; B$ d# A! U& |8 Q textbackground(color);/*设置文本的背景颜色*/
. P4 L6 a' z0 c6 c  I cprintf("This is color %d\r\n", color);
  F4 X/ E& T" g+ `$ J cprintf("Press any key to continue\r\n");) a/ I- O6 Y0 R7 P: H
 getch();/*输入字符看不见*/
( b2 O% m4 o& l9 K# ^, s4 R }
' \8 _/ q7 B% _- W}
9 {4 r4 }7 h) t* p! w5 ?4 ~) T' P- {==============================================================
* d3 K& `7 e1 B. G1 A8 v【程序333 I! G( Y% ^) `1 a  c# V
题目:学习gotoxy()clrscr()函数   
& X- Q+ f& X. R5 x/ b/ A# _6 T1.程序分析:
  X( w1 P8 ]; x- J2.程序源代码:/ J8 N7 D: _( b
#include . W* |" H" E: i- b& b" l2 \
void main(void)8 ]5 }% j% I  m. K; @
{0 ]& [% h; p! Q2 d' w
clrscr();/*清屏函数*/
3 q9 _( i  p8 s! \6 Z% I+ |textbackground(2);
! G1 Y! R+ p0 Y( r5 h) y' M, Cgotoxy(1, 5);/*定位函数*/
9 n1 M9 q, C9 E' mcprintf("Output at row 5 column 1\n");
, w1 @# H( G$ Z6 c  ^/ k8 rtextbackground(3);
: W- E# s9 y6 c6 Bgotoxy(20, 10);
% J/ d2 X9 S2 B( d& p3 ecprintf("Output at row 10 column 20\n");0 Z5 J# v; F! I7 K4 I% w/ Y, b; d
}
0 k+ g& b7 @- s' \! @2 a==============================================================
- [' j) a( y7 I5 s/ n) F! u; k【程序347 B: H/ w" I% c8 }) g
题目:练习函数调用
  I& T+ a5 I) u1. 程序分析:
; T7 H2 F$ t  x4 w  D2.程序源代码:
; n- ?) A3 `" S5 ^$ T  O#include " M! J5 h( S1 y( M' ~. W2 \
void hello_world(void)
! r1 r; c! s/ |" z& o: `{
* o: ~+ x/ S  u/ P* h; [! K. l5 ~) O5 Iprintf("Hello, world!\n");
9 s: r( [0 s; X5 `}- T, f, A+ G9 r6 z! g1 P6 y' i* Q; `$ r
void three_hellos(void)
/ N0 K' |) F1 t+ M8 o7 @5 I2 C{  t/ B9 e; I: {6 m$ V
int counter;
3 ^/ ^7 ~( S2 w- e, j& Nfor (counter = 1; counter <= 3; counter++)% L( }  p* V; o3 a5 s! Y" _- y  O
hello_world();/*调用此函数*/
* ~; @0 T. c2 @0 ~( ?( M. D}+ C; l& o3 b- `8 z
void main(void)( F! D% y+ i' M4 Z8 \
{* e9 g; f1 I- u" N) F0 g6 R; d
three_hellos();/*调用此函数*/. |. j/ y  Y/ u3 o3 S
}
# Z" T- k! i5 W4 H$ v: Y1 p==============================================================3 r# V- ~4 x) d, {5 Q% y2 }" Y
【程序35
" C( |- s, D/ ~3 {; q/ Z* S题目:文本颜色设置
1 [/ I3 @& ~. U4 e$ B& I$ c1.程序分析:
8 D, l2 n0 H/ @! T3 t) N2.程序源代码:- o# {5 {' ^: Y9 F% \- d. i! e
#include 0 l4 a8 F2 j2 s2 H) x$ x
void main(void)" N+ }  ~) |% p7 D9 I8 o+ ]7 C5 g( S
{0 b1 e% n$ y+ P  L" H+ C
int color;
/ H" s0 T, w4 V# @9 Vfor (color = 1; color < 16; color++)
; I3 i. [! F) I, u6 L3 @8 i {
0 a5 b, ]) p9 {1 o) |& Y& l# k; a, j textcolor(color);/*设置文本颜色*/; i/ p- E( g4 `/ x  n
 cprintf("This is color %d\r\n", color);
4 q8 Y+ M- X6 q, w" ^ }
2 K5 W0 E5 p4 ~textcolor(128 + 15);
0 T5 t5 C0 a5 l3 E$ Jcprintf("This is blinking\r\n");
# u9 l3 l5 T! w! D$ i4 f' q% R}
9 B8 q* e3 F) d! o( r0 U) P9 w5 F==============================================================
1 E8 h! }3 H7 Y$ }$ v7 j【程序36
3 k" A4 V7 g" G/ ^题目:求100之内的素数   
% z5 |6 y+ k0 }4 g/ E: X' k( K: v3 {1.程序分析:* S# Y5 B, J7 F. v8 Z
2.程序源代码:3 {4 D8 T0 p! B! x
#include ) Z3 C0 R9 A- Y% ]
#include "math.h"
) h1 S; L8 T* ]: G9 X( U/ `9 M#define N 1010 M+ Z" v0 l" X5 N& U5 @+ S
main()7 q; P  r3 K% M7 \( w- ]( N" b
{
( f5 t) [6 ~  b5 ?) wint i,j,line,a[N];  q5 A# A3 D+ m8 b3 x# m0 G
for(i=2;ifor(i=2;i for(j=i+1;j {: J% {( v* l! Y7 D
  if(a!=0&&a[j]!=0)" ?9 k, b" K$ U& P2 }
  if(a[j]%a==0)8 ~7 J: R# [" U: g- R: z9 O
  a[j]=0;}* M( U* r: T' o9 ~9 Z# h$ {$ l( u( \
printf("\n");
+ O- n; E5 R' L6 K( N3 \for(i=2,line=0;i{7 r5 P* G2 F  v) W& E  g
 if(a!=0)
, J2 s6 Y! Z7 W# _ {printf("%5d",a);
/ U/ P! B/ U8 i( e4 X; U6 O line++;}% K2 k0 ~7 y* J) C. c2 [
 if(line==10)
. O; @  s% C8 {5 d$ Y8 \ {printf("\n");7 `8 X/ d% p8 c: o2 t) ~
line=0;}
1 y8 D, s3 {/ u}$ ?, M% J- l) p) M, N0 c
}
: T# ~& ?2 {+ I/ Z8 @' `$ s==============================================================
4 X$ i" M: Y. M$ ^4 x% Z【程序37! Y, A: a6 J+ Y# T! \5 A9 ?! v2 i
题目:对10个数进行排序
, ?' g1 z' H+ D5 C$ O) O* q8 E/ q1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
8 L5 c! s1 ~. d  c( j      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
7 ~1 x, p$ d9 y4 T) ]& I2.程序源代码:
" u$ N3 ]# p- u, X8 |8 f#define N 10: H1 ?9 ]+ b) t) S- g& F( [. `& U
main()' ~) P: O2 e+ f- I( O( X! O
{int i,j,min,tem,a[N];9 _0 ?7 d: {( l7 X; T  }$ W
/*input data*/
0 ?+ I  |, m, B  k6 @printf("please input ten num:\n");
% q& ^& n* @& u& l6 n" h; Z0 cfor(i=0;i{
& L! G/ h+ A+ m: h; p- z( K7 nprintf("a[%d]=",i);2 t% {  b7 u, |+ W; t# r" @
scanf("%d",&a);}
1 Y: f1 g4 U- d. pprintf("\n");  z* k1 `+ K# p
for(i=0;iprintf("%5d",a);0 f, p* I7 p& k  f4 Y9 r- }9 {8 p4 D9 s
printf("\n");
3 i8 ~% N+ ~1 n" I$ }+ _/ \/*sort ten num*// K, R. y! j! M) ]5 e) Z+ @
for(i=0;i{min=i;
' d* \  q* ]% [  O& [) C9 ]for(j=i+1;jif(a[min]>a[j]) min=j;. F! R- b! e) F
tem=a;
7 q1 X4 y! c7 o. x8 j' ta=a[min];+ H8 f" R% X0 v% D& w' n, g
a[min]=tem;
7 ^! Y1 O8 H2 l, l# b: a% ?1 Q1 ^}9 O$ }( @% S* F. M8 F- f( ^
/*output data*/4 O# q4 ^1 U  ]3 [& Z
printf("After sorted \n");
8 f% S* O: z. c& K+ `6 K- U" `8 mfor(i=0;iprintf("%5d",a);7 x3 s0 j  R( k- `" U4 F/ V
}
2 B  ]- m+ D5 t* Q5 \==============================================================6 _8 s" z# Y  D9 \" F
; l5 q0 H3 v/ N; \
回复

使用道具 举报

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-10-10 04:22 , Processed in 0.051724 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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