机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法27-37

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-7 16:23:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序272 U- R& B0 \+ R# e) T
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。/ H1 S' ~4 L( R! R1 `9 G
1.程序分析:
: f! N7 m2 Z( E- ?% _+ T* N! `2.程序源代码:/ v3 M4 }" V2 H; k8 L
#include "stdio.h"
1 o: T" o0 h. g; n0 w/ `* Umain()) K# C1 V( d* {9 u2 @4 q4 d* e" Z
{
- k5 P4 n7 d$ v8 \$ wint i=5;1 e' z- K% \& _% q
void palin(int n);6 B' O1 N% A- |2 k+ f# R2 N
printf("\40:");
9 E" h) u3 U! [- c+ _$ o1 Mpalin(i);
9 v* r9 G) K+ Bprintf("\n");/ B- g, C9 p6 y( ]' W
}1 }* U/ @5 |/ P" p
void palin(n)2 z4 F& C; p0 G% t- ^
int n;: y8 L/ g& B0 k* K
{! {0 f# d6 e* O) C& b1 E
char next;
! ~0 ?6 v# T! J8 h/ ]' e  k% F3 jif(n<=1)
+ J. f3 k: |: w! L3 m6 h, o {
* f7 z! h& ^0 k4 R* M* ` next=getchar();
' T( O0 K- }7 ~/ {; G" J printf("\n\0:");
0 v0 ?& A1 f: K, G" ? putchar(next);, N# v6 G0 Z+ s3 \& F6 V
 }
: ~6 H! L' E* F8 z( a  o( m; Kelse; F5 J8 c: H7 U3 S
 {
. a; F0 [" X, J# f next=getchar();
# T, i8 M# e7 m- ~* w' ^+ m palin(n-1);0 S+ z6 ?7 U) [/ [0 U+ i
 putchar(next);7 `. \" N0 @# J$ y
 }
' p& v7 Y7 Q  u) h}6 H: {( S& ^4 C- P
==============================================================
* m0 S" u! Z0 S% B: s& f+ i【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
! m, [( m" g5 x3 l& ^3 V6 {8 p7 W, E9 D题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第/ {, ^$ q% V3 @: H
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
! w8 g1 D8 Y2 @5 |0 y6 @# M" ?   问第一个人,他说是10岁。请问第五个人多大?, \8 t; C0 H& D- d4 f0 f4 d" h
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
$ X2 D) o" n' Z      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
1 U0 `  O* E# H9 a/ X$ s2.程序源代码:
4 c) T% l3 J& _  D5 p* `8 Kage(n)3 t8 @) t) r3 g  x
int n;
& V4 j$ Y0 W* `8 ~# ], l  ~{: Y+ `' R, s, V' s% M
int c;
3 K! I, c1 Y$ {: bif(n==1) c=10;; F! B: a4 \) u
else c=age(n-1)+2;
! `, m+ m6 m9 I3 yreturn(c);
# l$ p, T( j( i) q8 H5 h0 j}
: T1 m2 e" A6 n- Y8 P" j0 a9 _4 {4 wmain()
. K4 K; n  e2 T0 I$ T+ Y1 `{ printf("%d",age(5));2 [- G: ?' B& g% _4 M6 O& m
}
+ S) h) d2 j, G) [2 J==============================================================
5 l( i- x% `( H# d& o4 E% F【程序29
  y6 z+ u1 Z. u3 m9 g题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
9 D% }2 ]1 d0 K3 `# q4 l% M$ O( V1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) ' n) H; }* L9 y# x4 ?
2.程序源代码:4 l% v- _( Z& k
main( )" i" {5 V  S3 v: @! d, C) M7 n, G
{
3 E0 {% L6 U1 z' Y" Q2 }( flong a,b,c,d,e,x;
  I8 p/ b0 j# o- Y, x9 G! Xscanf("%ld",&x);; _7 x, ~$ W9 n- c* ]7 m9 D$ p6 V
a=x/10000;/*分解出万位*/. g* o% h0 G& b4 ^# |# `
b=x%10000/1000;/*分解出千位*/
# V1 G  `  r" d2 |; y' [; z5 J1 oc=x%1000/100;/*分解出百位*/
% Y& ~' b/ ]6 @& u: ?" C7 O' Y3 @d=x%100/10;/*分解出十位*/& L  G2 F1 x; \/ j
e=x%10;/*分解出个位*/
& \% H1 p" K0 C2 Z: Y9 N2 @if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);5 y. J" C* W) A* Z
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
8 H+ m$ M: ]- F6 b9 u  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);* x' n0 m, j' I& q
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
/ n  @9 Z9 T% a6 c6 p      else if (e!=0) printf(" there are 1,%ld\n",e);
- E- b. F  c( M- m6 l$ V* b* K) y}; t* @* S. d5 C6 ]
==============================================================
3 f* G1 R/ y2 a- U! C! H$ l! F5 q7 \【程序309 p7 `5 s) r6 S5 H2 @% L2 A
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   & Y6 f$ O9 I& x# I
1.程序分析:同29
" N" _  ~8 P4 S$ u% I1 t2.程序源代码:
  `: [5 K: \* W# \6 q" C' cmain( )
1 h! A9 t5 U2 _5 O& _{
. P6 `  y3 y; T2 nlong ge,shi,qian,wan,x;( j% q) B6 s) r$ X0 \
scanf("%ld",&x);
& q( \' r6 }. h6 |- x# gwan=x/10000;5 E" }9 u+ f* U, x& l; s
qian=x%10000/1000;7 B6 i- w# W$ P& b, F, @: R
shi=x%100/10;* s+ G+ H5 @2 O" L
ge=x%10;
/ k4 n! W" d- b& j, p/ ^if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/- y. r6 h6 Q3 _- _
 printf("this number is a huiwen\n");" {! g1 p0 v& `7 \) @1 o* U6 s) n
