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

C语言算法27-37

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
【程序274 K% k( _& F/ |# S
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
. L) w+ |$ n4 w/ ~! G$ j3 n; u1.程序分析:
9 ]9 C0 U* @2 x5 P& @1 V- A6 _2.程序源代码:- d. c6 V* Q3 l- \8 S' f
#include "stdio.h"
8 b& F) j1 Q2 ?% }" S' W* tmain()# V8 ]; H% [9 N& `- o
{
- @: E; a- y! O2 I$ i: N6 N2 tint i=5;% q: t0 @4 {! y/ I* h1 _
void palin(int n);: ~& {9 a0 J& E/ H5 [
printf("\40:");7 r/ I5 ^0 b' a2 v
palin(i);
( V4 E4 c- C2 ^# u" Z# e, Kprintf("\n");+ N( e1 I9 e2 ~5 G
}: u" _1 d* }0 ?' g  Z/ ?8 q8 p
void palin(n)) r0 J; c, |+ h. ~4 u% [
int n;# l  B4 J  T( G
{/ m; J" y7 y( E
char next;
1 l! j5 W; X% e' a5 [* s5 q! ]if(n<=1)
4 b4 V5 S) M; x& v0 c {
" n# S/ S0 q( h8 n8 @0 V next=getchar();
/ y2 W1 D0 v" h! h- V" P1 l printf("\n\0:");. _/ j6 n# _: j& V# L! f
 putchar(next);: v, e" P* Q# F- r: O9 x
 }
3 S0 e" n  \3 H- |+ Q) X$ Belse
0 B7 F, r) j) c* E+ H# W8 K! j {
( P1 M7 I; X5 L7 K. r1 j next=getchar();0 M2 a+ o. h  C& b4 ^/ \" H
 palin(n-1);+ E9 s4 Z) U8 I0 ^$ ~% i2 c+ c- a
 putchar(next);
+ Q& n+ _, L3 _8 B1 L3 V' l }1 B: l( R; b; a
}
0 m9 @2 d1 v& c, U$ k' a4 ~5 E' v3 J==============================================================* m. _. y( E* j, p. j) j* U
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要
- M8 ~0 n3 d9 u3 k题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第; e& J/ v8 R$ C  M- @1 v: @  }
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 1 }" M' ]( G& p, G2 T
   问第一个人,他说是10岁。请问第五个人多大?, h7 x4 C, s' w0 _- X
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
! `8 j1 l" l# b" A) l      第四人的岁数,依次类推,推到第一人(10岁),再往回推。7 U  I! _% Q; p" J# X
2.程序源代码:* g2 E; [4 y9 P" K8 y$ G  b  A
age(n)4 P$ e" i4 V2 \/ P# {; r
int n;- D: o: y0 A2 T3 ?
{( o0 k2 m- W/ Z
int c;$ U* |3 T2 g0 ~5 T2 z
if(n==1) c=10;6 d) F9 G5 [% s
else c=age(n-1)+2;, Q* L  o" b4 l7 l% e
return(c);1 y4 p2 @0 N& h1 n8 V9 C! |
}
8 r5 l# P/ [" tmain()
* `' E* J4 v- l' z5 X2 ]{ printf("%d",age(5));9 |0 S( G% r! [6 _
}
" o' g3 T7 `3 E==============================================================
+ ^  Y% \4 r/ P: m5 K  l: u【程序29
* ]( ?- E$ O' _. `/ q. v+ x题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
% B% M1 K/ f* f- g" U1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供) # ^! a* H* s2 R. p$ w
2.程序源代码:% Q) O4 |3 e5 w
main( )! w0 k0 H+ s5 I: x+ V
{
5 }/ ?0 E, p1 \4 Q, o3 a$ A6 vlong a,b,c,d,e,x;
2 _$ L6 W+ t# @scanf("%ld",&x);. N4 p& B8 J3 B9 b% U% V
a=x/10000;/*分解出万位*/
# q3 r: U* s) J: e/ q4 gb=x%10000/1000;/*分解出千位*/: W  P; f( s7 ]* n* B  {* N; \
c=x%1000/100;/*分解出百位*/2 {# L0 M( W& _+ Y+ l
d=x%100/10;/*分解出十位*/
: O( \' @4 E2 F4 F& K# g3 ne=x%10;/*分解出个位*/
; C$ m5 }5 Q- {0 a! Y2 A+ Z& B3 Zif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
# a: ~" Z4 o4 m6 T5 nelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);( i# c% N3 }4 s" K4 P' ~2 ]: I2 {
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
5 U+ R0 Q/ M/ {: K    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
3 j1 @9 C% a) {0 H4 g  g      else if (e!=0) printf(" there are 1,%ld\n",e);
$ L) s" u: c: N6 @}
0 C. M. l# F3 Y4 ]. T# ]==============================================================
$ |' K3 f# u2 ?2 o【程序30
+ b) U+ s3 \7 X$ R$ k题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   # e% E% C2 F; P  c# B  O- o
1.程序分析:同29# A* Z2 |" R/ ^/ n
2.程序源代码:
9 V& h8 [% W  R+ A, A4 ymain( )4 z0 T+ H5 n6 ^0 [, y
{. w" x  Y! w2 D$ w5 A' m
long ge,shi,qian,wan,x;, m* f7 j: ?; K) V6 u9 j
scanf("%ld",&x);8 W: g! e4 T: ~, Q
wan=x/10000;
6 e# c, @/ {/ c, b: L+ jqian=x%10000/1000;
4 c  j* p% k& o/ L1 E7 Qshi=x%100/10;  k7 b  A1 d- N1 A( l' W
ge=x%10;" m9 _* v2 h: C
if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
* y3 g5 l- ]+ } printf("this number is a huiwen\n");" ^( g$ i# Q7 H: ~) P
else
! O' g: o/ a7 f( U% u printf("this number is not a huiwen\n");& G) c$ \7 E% i) b% ^+ X  v
}
【程序310 |1 H- q3 z2 z( G/ g2 Y
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
) I) y, F  L! \: q0 I, E  z   判断第二个字母。
/ w: e5 K& _% j3 [* o& p1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。) m% F0 v/ O9 R4 q% y3 K
2.程序源代码:! O. M, f$ x0 p2 X' X+ i" j5 U* @
#include 4 ~: b" d9 g6 m4 @7 S
void main()7 j% G+ d- D0 O5 j# R: Q
{
# a, j6 m( W& mchar letter;+ k, n; j# E2 g8 ]+ Z; |! h# y
printf("please input the first letter of someday\n");
) r# e( `7 S# z# ewhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
* Q  `8 c: ?" N( l{ switch (letter)9 }: ]: ]0 [% o7 A
{case 'S':printf("please input second letter\n");
$ @. R: {& o# ]- `, t     if((letter=getch())=='a')
1 ^( s$ ]6 r! z. |$ h' W      printf("saturday\n");  u- D) {0 z# k3 W5 ?) B8 }) K
     else if ((letter=getch())=='u')
1 u8 T: v. R* r! I+ ~$ ^3 P         printf("sunday\n");
. ]' m/ K& R, W; `+ `- K       else printf("data error\n");
. @9 t3 O- X7 K3 b1 B3 o     break;+ w8 }. e) u- \+ q, {0 |, S3 B* `
case 'F':printf("friday\n");break;& `& H& e) f0 n
case 'M':printf("monday\n");break;1 z' h+ p; [8 Y
case 'T':printf("please input second letter\n");1 S7 |, e% C9 x# j
     if((letter=getch())=='u')" U; ^5 r" m6 @& u; j
      printf("tuESDay\n");& h2 C& I! E" X/ {8 e; V: a% n
     else if ((letter=getch())=='h'), T$ H: U- M% l: r' I, A
         printf("thursday\n");# |$ _8 O5 G, x# ~8 S( l  g
       else printf("data error\n");
