找回密码
 注册
关于网站域名变更的通知
查看: 410|回复: 0
打印 上一主题 下一主题

C语言算法27-37

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【程序27" u- e" a' l2 z* _* M& x
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。0 Q* ~7 Y+ R4 K( K. D/ I
1.程序分析:
% j3 H2 y" \6 F  Q2.程序源代码:. |5 ^. Y6 f! D3 \
#include "stdio.h"! U2 F2 d6 J, d4 ?6 \- h" R
main()
# W/ g( J7 D& G* {. P  M{
8 v1 ^' S% j/ D7 Tint i=5;0 D# S) L' ?9 n. _5 P6 n. y
void palin(int n);
* |6 H, E3 \! e' f$ c$ o# C2 G7 Xprintf("\40:");
* l: C; ?3 w' k3 K+ gpalin(i);
! c2 M; W- M. }# {$ M  ^9 g8 Y! V' Vprintf("\n");
, r- ]' c! v3 D5 v3 i$ t}
4 B0 y/ J' ^" xvoid palin(n): D. [+ f, [3 W9 |& u. {
int n;. R# [& h, Y1 x
{. ]# J) |* ?5 J5 i: h
char next;
: a+ b3 H8 E0 I. I% [5 q3 B) W' z( |if(n<=1)1 h+ x# o# `, {+ f  Y2 X
 {% c2 w& G: Q$ @- F
 next=getchar();1 J# S* `1 C, k5 F0 A. D/ ?
 printf("\n\0:");+ s6 x  C' L1 W; N$ b; L+ i/ L! L9 Q
 putchar(next);
/ ?; `) H: b' _6 Q" z/ c1 ] }
; v& I; B* K6 U; `5 yelse' ?8 D  H+ T% I3 K9 V& v$ s- a: v* m
 {4 x& z+ x. }0 g1 K! Y! y
 next=getchar();# O3 }- ]$ s% T& |# O9 H7 [
 palin(n-1);6 t5 Y' {. r, U7 Q2 I
 putchar(next);! L! N( ^5 G+ |2 l: r/ L! R
 }4 t/ D8 Q" K; [- D8 k& T
}
6 Y# _/ Y4 ~/ B$ I==============================================================# y! {1 q( f. b. a' \7 d$ F
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
2 O- w" V; [. K: ?. X题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第5 }4 j5 }; _5 N2 Z
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
3 F* N$ w% X# S* a! `3 S0 b   问第一个人,他说是10岁。请问第五个人多大?
; a6 i* K. J/ d5 Z1 r  Z' ]1 M1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
% i' D. D# S( V      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
) V& g: ~9 U# e( O# e+ f$ j2.程序源代码:
7 V  l6 ^8 x# Q* |( bage(n)5 C! z! p) L# E6 m% [8 y" s
int n;
( L7 D7 z( E: h- q% J) P+ s{- s) t& h+ J* H! @2 r1 d* z
int c;8 `+ v! u) K5 W6 O* @7 Q
if(n==1) c=10;
& F1 i9 w( Z4 D9 ?else c=age(n-1)+2;/ ]! @8 K; Z) u' U* C+ N; ]
return(c);
4 A. ~# Y0 C  [+ B" f}  D/ @* n' f/ t3 _! C* w7 ~  g% J
main()% q8 P( o& k8 T$ Q  }5 [
{ printf("%d",age(5));
5 x) q; N6 l; H/ p}! ~3 l, ~7 X7 v4 E& S% W' E/ D
==============================================================
: N: o: Z) v0 P# n2 g5 n. h/ o【程序29
* E9 F6 u' K  A/ j7 V# u* }; S题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。, z) O8 ~% l3 |0 k$ _1 j) y1 T
1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) ) l4 `# z. v1 J8 O( U
2.程序源代码:
" S( G6 D7 f9 emain( )
& c, @- }/ `* A& a{; ~0 I6 z; m# @% ^% {
long a,b,c,d,e,x;
, I4 ~3 c; M. ]5 Q9 p: Qscanf("%ld",&x);
! p3 K# E. c9 n0 z: a5 na=x/10000;/*分解出万位*/
: t4 C& f3 l9 y. Sb=x%10000/1000;/*分解出千位*/
8 m* d- J( o! l7 A* Z+ {: Qc=x%1000/100;/*分解出百位*/
  z0 ]5 p( W5 M1 `' U1 Z. i9 c/ C; }9 Kd=x%100/10;/*分解出十位*/. J' H& U# K0 ?% _