else
  d6 @( Q( C$ {0 B9 G( @% P printf("this number is not a huiwen\n");
- b7 K7 y$ b7 [% L* B}
【程序310 A' E6 k1 P. F) a1 j9 r5 A0 h
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续6 z! f) \, ^9 e- Y/ x
   判断第二个字母。- K4 h" W- Z  \" f
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
5 p3 G) x0 {  U/ a6 k' f& B2.程序源代码:  O+ D# Y8 D7 x. }' T  x( k
#include
+ P4 i/ i- t; k0 a) jvoid main()
/ I7 _  t+ P/ j{
- W, M0 N; y. s7 L( Lchar letter;" o% n  v6 J8 \2 |! U
printf("please input the first letter of someday\n");
/ \1 o: x! _7 [+ e& ~- q5 E6 Bwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/2 q. \; e! {6 _4 g5 U" w( Q
{ switch (letter)
9 V# G; A5 V" L$ f{case 'S':printf("please input second letter\n");0 s4 h# B2 Y7 c, s
     if((letter=getch())=='a')3 d5 v7 y+ }" g# r
      printf("saturday\n");
9 M6 F$ \+ r& f6 e3 |     else if ((letter=getch())=='u')& E, w$ f9 x5 }3 y- x) H, w2 _
         printf("sunday\n");
4 m* N2 y) T+ s' f- d0 |! _4 x       else printf("data error\n");: V! y) f$ ^/ ]5 b% j9 ^
     break;
3 ?. d2 i" w" Y0 D" Vcase 'F':printf("friday\n");break;
+ I1 a) T/ ?5 m& Mcase 'M':printf("monday\n");break;
* _  s$ f( S& ~; V6 h2 pcase 'T':printf("please input second letter\n");
  G: ^; |+ A- d0 X& A     if((letter=getch())=='u')9 v0 Q/ b0 m1 a$ ^) J! ]
      printf("tuesday\n");* t8 \8 ]! W1 u0 Y% A5 w. I/ k1 T
     else if ((letter=getch())=='h')
% R3 z( P1 ]0 ?4 p2 X         printf("thursday\n");
+ M: T( k+ h$ \: J' g: F, n. H# t* @       else printf("data error\n");
, k# K* \5 f' l+ f6 h' u) q; T     break;
" F# T" H( \3 ucase 'W':printf("wednesday\n");break;# r2 x7 m, f) K5 X
default: printf("data error\n");
- u) J' y0 h( G5 R; H  }9 Z8 ?( K* X1 G" }4 y( ]1 |! B9 y
 }: J* L; a) ^, w2 X: [4 d
}9 a' r) h0 z; j( ^  Y
==============================================================
4 W, |( {4 V- z! z  j【程序32% W4 S4 a7 u( p) u2 l
题目:Press any key to change color, do you want to try it. Please hurry up!
" S  _3 A' n; x1.程序分析:            * b9 E9 x$ s% }' c
2.程序源代码:0 d2 b* V- K2 |4 F2 J: {
#include 7 C4 w9 U: p# ]/ X3 ^6 m. @
void main(void)1 {1 r1 r8 ]: [: x. B" X
{
" F7 k9 V( {2 o( _" J8 Hint color;; T  s) t8 E) K5 i! U
for (color = 0; color < 8; color++)7 U' [" A' o6 T
 { 6 A4 L. g" R2 E# n, V
 textbackground(color);/*设置文本的背景颜色*/
7 V3 G4 I9 R& _+ y cprintf("This is color %d\r\n", color);6 ^4 V) W& J1 j, D
 cprintf("Press any key to continue\r\n");! Y8 W7 c1 K  J
 getch();/*输入字符看不见*/+ d5 ]" C8 ?4 Z, }1 V
 }6 m4 [4 I1 ?8 W& t' g
}
  }; A3 k) v' l+ A3 o% g==============================================================8 A; Y9 X4 A6 }+ E! |2 y
