找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 60|回复: 0
打印 上一主题 下一主题

C语言算法27-37

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

x
【程序274 y$ z1 J* w. [8 Y" Q! x
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
: U# ~, {; W! f7 J1 P% _* H1.程序分析:" K# e0 g% s2 ^6 H0 K* ]' E
2.程序源代码:
8 U# p. C" L1 c: \$ n#include "stdio.h"
( [' e3 y; s. k/ E3 j+ c/ f* u  E" _main()
& O9 ?* R# p5 Q  v3 v) c{
  X$ h3 T. a: _* j$ Qint i=5;
4 M% p1 p( b$ w$ h9 tvoid palin(int n);* x: `3 _3 L% I% u% x' H4 [
printf("\40:");
- r) C8 Y; _, {* q* t; Bpalin(i);
. C9 l9 E/ u9 P# u% p( nprintf("\n");
) ~/ h7 S% o2 H: F/ |: E}5 c) U8 S2 i) V  Y, ]/ s
void palin(n)
* h) C7 s! R! G& ^int n;. h$ _( M+ ^9 w8 z* q4 `
{( g! z' n( |5 D. [/ ?3 ?
char next;/ m% R! {3 C2 T8 u# ~
if(n<=1)3 D- J/ n! p% L% r9 Q* Z
 {" a: i5 T6 \7 b! {3 H
 next=getchar();6 v( |# d( O" i
 printf("\n\0:");* d4 m9 f# v# F+ e
 putchar(next);. Z/ Z- ?" l% E" T5 K
 }
( ~# O) c/ N. ]; L/ B- j; n+ Relse# Q) \1 F! i8 l5 D* `7 x1 J
 {! O, w0 C4 E1 L
 next=getchar();- s) x) L3 i/ F  g
 palin(n-1);
9 D9 H( q7 B; a- s7 R/ H putchar(next);; u5 o) ^" F# n9 i$ s
 }3 R+ e) K0 x$ ~/ ~9 ?8 g
}
' A7 F7 O& V$ a' B' K. g==============================================================0 o/ l! d% Y, c3 {
【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 , o  t, E/ W1 s) A
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
( q4 ?& t$ _' a9 T+ @  q   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 & C, H5 H  J9 \
   问第一个人,他说是10岁。请问第五个人多大?
3 C) ^' D+ {! y6 [1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道+ t' n/ u! J7 ]* ?* I* F
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
2 ?, H: V( ?+ O. J9 S2.程序源代码:
0 w  W+ I; K0 i& zage(n)
' u/ e2 h4 ?# i1 sint n;
! H2 _( _9 e! X7 q{. t2 j+ }4 O5 |- s1 J
int c;
2 i8 f) ~$ O  B- r- A  t# J& h! @. }if(n==1) c=10;
! x% w, l- B5 T- Q8 [$ helse c=age(n-1)+2;; H( q8 }* m- l# H. @! h5 q: H
return(c);& _! I0 u" T4 O* _2 S
}
3 Z; p# P/ }8 ?) h# L$ Mmain()  }6 E3 e. k- @; m
{ printf("%d",age(5));" ?1 G9 E  G3 ^& h) @6 S! i7 |
}  \/ S7 B# H8 p5 p
==============================================================* j, B% _- M3 j. m
【程序29) z: \% f5 F: r0 [$ o: v% K
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
0 N' P2 M: ^( H: |* N3 Z) |4 m1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
' @4 _0 u! ?/ K! [/ ]  X2.程序源代码:
' B* ~* S9 i7 p( P0 S2 ymain( )
1 b4 q* W5 S2 Y, {{9 k1 A& c/ i  ?& V; ^9 L- U
long a,b,c,d,e,x;3 o3 N+ A% P9 K/ _8 j7 e2 x1 @
scanf("%ld",&x);# k) \# j. A4 O
a=x/10000;/*分解出万位*/8 X, Z$ L9 M$ S2 n4 g, |
b=x%10000/1000;/*分解出千位*/) y2 m  V/ h  x2 Y' `6 n7 M( ~1 [
c=x%1000/100;/*分解出百位*/2 w( [, }* q% e. C5 q' c
d=x%100/10;/*分解出十位*/
& y& N$ |: ?' r' U. D/ @3 L' De=x%10;/*分解出个位*/
) ^/ P- m: W* N" X0 fif (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);, K8 A/ ^+ R; M  T( F6 a# s
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);+ {0 M5 C+ R, k  [
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);3 A7 f& b/ |3 v
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);9 f! o# A$ }# Q  l
      else if (e!=0) printf(" there are 1,%ld\n",e);
' R- C% O! F: \! m* ]}
. |, y; N/ i( l  t  J: g==============================================================; f7 f6 Q+ {  z6 p/ y2 X( H) \" ?, Y
【程序308 s& {9 k& ~: L- V
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   
- I' m% m0 ?" t! Z1.程序分析:同294 i# X' s3 M. o2 H; d" o
2.程序源代码:# t1 i0 V/ S: J# Z$ m
main( )# ?% N6 N( i+ r: ^0 o! d+ L8 N
{
7 k% Q" H& `$ P& vlong ge,shi,qian,wan,x;' d& i& ~. D2 M- U" [
scanf("%ld",&x);4 |5 q- m8 ^7 s
wan=x/10000;
0 F% d% ^: W( q3 {( Y8 `5 M. q9 l: Qqian=x%10000/1000;
& |! c/ `( R1 n' Bshi=x%100/10;
2 |6 l5 F- Y$ E6 ^+ ^ge=x%10;
2 X7 c* W& @4 n6 Y* kif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/$ R( U9 V6 u3 W& I  u- ^3 @
 printf("this number is a huiwen\n");
/ a8 m- C# U/ Z+ n9 velse
) y) h9 i" F7 v printf("this number is not a huiwen\n");
7 O+ Q4 B  J; H3 k9 ?$ G$ s}
【程序31
- c9 |. E/ m; Z* O1 k/ k题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续* |0 c/ J0 h# L% `& O4 @% R
   判断第二个字母。. p) @4 F: E" I4 z1 l1 Q. m5 Z6 x
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。* O. ^' [6 \% T. |8 V
2.程序源代码:& L% s  u- p' T% p
#include & k5 s0 a8 J0 L# y  r$ h. A, p" D
void main()5 c7 k. x, R0 t% r! t- U' ^
{
6 [- k: l, S3 Z% j4 h) Tchar letter;
" }' i* Y/ h8 a$ B; ?* [3 Dprintf("please input the first letter of someday\n");5 Q% K4 G4 U3 U4 F
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/- ^8 V* ?# Z: ?
{ switch (letter)
: Z0 e7 O1 j2 ^. m{case 'S':printf("please input second letter\n");
/ l! V9 j) s6 g( I, _9 q- b     if((letter=getch())=='a')  Y7 ?, p4 v# z+ _  r' o9 D6 [
      printf("saturday\n");
5 }9 g: Q  z" Q7 z8 z: t     else if ((letter=getch())=='u')2 l* P2 [  ^! `  X6 E/ |$ |
         printf("sunday\n");8 E4 M3 v/ ~0 u7 C* G
       else printf("data error\n");
7 Z$ T8 k$ _2 a3 R: @1 I     break;
1 l+ y2 J& m/ x! N1 ]: Q( }case 'F':printf("friday\n");break;
% {! D$ j0 e5 I# r+ a( e- ]. A/ Vcase 'M':printf("monday\n");break;
3 ^3 a& R- C% mcase 'T':printf("please input second letter\n");, E* o8 ^6 H( o
     if((letter=getch())=='u')( f4 j. F9 [$ i
      printf("tuesday\n");7 p, V2 e. M# U; [: X
     else if ((letter=getch())=='h'): g: ], Q: ], [% ~; E4 @" b
         printf("thursday\n");3 M" \7 ]1 Z1 [  f5 M' Y, o
       else printf("data error\n");
; |& }- b+ ?( G. r: [: m2 l+ M     break;
/ r' y3 l7 C1 ]& e8 [2 ycase 'W':printf("wednesday\n");break;4 [( y+ a. G& b8 Q; c, E
default: printf("data error\n");+ t3 ?* b0 ~% o; P7 E- m
  }. A, b# @% e" S& o
 }
" A: ?1 e3 n4 N" k9 ~2 t}" ^8 [+ T9 o. k+ m7 e
==============================================================' V5 X# C6 v% z) t
【程序32, U! m# ?% d3 H/ ~( e/ L
题目:Press any key to change color, do you want to try it. Please hurry up!
  U2 Z$ j7 d1 p1.程序分析:            
4 `# G6 P& g; r6 S( i( s2.程序源代码:0 e; `# D  u) F
#include
( W: `0 s/ r, m: [( I: _void main(void)
; ]8 k  u5 L) J! w; N{5 d8 [* V" p9 D+ o2 _' B- O( c
int color;% U& z1 D) i( h
for (color = 0; color < 8; color++)
  B& L/ x' r0 Z& p7 s3 ]& M { ( j+ z9 ^$ q4 b! d  A9 G2 M0 p% }, i
 textbackground(color);/*设置文本的背景颜色*/
; i' q! G" B& u; r6 s- t cprintf("This is color %d\r\n", color);$ \0 b! ^8 P7 \0 x( W
 cprintf("Press any key to continue\r\n");0 j& d/ N9 Y$ y; t; M# X6 @
 getch();/*输入字符看不见*/0 R3 t( e7 S, {$ f. l" M
 }5 W/ n& [$ H+ P. a' \; O
}3 V  W2 n! t* T
==============================================================
- S9 T0 v5 r1 X, s  R【程序33
! u7 l, Y* M: W# s: ~题目:学习gotoxy()clrscr()函数   * z/ Y3 Y4 ^& T0 O! T
1.程序分析:/ p' p2 p- d( Q" |
2.程序源代码:  p7 G# k: ~* t+ V6 n5 O7 K
#include
. j  _! C  L' d) q! t0 v9 ]void main(void)5 }- r1 j! r3 k) D5 K! Y; g
{
# h1 O- D, K5 F1 aclrscr();/*清屏函数*/( R& T3 u" p5 F8 @
textbackground(2);
" V5 D6 m: i8 d0 g  M* a1 R) ogotoxy(1, 5);/*定位函数*/
/ D+ i5 O% \$ [+ T. u: }cprintf("Output at row 5 column 1\n");& c  V9 f, ~0 s7 A
textbackground(3);; t8 n& Z' O& u* r' f' V0 U7 l
gotoxy(20, 10);  j! e, q5 S$ p. A
cprintf("Output at row 10 column 20\n");% i; J' W+ W# Z  {
}
% T( r: C# q& R4 r, e==============================================================, A" J% D7 ?4 B
【程序34, ~  b8 V9 d9 _: \! {. c7 b
题目:练习函数调用# a# G8 n$ w% C: ^6 b. ~! z
1. 程序分析:
9 @& I' n  V( ^. e2.程序源代码:- _* v/ S$ S! u* T: w. `  U
#include
; [+ i( ~  Y  v$ Vvoid hello_world(void)/ r! i" Y. E3 h9 ?. _; {
{6 d* `6 v( }8 s  S( D9 F
printf("Hello, world!\n");3 H' n+ _7 e& J$ K; n9 i# F* Q
}
, w8 O7 @- N/ Z; fvoid three_hellos(void)
: z4 y; T% N  b; t: W) h. P{5 J$ Q; Z4 K# G4 J
int counter;, O: {( o  N1 o" W( d' {7 R
for (counter = 1; counter <= 3; counter++)" a# I$ v6 c* \
hello_world();/*调用此函数*/
* q. \- m, Z) U9 `# R3 J! x  M) H) N6 r}) }. \9 B: F2 Z! z" L' H1 s* G
void main(void)
  P: u- H( Y+ e0 S; s- \; S( J{
' d5 z5 B  c* `/ Y) z+ Pthree_hellos();/*调用此函数*/
# c4 w& A2 |9 [6 I4 \}- D# u* N) O7 u! T$ N$ j$ M  ~0 o
==============================================================
1 x: ]- K9 t4 P- q& E【程序35$ x/ P% `, f9 v) ~
题目:文本颜色设置* F0 x+ a6 U" R7 f5 K3 [
1.程序分析:% [+ E6 _1 Y; A) v! F
2.程序源代码:
/ ?2 d! w  Q' J" w# o7 w#include
" A5 u9 N; o, G" a; V: y+ x( Ivoid main(void)1 [. m6 T  a% N# Y4 A2 V$ k
{
) e+ r3 d0 A" S. pint color;' s0 H6 ?2 c' l7 x
for (color = 1; color < 16; color++)
; ~/ j% f. c& O5 z0 b- ?: u8 ` {$ h  K6 K- }/ }. W$ k5 h$ A/ A
 textcolor(color);/*设置文本颜色*/
* K$ {7 D4 s, i: a cprintf("This is color %d\r\n", color);5 @+ D( n9 [7 c# ]
 }- W7 B' P$ k4 V! g) s( R+ G0 d
textcolor(128 + 15);% M6 b) Z3 B. r
cprintf("This is blinking\r\n");
( t9 z* I8 |; ^}8 O8 ?/ Q  }+ d+ Y5 p: S7 e( b
==============================================================
1 e! g" w5 i3 T  b) s【程序36
& d9 s0 s2 |: T: Q题目:求100之内的素数   
" l9 g, r7 c4 r' C- T" [* ~* \8 x1.程序分析:
" U& U2 j0 ?+ z. ^* }! I- J) F2.程序源代码:* a& ?+ u: M# }
#include
7 G% ]0 Q/ P# y4 O) U#include "math.h", n2 L7 t, G2 N/ c7 V) L# Z. i: [
#define N 101$ `, G" _/ V; h
main()& T" g$ P8 y$ x
{
& W5 D% l9 Y1 s4 i% P' sint i,j,line,a[N];
1 r7 h5 U- x  P& N* U% T2 a. Wfor(i=2;ifor(i=2;i for(j=i+1;j {) S5 ^( V( N- F0 N
  if(a!=0&&a[j]!=0)
! U+ f) k1 N( _' |: ^  if(a[j]%a==0)
$ g( P( L7 S! E- T3 U  a[j]=0;}! G* a% h- e* U4 h6 Y0 }
printf("\n");# c7 N& |. a# o+ I, g
for(i=2,line=0;i{
0 {. t1 v0 {) k2 z/ ?+ l if(a!=0)
6 L  [7 w4 o; f4 k8 P0 p {printf("%5d",a);2 f6 u( O) H4 M" w+ h& z3 h
 line++;}" O- @3 v& _) w5 @( q; M
 if(line==10)5 B; A) J3 I; L5 v9 l; }
 {printf("\n");
' Q& G1 x0 z& ?* }! v$ s8 O/ Eline=0;}
) V7 W7 t& F; P- m- Y6 m- A! U}: A9 |! M7 h$ w
}
. \; D. P# Q* R  ~* P==============================================================
! g1 i! ?) b0 G+ a. o6 U: C3 j【程序37
) k8 b/ Y' z6 T5 T+ \/ u1 C' S题目:对10个数进行排序
* q0 k7 {  n0 ?) P! e, K" u% a. y1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,* r( a) w) k9 O0 |
      下次类推,即用第二个元素与后8个进行比较,并进行交换。       
5 \9 i4 Y3 s+ |2.程序源代码:
0 V5 c, I, ]1 M/ _8 H# c#define N 10
' p% T, D. F' M# X. Q4 gmain()
  \0 s; E- i' F8 @; U{int i,j,min,tem,a[N];
- ~- v& m8 c; l9 W) ]% ]+ l/*input data*/
* Q" w" Q1 |- J& d* ~printf("please input ten num:\n");
9 m% d( j' [! Hfor(i=0;i{  b6 _; c' f% d  `
printf("a[%d]=",i);
0 z9 o4 {0 i( w# d) T2 p  ascanf("%d",&a);}  G8 l$ `2 o  c+ ^, p& ?
printf("\n");
/ X5 s4 F3 @0 ]) \; l+ z( i# ~- wfor(i=0;iprintf("%5d",a);
0 g4 @: v; D6 h/ ^2 b6 H4 |. yprintf("\n");2 r8 W; ]/ z7 R
/*sort ten num*/# ~+ a+ V9 |& D) z0 @5 ?0 k2 ^$ c+ {# v
for(i=0;i{min=i;$ A' g; a, Q, _: M
for(j=i+1;jif(a[min]>a[j]) min=j;6 e1 I% }7 J. k1 e+ p3 T( [
tem=a;# V; q( P5 g/ x0 H
a=a[min];
1 j2 A7 k7 S$ Da[min]=tem;6 ^8 c3 p# B5 j
}6 q3 b# }' M2 Q
/*output data*/
) l; `% q( w* h1 ?, e' Q. Tprintf("After sorted \n");' ]7 D2 B3 c" M$ F: ~- a
for(i=0;iprintf("%5d",a);
) s- O' R) ]4 i0 k0 m, V}
; r0 u! u- t* {- v& z, r/ N- e- I8 `==============================================================  A% o) s" V! r" n8 u
; b3 z8 X5 T1 @8 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-1 04:13 , Processed in 0.058437 second(s), 33 queries , Gzip On.

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

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

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