e=x%10;/*分解出个位*/
& V0 B7 Q, g9 @# J; |if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
3 J$ s0 m% C1 q! V: Felse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
( \: _9 Y& @/ x$ u! D  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
$ F: U! G; d9 C  v    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);, P: t# a7 n3 N! P. }
      else if (e!=0) printf(" there are 1,%ld\n",e);
3 E* B' e" b0 f}
! N1 F/ u8 v5 W0 o  n0 J, y: M==============================================================$ D+ _& f3 i5 S
【程序30
! J/ w+ P/ ~0 @! X! x' R; l$ x题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   8 i  C' V% K4 f( c0 ~  r' Q
1.程序分析:同291 i: Q% y- V& F0 n5 L! i# c" B
2.程序源代码:
% o) t; y$ R/ ?; ?- g" I) O3 Emain( )
, p( }, X& \2 r+ ]$ ?{
; c6 C* I8 M% [; Q( ?6 {! j* G! Olong ge,shi,qian,wan,x;& S0 o$ S/ L: z; y
scanf("%ld",&x);
. I! T4 Z& y9 w2 `: ]: X! A8 Twan=x/10000;
9 }2 I4 Y/ d1 p& r% e+ Sqian=x%10000/1000;
$ S- ^) u, t. u7 gshi=x%100/10;  d4 t1 D# L3 X" |- Y# ]3 R4 A
ge=x%10;( K7 }, m. x" A+ a9 J8 W) O
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
/ K$ K8 y+ w! U. w printf("this number is a huiwen\n");
. H: V' Q- k: }% h) d' X1 Oelse  S$ T  w8 O* W4 W9 c
 printf("this number is not a huiwen\n");
' `3 N# e+ ?" K/ w}
【程序31. k- K: m+ X, T+ a
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
7 M3 O8 W. r1 I   判断第二个字母。
3 Z8 W- V! g& b9 V' c1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。; g* u! C1 [+ n3 o. x2 d  W
2.程序源代码:5 Y) R( V% _! t
#include / w6 `6 a8 C# G0 R9 _: Q* V& s
void main()+ E3 \9 p: X% j( S, x! V4 ^
{& ^0 X5 q# C9 r+ J; V6 ]0 V
char letter;
( h2 x- r( u% E2 ~9 Q/ mprintf("please input the first letter of someday\n");
6 d) H6 }9 K; z, s+ hwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/# j# }3 T/ r& m8 {: p4 w$ ~5 G, A
{ switch (letter)7 ?7 w% d# g9 K. N3 U1 @
{case 'S':printf("please input second letter\n");
6 S& z5 Q- `& e& w     if((letter=getch())=='a')
% _& q5 {9 p4 p& Z; n      printf("saturday\n");+ i+ [3 s7 J" M1 t! H$ A% }
     else if ((letter=getch())=='u')* F) r5 K( J; S4 x  E: O
         printf("sunday\n");  [& q6 Y/ p7 G
       else printf("data error\n");
; ~3 V( R) R# i9 K9 O     break;
/ q0 j  ^1 F3 hcase 'F':printf("friday\n");break;
# T8 G- W6 ^0 d& `0 d  ?  ncase 'M':printf("monday\n");break;
3 }( b: H: V8 Q" }  e7 U7 W5 }( |case 'T':printf("please input second letter\n");
; `3 L4 E/ N  n5 f2 [9 x     if((letter=getch())=='u')
# N* K" f& e% x1 V# ^; X      printf("tuESDay\n");/ V! A7 j& k0 p" D5 ^1 R. M- ~
     else if ((letter=getch())=='h')
2 b1 u8 I* V: A; {) M         printf("thursday\n");
% b" p/ A5 c/ A8 `9 G" S7 a& k9 A       else printf("data error\n");
2 m* `5 |: l3 D1 G6 D; [     break;  V8 J: G0 h6 n% U8 }
case 'W':printf("wednesday\n");break;
2 [5 V8 ], n+ y  `7 Q% \1 O# odefault: printf("data error\n");
2 @3 x) j5 G# n& S  }/ |3 \. O; V9 m1 d' l; W
 }* C1 q( T; R+ E" S) a$ W( z" `. l0 z) S
}
/ p8 d# J- J$ [1 n* ]==============================================================
9 A1 ]  t0 U, h: q  }【程序326 l, t; y7 y' {4 y- j7 y' o; ]
题目:Press any key to change color, do you want to try it. Please hurry up!
6 P# ]" y* E0 [8 j1.程序分析:            
! r+ U# r9 a/ `8 Y+ k& B, W2.程序源代码:
$ a4 Y$ T/ e) X  [% A2 i#include
8 v) c& ~3 a: t$ \) m9 mvoid main(void)
- j* J4 c4 ?4 D$ `- u8 W{) [6 B6 {4 L$ T
int color;8 i* s9 E6 E! k- d4 h
for (color = 0; color < 8; color++)
; K! d* G7 ~! I/ ^6 @ { ( T+ R" V0 h- t
 textbackground(color);/*设置文本的背景颜色*/' B0 W" J6 [& e
 cprintf("This is color %d\r\n", color);
: w% h2 u1 m& z- e) E cprintf("Press any key to continue\r\n");
3 S" ~$ r$ p2 y" e2 b getch();/*输入字符看不见*/: P" e+ C3 R. ^: k9 ^* C
 }
' a2 L) ~3 V# j7 \}
: y. o3 t( N' v% N  R==============================================================0 G& d9 g# v2 W7 C* `2 y
【程序33& R9 A7 g# F: P
题目:学习gotoxy()clrscr()函数   
0 w& F! [& a# g  w7 y+ c: z1.程序分析:9 P* ?  e1 r* w- D$ V. j+ N
2.程序源代码:
9 z9 k  b3 ^8 Y  c5 [#include 9 g. O% p8 Q) a8 H
void main(void)
! {3 D3 n  \# e1 w9 H{& W6 B2 G( T# l' T# z7 F
clrscr();/*清屏函数*/
% g; l5 |$ Q5 y) G+ A9 c8 O* ^textbackground(2);  Q% b0 X: W, d: X$ t9 L( {
gotoxy(1, 5);/*定位函数*/
7 k8 u. |% A1 t2 hcprintf("Output at row 5 column 1\n");
  I; k# A3 N! Ztextbackground(3);
: [3 o  a6 y8 ]& wgotoxy(20, 10);
! H" M* Q2 N6 U  O% b% [+ F- U8 Vcprintf("Output at row 10 column 20\n");9 N3 o' s5 h0 R8 L7 N* L1 k
}- R% J- N2 r; y7 m. D/ p* d  Z# v2 a
==============================================================( m% V$ v0 n1 ^, I* ?) \
【程序34( T+ h0 F1 f/ D
题目:练习函数调用
: I" f3 j6 y: W/ ~1. 程序分析: 4 A3 ^7 J0 R: K- B9 b
2.程序源代码:" J& }- ^2 @: c' x' {9 N
#include
7 B$ q* n+ |* q# e2 [1 p; Bvoid hello_world(void)! p5 N1 n3 V4 F7 N8 ?8 X
{7 q" V& h: ~1 j9 D- V  O$ Q
printf("Hello, world!\n");
( V  d9 u( B* f! V6 L& C4 Y}" ^9 M4 O6 ~0 |3 T- u: n' D5 s
void three_hellos(void)6 e" n7 M& s0 _% n$ Q- w
{
4 T/ |; N  t9 {0 _int counter;
+ x, C$ f! @* Z( w, k6 d" l0 Xfor (counter = 1; counter <= 3; counter++)7 r. ?( e) l% O; j4 j
hello_world();/*调用此函数*/
  I+ }1 O6 H( b8 S! n! P}4 b3 j; ?1 ?( ]7 e& a' y+ D$ S
void main(void)# w0 O8 @' {  ~0 F
{: K$ W- j- n% N, u6 ^- Y0 K
three_hellos();/*调用此函数*/
" `/ T) p  G3 ~}2 L7 U% d5 `8 U3 |- i
==============================================================$ O6 T( b( b, C9 ~/ K2 S3 _
【程序355 {$ e) h8 }  u4 I& F- Z7 X
题目:文本颜色设置
$ h* `3 g2 _- O! `& U; m1.程序分析:
  D2 k. D- K1 c4 G  m, W% V4 ~4 k2.程序源代码:
# C& ^( N0 R* b2 V#include
/ B1 o( Q* \1 B* c5 Uvoid main(void)
1 J' e% F4 e' m$ Z{5 X/ ?0 T8 b% t, r. r, U  {9 B* P6 B
int color;
; v$ `# l( r' t7 {- pfor (color = 1; color < 16; color++)
) W0 ^, ~' `" T2 n {4 f- y5 j" Y3 S- }7 v7 @- @( r7 E
 textcolor(color);/*设置文本颜色*/
: n/ A: B! G- e. s# O8 D cprintf("This is color %d\r\n", color);
# {( d' C, D" F* |7 v5 W! S& [, u }# C, N: u7 X+ W3 p, P6 _
textcolor(128 + 15);. I: ^$ j$ G' Q( \: U# ?
cprintf("This is blinking\r\n");
/ y3 R3 v' L- T; o% f}1 `$ i5 ~; ?" c7 g- z
==============================================================6 P1 c+ F6 ~/ ^) `" r& H- D
【程序36$ X0 l* O3 F: v0 Y6 N
题目:求100之内的素数   0 b: g( s$ C  C+ y3 j+ N) m
1.程序分析:) C& N, L9 ~# U! e1 v. J
2.程序源代码:
  }7 T; k$ {  g  A1 O, F#include ! \' n! N9 d7 J6 K0 r
#include "math.h"# L$ H2 b. J; k
#define N 1011 z7 O, l; p# ]2 a6 u( Q! }
main()
& `1 X: g* P4 v* \2 d; q/ _3 P{
8 k% _5 s  H9 s* Vint i,j,line,a[N];; ]5 b. f; u' Y3 m# J7 o7 g
for(i=2;ifor(i=2;i for(j=i+1;j {! R: s0 C7 o- _, \9 z( a, B# M
  if(a!=0&&a[j]!=0): Q( r! V  B* x4 @5 R
  if(a[j]%a==0)! ~$ {7 E/ j& c+ C$ @1 y: x5 q
  a[j]=0;}* u1 M% E/ _* p- Y: a6 J
printf("\n");
) j9 X$ W) e; J" bfor(i=2,line=0;i{, }3 a" |2 c+ m  l
 if(a!=0)
+ B8 L3 N, ?! d6 Z7 K% R3 ? {printf("%5d",a);
% G  k4 v4 Z6 K% c9 |* i line++;}6 m% w) C1 C, M, F1 N
 if(line==10)
, B  V+ ]9 r2 [: v9 o+ G {printf("\n");5 H5 W) G! b1 ^! P; t6 O
line=0;}
) j9 S. B& e% u: C}
' o5 b5 F) m" ?, x9 ]$ V}4 ?, ?0 L4 g( m) t
==============================================================
( G9 U7 w! F+ k7 z' D3 k" S, r【程序37
* U* {& g7 |: Z. \题目:对10个数进行排序
+ Q  b- A$ ?, f1 M1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换," ^9 K2 N4 A0 `, ^8 T& I
      下次类推,即用第二个元素与后8个进行比较,并进行交换。        3 m7 ^) K4 _: w; X
2.程序源代码:
( w, `+ S9 D! |  Y3 x#define N 105 m% c# X. l' g
main()
% j) W( x% u9 w/ D% h# ~1 `+ s{int i,j,min,tem,a[N];
2 H# a  h5 B1 a* d6 N5 L/*input data*/
4 V7 \/ u, z4 f2 kprintf("please input ten num:\n");& B" F, B" q+ _/ ^8 f5 I% Y
for(i=0;i{
+ A; ^; U, d/ q# m: w+ I3 mprintf("a[%d]=",i);6 i! l5 @) B- ?8 o
scanf("%d",&a);}
1 \6 q- G, ?4 S% I7 F* k, Bprintf("\n");
& Z1 L& Y: w# a5 _3 f: k# J% H% ffor(i=0;iprintf("%5d",a);
( s+ w8 Y: A- l" }printf("\n");
% ]  `1 R6 G- a3 M: D3 U/*sort ten num*/$ W1 A% X4 Y; s2 i% ^
for(i=0;i{min=i;, R) p# C/ I( X5 C9 m  a& V
for(j=i+1;jif(a[min]>a[j]) min=j;
* Y7 N( ]$ O& C' |9 v/ item=a;, o# _, k! u' q1 b: h9 q
a=a[min];
" f8 O0 w0 l0 [, \9 T: K, w  ja[min]=tem;1 {/ _, w+ f( {+ p
}5 _! L' w, i+ ~0 j9 k4 R# |
/*output data*/
; R! u; M: V2 p$ ~  Z5 Iprintf("After sorted \n");
" ]5 W6 V/ w9 P' S2 \. }for(i=0;iprintf("%5d",a);
( T: C" O; `" O9 s}+ h2 L! |* Z- ?5 K$ x1 w, d
==============================================================
/ p4 Y. H( y1 S  T8 `

- I5 p$ B4 v& t; r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 14:51 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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