【程序33& T3 N  T4 y3 r" A0 Z
题目:学习gotoxy()clrscr()函数   ; m/ r: y  H3 [  F# O
1.程序分析:
* ?. i; P( [, A3 z6 x+ }2.程序源代码:9 }# N0 G+ @* Y% M7 {; N9 ]
#include ( o8 }- \6 R/ c" O! T* ?
void main(void)
, {! }7 O, p; ~* @+ }/ ?{- h8 C6 T( Y6 C. }, P
clrscr();/*清屏函数*/
5 Y5 o, s" ~$ L) I' qtextbackground(2);
; ~% D, @. U6 I- H6 t, W% Mgotoxy(1, 5);/*定位函数*/& t* h* Q' D! D# [
cprintf("Output at row 5 column 1\n");1 D" p# X6 b' I; J1 E
textbackground(3);
% C0 \$ W  W3 {* c  ]6 |gotoxy(20, 10);, L& j7 v' ?$ u/ s" j
cprintf("Output at row 10 column 20\n");
' J( z  \3 k9 {7 a6 W9 U% w  h# \" G}7 @% u4 f" l" O4 c* Y  t
==============================================================
/ F$ c1 J- A/ }& R& q  e【程序34- D5 E! M3 I9 ^5 u* n. b
题目:练习函数调用
+ w. S3 O+ }% ^* i1. 程序分析:
5 u5 |8 f# q. {/ Q2.程序源代码:
! D/ W6 r0 k; q( B. P/ N( a8 l7 I#include ' q7 t) r1 {- D
void hello_world(void)9 n, q- o* k$ t- S. q6 q4 n2 N
{
2 n, j# }- k. y0 L7 F* \+ Vprintf("Hello, world!\n");: U0 f% J. R- f: m, j0 Q' H2 h1 K
}
  N3 `$ T  q/ ~# w4 ?) f( V# qvoid three_hellos(void)( h) P+ F$ K1 [3 t% B7 }
{* E4 X! D8 y! Y# f! r% c: o
int counter;1 w& `" e7 }/ M
for (counter = 1; counter <= 3; counter++)
8 v3 J, E: v" Q9 u: V$ Shello_world();/*调用此函数*/' v8 T0 m% M+ r2 _% ?6 P
}
& F3 Z) H0 {2 N. ovoid main(void)' u+ w% |+ o" g
{7 K: q' ]7 b/ s$ r! q8 l% S7 d
three_hellos();/*调用此函数*/7 z7 _* h  @9 @% n: I8 E
}! u+ U) j7 n0 _, v0 O+ h
==============================================================
0 e$ M6 G) `' _9 Q  f【程序35
; W/ W+ z9 T# g. i- S" H1 H: c题目:文本颜色设置) f4 D# c7 Q0 g# }" f( _) e
1.程序分析:: w9 K( B) x7 q6 j- b
2.程序源代码:# ~2 K) {9 f+ I
#include
/ p4 B: O9 X9 b+ Hvoid main(void)7 A. F5 J% c* T( V
{( c! _/ p7 S7 `
int color;! a5 B2 j& x/ z+ t& f. e& ~' {2 Z
for (color = 1; color < 16; color++)
+ S: T- U+ x; X. a! x {. u; P; t0 E+ j8 X8 s% W
 textcolor(color);/*设置文本颜色*/
3 ^! r% O, K3 \3 L cprintf("This is color %d\r\n", color);' [& V. I3 b& x/ Q2 b; ~
 }: ^* X: U6 f7 U" q1 z