+ |0 G; f3 _5 o- q     break;1 ]2 \0 @6 B: K
case 'W':printf("wednesday\n");break;
6 k: `5 C3 p0 u- m! zdefault: printf("data error\n");4 R; V2 U0 f8 z! x: M8 V& [/ b
  }. a7 Z* s( D3 ]  o
 }
- B+ d& b5 K$ X}
$ G3 J/ B$ o3 S" o& m: c==============================================================
1 k8 o: m, R' h* f5 [1 Q【程序321 v/ T) A  x, Z2 N
题目:Press any key to change color, do you want to try it. Please hurry up!/ i1 l7 X0 Q+ t+ z; b' B+ C4 h. Q- i
1.程序分析:            ; b1 ^* R7 Z: ?" s' T) D4 h
2.程序源代码:# e5 ?. B) v' S& Z7 D6 `- x
#include - k* _9 m  t6 {7 j1 @
void main(void)
7 F+ \! C6 \; d' [7 Q8 D{7 L+ Y- Z% m; E+ ]
int color;" [; b2 ?/ u) P9 _% O. i( H
for (color = 0; color < 8; color++)
  i, V; |- B1 _, [, G# X  e' c {
( x# w2 {; G$ X textbackground(color);/*设置文本的背景颜色*// F3 ~/ ~/ [( h. a( E  u
 cprintf("This is color %d\r\n", color);
# x5 i. Z5 {. B  l: h" | cprintf("Press any key to continue\r\n");
4 B. f# k6 D) N5 j. I8 h8 O5 o getch();/*输入字符看不见*/0 [: @) U2 n6 A3 {9 |
 }
! q0 v* _$ F' {( i6 s0 `* m' {% e6 T}
: Z9 f( Q' |0 n& d# {==============================================================" P/ F2 y& ^$ \0 U( C" E
【程序33, z2 \/ V$ L. O1 n8 R% ~
题目:学习gotoxy()clrscr()函数   
! A4 p( }. n1 @2 `1.程序分析:
$ v# |; z  ]/ \# s: l" P$ l4 X# k2.程序源代码:
$ }! k7 b4 `) E" ]% f#include
: ?, P) P8 ?+ n. A5 O3 Kvoid main(void)2 {# r4 t9 j: p2 `7 ~7 @
{1 t' n7 m: S) B4 K
clrscr();/*清屏函数*/
5 e5 a! g: T" R) K8 J2 mtextbackground(2);
' M% Q) p0 ]: G5 s; V1 X3 ~gotoxy(1, 5);/*定位函数*/1 W/ U7 _+ C" {" J1 B
cprintf("Output at row 5 column 1\n");
5 m2 g- u1 i: m% s; M* J: Atextbackground(3);* i* r5 y% v$ }
gotoxy(20, 10);' ?8 {# ^4 g0 n$ S
cprintf("Output at row 10 column 20\n");
, v" N3 z  J8 M}& Z  m. `* x' ~, ?/ C9 \
==============================================================& O. O/ V% P% \7 b" N
【程序34
- s1 l9 D% v% c$ n题目:练习函数调用2 A. j* o  u1 E% r8 c4 D( M) C
1. 程序分析: 1 B- |8 x% F0 y5 Q
2.程序源代码:
+ `) g( I" \9 I+ Y" U#include ) r0 j7 I8 W6 D4 D( s4 I
void hello_world(void)! F: n. e* z- t$ |2 n! k  e( q, e
{4 Q3 j- Q5 T9 [- t
printf("Hello, world!\n");* f7 f# [2 n: B9 z/ M
}
4 D) p4 d3 e! I0 f" P* l. }$ wvoid three_hellos(void)3 b6 P; q6 X. M; H+ `: H
{$ O: R: _2 z$ a; ^1 _; ^
int counter;1 n( B7 [7 s& O% i2 D5 K
for (counter = 1; counter <= 3; counter++)9 P% K' w4 }  G& v& l
hello_world();/*调用此函数*/( ]  K8 Y2 c3 G: @9 X6 c5 L
}5 j: n9 {' y! {8 ~0 Z& E+ F' M
void main(void)
" g6 m' ~/ b1 T& o% y) Q& V) J{( ?5 `4 F9 Z" y5 b2 G' A
three_hellos();/*调用此函数*/
# W. @, q8 S" n+ K3 r2 C( L4 a}
( P& ~, y- E, U9 g) t) [8 A==============================================================
$ j" ?! l  Z9 q【程序35
" A8 k! r$ p! Z  P. H题目:文本颜色设置  b  m  B) t/ H8 _4 Q
1.程序分析:7 x/ g- t  j& ?
2.程序源代码:9 Q: d0 u& |4 ~& o
#include ( |! Y9 c+ E8 g. Y# Q' H9 i; J0 b
void main(void)- }* e; o0 C! U+ v  p
{
7 O- \4 \2 b! w* @+ jint color;
9 T1 E( F7 k/ V" \! [- Rfor (color = 1; color < 16; color++)
# L) I8 L9 z) n% Y; k; h {3 b3 I8 I4 D6 l/ l. z
 textcolor(color);/*设置文本颜色*/
( s7 q6 p5 a& L. g cprintf("This is color %d\r\n", color);
1 k  z/ T! J2 r7 [8 U- I }, A1 t/ i' H6 r5 @+ G4 [, [, X- j
textcolor(128 + 15);
; T# y$ f' X; o0 `* I# I7 K; R; }3 acprintf("This is blinking\r\n");
$ o2 L/ W! B& A8 I' A$ J}
- v+ b+ z4 z1 {==============================================================$ T- ^' E( e4 `9 C
【程序36
2 ^) g7 o& l  [7 ^3 d题目:求100之内的素数   ! A: |7 I+ `1 J7 Y: T7 ^5 A& S! U6 H
1.程序分析:
2 A/ X8 e# j$ ^" T) z% u( [2.程序源代码:
3 F* O- o: j/ r% g' I" B#include 2 q; o) Y- @* R9 s' L2 l. _/ [1 c
#include "math.h"
( ^0 Q) M( X% W# Y/ N- l$ R2 G1 U#define N 101
5 R( p' e, a& fmain()
; D$ J# v5 h2 ]* X5 ?& u{1 a' w. y* \: {7 i+ L
int i,j,line,a[N];7 y6 @, S  r! I9 ^0 B( v3 y+ ]" s
for(i=2;ifor(i=2;i for(j=i+1;j {1 j8 o) ^' G' e& Q, n" K
  if(a!=0&&a[j]!=0)
+ |& s5 G7 r9 S  `  if(a[j]%a==0)) s+ T; r; c, N  a
  a[j]=0;}
: F; \. L+ M5 y" e1 P! v! Eprintf("\n");
, ]5 v$ N, z, r6 J" c7 p( nfor(i=2,line=0;i{! w% ?. X  g, k! i" ]
 if(a!=0)
. W, c2 \1 M  O' L  m9 Z {printf("%5d",a);
- ?/ d; S1 f& V1 C# u: \ line++;}" C4 W8 N1 g# Y" w& ?
 if(line==10)
/ A5 N, J5 W' e4 B {printf("\n");% [! I/ A8 d. j, A8 c- L
line=0;}3 f& Y! _# K) W! Y8 w
}
: S' S* x& _0 n4 n9 O$ c9 E}
4 i3 d/ E" q0 R! [/ e. j" ~; [==============================================================
! q; M+ n, F6 v5 E# Q9 c【程序37
( i7 f0 I2 e( P* U, z3 d题目:对10个数进行排序- d1 J4 h$ E+ |; y1 E+ x
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,# G& L* h$ g$ @7 Y
      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
# B8 A1 y* v; Y1 w5 ?  Z2.程序源代码:/ z9 h, _# _5 ?, y1 U( D
#define N 10
- [" @9 ?/ b1 Smain()" @) o% {' V5 z, R( R( p
{int i,j,min,tem,a[N];
! Y& ?( \& r3 ]9 g/*input data*/
$ C  q' a& M6 E% ^; hprintf("please input ten num:\n");
6 ?1 ?/ G, G* o5 W( j  k2 sfor(i=0;i{. g  J! l/ z9 L  h- i) @
printf("a[%d]=",i);
, D5 D3 O8 G" w4 ]scanf("%d",&a);}! C6 r! h, h9 A0 T' ?! Z
printf("\n");
5 P, X* I8 X* E& qfor(i=0;iprintf("%5d",a);. D- r$ j0 b) K: n
printf("\n");( ~, }/ w/ R' V8 Z# r0 w
/*sort ten num*/% j* e' G* W. |* @; I0 y) p
for(i=0;i{min=i;
6 x; k' ~: f8 R& C. a& Afor(j=i+1;jif(a[min]>a[j]) min=j;
: I( v' |! U. ~# P1 h* B& W0 y# Atem=a;; e# z5 m3 J, A5 N  A
a=a[min];0 Z, y/ x6 `' |5 z. r8 K! v! J
a[min]=tem;6 F! K* w, A" p8 \" a) b6 L
}
. E; @" l: E! j  G/*output data*/
  `5 p- ^: M7 k  w* Mprintf("After sorted \n");- \% R0 l: ?  y0 i
for(i=0;iprintf("%5d",a);
6 h$ M+ \. g% F% B}; h" i/ N0 G$ n1 b
==============================================================* O2 z4 G+ O6 i
2 o$ c; z7 d6 E6 f; ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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