textcolor(128 + 15);' `0 |+ v) i& h' p- v8 l
cprintf("This is blinking\r\n");1 `7 F; i# V5 z0 N* b. ?2 o8 s& v
}! ?1 i4 f/ f$ G1 W! [
==============================================================
8 S7 z# d1 _7 @* }/ K【程序36* x  {% R5 \# h  i
题目:求100之内的素数     T0 k) _' A) C! Z% K4 C
1.程序分析:
( j7 U) T. Y2 D( d2.程序源代码:( ]$ b5 K$ ]/ z$ ?/ W6 [$ m
#include 4 c% M6 i: T2 ?; g# Y5 @, z! Z
#include "math.h"
/ v' P) }% u& [+ p! N0 ?( u  \#define N 101
: Y7 l# I! l7 J% f. x' gmain()# ~+ p2 Q0 h3 T
{
3 A4 p! T) ~" e9 wint i,j,line,a[N];6 x# ~% v8 W5 D9 q5 x5 n0 h
for(i=2;ifor(i=2;i for(j=i+1;j {
/ _. U4 `" d! i' O  o  if(a!=0&&a[j]!=0)+ g. S$ z# b* N1 u! f3 n8 ~
  if(a[j]%a==0)! N5 m& R3 N$ m, d* @7 }: `1 A' _
  a[j]=0;}, h0 u1 {+ Q/ E5 y, B% l
printf("\n");
% ~) k; B# Z& M8 _3 Afor(i=2,line=0;i{5 i0 F8 N" g1 w6 h
 if(a!=0)2 x/ \0 N5 C3 D" Y7 \7 R% c
 {printf("%5d",a);& i+ ^- v' c- M
 line++;}8 Y6 F6 e/ |# Q' J, f  t& H, {
 if(line==10)
% w- o1 V7 Q+ `' ^ {printf("\n");
. l+ v/ L( n+ q4 ?& eline=0;}, o7 }: {  k4 l4 p+ R" d
}
: @' ^/ y1 o2 R  A1 R. x, j}
4 T0 T3 @2 [% T, |  `& |6 N3 c==============================================================+ W, b- _- R+ m. c, N3 T  |  w/ T
【程序37
: e" X, A$ y3 a, ?6 I# G4 A- F" `题目:对10个数进行排序5 I7 f0 l: F* U7 g( Z
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
5 u3 Q4 f# F$ O2 L! k6 @      下次类推,即用第二个元素与后8个进行比较,并进行交换。        ! A$ w: F. L' ~" G: K
2.程序源代码:& f7 U+ O: c& n+ f
#define N 101 ~9 `; u8 D% {1 r. f- [% M: q9 ]$ E
main()
$ R& H9 `- i7 z3 K1 ?$ T{int i,j,min,tem,a[N];* X' A" y  j1 D3 l6 Y9 s/ B
/*input data*/9 ?0 ]/ Y& {6 @# f" L
printf("please input ten num:\n");
4 F; G: \' h# K/ S: \3 nfor(i=0;i{
& s* I1 \0 s8 ?printf("a[%d]=",i);8 ]5 S0 ]8 J( i- @$ \; ~
scanf("%d",&a);}
  a9 D7 k  C: }printf("\n");
& s4 c) |; V; Yfor(i=0;iprintf("%5d",a);0 D! }3 I& z7 ^, b! U# z- I8 h
printf("\n");
3 @0 {; U; W) d8 B! N7 M( X/*sort ten num*/
) p: A8 e0 W, A3 b3 K8 J: |for(i=0;i{min=i;9 b& P( G; Q* a2 k! G; b, N, r4 w, M
for(j=i+1;jif(a[min]>a[j]) min=j;+ b( _0 \/ i' \* M3 w1 Z
tem=a;
3 k& i, L  }& Sa=a[min];7 n3 A, o) W% m4 L. h5 s- w3 I
a[min]=tem;) J# P2 p  j. ]$ s; P+ c9 w
}0 W" X9 o( h% S. v' @: ~
/*output data*/
* o7 c% e% d, H8 k# |- |, p" |1 }printf("After sorted \n");' W8 r+ f9 t* g/ |
for(i=0;iprintf("%5d",a);
+ \1 F$ u. r. G4 \- \' J}
1 B, K/ \7 ?. ]' ]==============================================================' l5 o' P# O" j) O$ c+ h' e, q/ Y+ Z3 E
6 j: t, j  T3 b3 `
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 07:09 , Processed in 0.060202 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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