找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

C语言算法27-37

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

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

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

EDA365欢迎您!

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

x
【程序27  y2 L8 }( B1 q6 A2 Q' x
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
6 i$ e. f/ c( Y6 F1.程序分析:6 |* B, U& ^, Z0 e) @4 }, n
2.程序源代码:
$ G/ Z6 T% Z1 @) ]! ~5 n! t#include "stdio.h"* W! G; @6 Z. s6 r/ j2 Q, q
main()- J; X1 l- B; ~6 J* |
{4 R4 X6 I9 l( }/ W4 J) d
int i=5;
' w* @4 K8 I4 Lvoid palin(int n);6 H7 P5 j9 ?8 o
printf("\40:");5 w( a) w0 I3 Y0 \
palin(i);
* I/ u1 r- z7 [printf("\n");2 \. x# l( v9 O* }! G# N
}
; e( T' R0 B4 z2 b/ o( N! r+ ovoid palin(n)
/ w! m: R& \. ^* [2 e0 \' _int n;
: _' |  L$ {4 j3 Y6 [  [{# v: K6 R, l% v- n' a5 ]$ @% p
char next;- g/ t& v9 p8 ]
if(n<=1)5 J6 p& i& B7 y, Q
 {
2 N3 O/ x; k# K* @. k3 m9 r+ B' ?. a* V next=getchar();4 R8 z  v1 V! L6 C9 D6 B; P& F6 h; n( }
 printf("\n\0:");
$ T" @: D% k/ K" d8 P putchar(next);
. @: }7 ^. K1 C1 G5 C  H+ N }6 g4 n/ t4 f* {8 }& Q
else- L$ l9 e. z7 P1 l( N
 {
0 p- L) H; i: N$ c% l/ A next=getchar();
8 K! i2 [' _: N# K6 J$ [) g1 ? palin(n-1);
$ r8 n, w6 |& `- Y6 ~ putchar(next);7 c8 w+ ~2 f* c6 r
 }& g9 F) u1 e8 Z; i4 h& Q
}; y& v! N5 z' \. l" ~4 c* k( W
==============================================================
7 `, J& o3 }8 i+ J7 |【程序28信盈达嵌入式企鹅号要妖气呜呜吧久零就要 : d7 C9 |4 E, Q: L3 A- Q
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第- {: r  R9 A4 g) \+ d9 s. }
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 # P" @' I9 f6 b5 N* ?6 y; a
   问第一个人,他说是10岁。请问第五个人多大?
2 e: x6 H1 H' B+ H) v1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
7 N( A9 J0 u! H- y% [      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
7 x/ f/ Z9 b3 Z6 l' v2.程序源代码:
1 v! f, x' X  x' r7 J1 G9 o6 Iage(n)$ Y# |3 h3 A' ~( |0 O* {
int n;
# C  c: b2 S9 G: f6 w1 x{# j0 Z8 w: j5 P) J9 S& ?: x
int c;
% T* X3 @7 P. u0 m; Y0 ?if(n==1) c=10;  ^* M8 r( W- T6 v  h
else c=age(n-1)+2;( n  [6 o4 T7 S0 S
return(c);6 s; d$ a6 M! s" ?$ N2 x
}
" ]1 _% B& z6 D, Z! I( d3 imain()
) [+ h9 b: S7 b, Z% _% n' [- [{ printf("%d",age(5));
; }1 B6 b! l* [: _5 Y+ B}6 I' b- E7 y8 s0 ?. l5 r
==============================================================
2 Y) j+ s% w. A【程序29
/ e# o1 h8 e) y, L7 _! \: ^" r$ D* R5 M题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
; k. v% X. s, j& Y1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
+ _7 v7 \4 x% _3 v2.程序源代码:, G7 ?: Q, T# n/ U
main( )7 d. r  F' o' o
{
8 P. y7 D9 G1 d! ]* glong a,b,c,d,e,x;5 X& @9 n% f5 p  x
scanf("%ld",&x);
; s. I( U" H) }4 H  u9 W: ya=x/10000;/*分解出万位*/6 u& S% Q8 G9 i( i, }  c& z
b=x%10000/1000;/*分解出千位*/5 k1 G) c% ]1 p
c=x%1000/100;/*分解出百位*/6 b9 R; V% g/ n* s4 O
d=x%100/10;/*分解出十位*/
# f! h- N. A1 ^) m) d8 me=x%10;/*分解出个位*/3 n9 a6 }. u) P. k! L/ s  _; a
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
$ P2 n1 I' z% d: {- {# nelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);. }5 H) j: V" \+ W1 d
  else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);6 q0 _5 S% T; d: B2 l% Z
    else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
: Q4 \; b. e2 c% u( @5 ?      else if (e!=0) printf(" there are 1,%ld\n",e);
) n4 k& W: N* H' p4 c5 L}
5 V2 `5 z( V2 |3 N. q==============================================================0 t9 E% N, u8 @2 L
【程序30
' s( h/ c( H4 b" A7 D1 x题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。   , h: j" K* P% u* K  s  o
1.程序分析:同29
, U0 y1 q, @, k" k4 Z) {( M2.程序源代码:" h+ s% G  s" J1 x3 b
main( )1 y! y6 I6 ^6 e2 P5 E5 w
{; q" L5 A3 b4 M4 [3 B- T
long ge,shi,qian,wan,x;
% ]9 J3 s* k+ c3 _( qscanf("%ld",&x);1 U: ^2 C& F. O: x/ |( o) @
wan=x/10000;6 @% Q$ b2 R- r7 k# W
qian=x%10000/1000;' j  O! E. N$ S# A( R% R9 _! p2 y
shi=x%100/10;
3 L. T0 {. k9 }1 J( J1 u* l$ v& r" {ge=x%10;
' k3 N5 A7 H# _7 a: H( ~if (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/  v7 r. u9 f3 z# \8 b9 g
 printf("this number is a huiwen\n");( V; @! ~4 x4 ]7 s/ t/ o/ t% m
else
; S$ j: s! a2 R4 V) c, A5 t printf("this number is not a huiwen\n");* f6 n3 g0 e8 z5 U2 Z; B
}
【程序31" l1 n! c) y- r3 F; ?7 r% ~
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续: [% m" |) Q0 n) K( A+ X
   判断第二个字母。4 Y7 j3 Z) Y( F+ |
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
" G. T  \! |! v2 @- O0 `0 x2.程序源代码:
7 }' Y4 x1 q0 }/ g#include % d. G5 B( @; k
void main()
- X- P" f1 c7 n5 Y{
( U/ P4 {* q: H5 A0 q+ Mchar letter;& ^. Q' y0 ^8 [! q6 h  x
printf("please input the first letter of someday\n");% v* b: b) y3 f% z0 `; t0 u
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/* z1 R$ s/ C" [5 ^3 Y
{ switch (letter)
/ P  m; F: b  O% x" N{case 'S':printf("please input second letter\n");% Q0 _' `: \8 m/ k2 _
     if((letter=getch())=='a')0 P4 i) N  a. W2 |7 D/ q9 E
      printf("saturday\n");0 n3 o4 L8 w9 v- t9 G
     else if ((letter=getch())=='u')
7 F6 d0 H% @# V$ X, S- ^+ w+ N$ ^         printf("sunday\n");
0 z+ ]  Z; J8 ]5 q; z* R8 z# a       else printf("data error\n");' P9 R+ [% I" l
     break;4 }# L5 [5 A, X/ k1 @7 b
case 'F':printf("friday\n");break;1 t8 X+ L, q! R0 y+ ~9 `' l4 r
case 'M':printf("monday\n");break;! M# v9 G" D) y8 K/ G
case 'T':printf("please input second letter\n");
; q1 q$ I% h7 o- N  f     if((letter=getch())=='u')/ [- V0 \7 o, Y7 Z- [3 `
      printf("tuesday\n");
1 `( C9 L+ r. M     else if ((letter=getch())=='h')1 s$ H- X: ~" G/ H
         printf("thursday\n");( K$ Y+ p* j& {  V+ ]; R, j
       else printf("data error\n");3 O7 ~; L) u! H8 G; h
     break;
/ j8 m! a5 M1 [4 M& x5 J4 T* Ccase 'W':printf("wednesday\n");break;% J; K( k4 l& D9 G$ C* B" j% C# Z
default: printf("data error\n");- C: Z) [# L" G# e8 {0 |; C
  }8 U9 }) @( o2 V) K  S" \
 }6 ]2 `) h: x5 c+ v1 b
}
- s' r2 ]; [. _- m9 \1 \& O==============================================================
, E' w& \0 ]: F# l7 l+ J【程序32
' G  M: W4 a* J( D. w! r题目:Press any key to change color, do you want to try it. Please hurry up!
- ~! h- @; Q" S: y  |$ q) D1.程序分析:            
9 U. Z) N" {7 @5 A2.程序源代码:
# S+ \, _) W+ b+ l# b6 A#include
5 _" T! o9 \2 u5 J/ O- pvoid main(void)
0 v8 I0 A4 K+ ]6 C2 Q{
8 t+ k+ {% ^" g+ J. D' O. lint color;
, X- \) Q. W4 U2 yfor (color = 0; color < 8; color++)/ i* v9 j5 m% C8 A7 o
 {
8 P" D3 }( s0 n2 g4 J textbackground(color);/*设置文本的背景颜色*/
! D9 l! s9 V; R$ f9 p4 {4 C cprintf("This is color %d\r\n", color);5 S8 y" O/ M% U& w! H* ]
 cprintf("Press any key to continue\r\n");
7 v/ k8 A; d! B% ?8 V getch();/*输入字符看不见*/
* |* n; F9 P4 w  O }4 L5 x% ~. j" y) O& I( X# U& D
}
. J0 A1 S' m+ v. [7 i2 {. ]==============================================================
* G" T0 ]! {, j& G6 x+ z1 R【程序336 M5 I% Y1 s# \; t5 E% r* M
题目:学习gotoxy()clrscr()函数   6 S4 Q' g0 ?8 X! p
1.程序分析:7 G( N" `  s# z2 k+ X; B, o/ M
2.程序源代码:, k$ m  O9 {3 E4 u! G/ k
#include
- B( k+ }  s" {4 G' dvoid main(void)* V6 o! a, x0 b  T
{
4 U4 C' C9 d: N" E9 L  i8 y9 Xclrscr();/*清屏函数*/0 v4 w) ^9 A) R4 i2 f8 p
textbackground(2);
8 o9 G1 y) f5 {6 xgotoxy(1, 5);/*定位函数*/' g2 Q5 V2 J& N: c2 Y! @
cprintf("Output at row 5 column 1\n");- `, t# q( A* C1 {& b2 j
textbackground(3);7 W6 K9 V# n/ k2 J" S% g+ p  F2 u, W
gotoxy(20, 10);
% @: r& j! _3 m2 ~! Vcprintf("Output at row 10 column 20\n");
# s* z+ a2 h* t- ?}1 P  I; e" w7 [5 Q; @9 ~
==============================================================" o( c. j+ n; ^, W1 k7 ?2 R
【程序34
& `9 J7 b! ?' t7 V. }题目:练习函数调用# o% q) k; m, J' o6 S1 `: J4 a
1. 程序分析:   h2 @+ ], z) V9 O% s# X
2.程序源代码:
# |* D; I/ p+ t/ W) I#include
+ @  c, B# R( R& h. T. E1 Q- svoid hello_world(void)/ K2 `/ S" I+ K5 z1 S! u3 `
{4 Y1 n$ G: t9 L, X7 m" b
printf("Hello, world!\n");
  T& @" x! [7 P7 d; t6 t' c. f8 P( h}
' z$ ?' S& t& ?( s6 b& [void three_hellos(void)0 e! c% R; i% F* V
{: J+ W! J7 T+ k4 g$ b& Y. I  x; G
int counter;
* F, t& i+ E+ o4 s& }for (counter = 1; counter <= 3; counter++)
- V$ O. g) e/ Ghello_world();/*调用此函数*/
/ f. N6 v! m3 z' i! g}
2 i' Q- ^' E' Pvoid main(void), P& U% o; K* J9 c( C
{
' _/ J; \# t# p$ U7 h0 P: I/ x' tthree_hellos();/*调用此函数*/
- o4 S& z/ B" A( c+ S* U}
8 U, O1 L/ k8 v0 Y: H==============================================================0 g6 B2 q' k& C5 M  {# v
【程序35
* r6 |6 @/ c& g' ^0 `, t2 Y题目:文本颜色设置
+ O8 p8 {5 Z4 e1.程序分析:
- I0 ^% N! q2 }7 ^2.程序源代码:
2 y7 l% S% X6 Q# }4 ~#include
3 _( r, Y* a4 L# Vvoid main(void)
' A' i$ m( O4 F5 c8 l  j1 x{; S3 V9 `3 N% P( ]3 F
int color;
  M+ g- \/ \8 h2 s/ ?% ?/ k; xfor (color = 1; color < 16; color++)4 P7 Z' G" |9 G$ @/ S
 {' K1 {1 `& p; B/ \. i/ X6 _
 textcolor(color);/*设置文本颜色*/- f& U5 G8 k$ m; D
 cprintf("This is color %d\r\n", color);
& _" v5 ^# l6 g: V }- W$ i" ^+ }- m6 B6 {
textcolor(128 + 15);
8 P; |' K) G" Icprintf("This is blinking\r\n");  S; _' R* k* ~+ v* @( ~
}
/ Y! F! g: }1 |" \  |==============================================================
5 t# |" Y) l3 C( L4 t【程序365 Y/ D: O" P0 `3 H# H) }5 j. H1 n: _
题目:求100之内的素数   + o9 x3 \8 ^: C* }
1.程序分析:& q4 P  M: ^6 D; R# I- g
2.程序源代码:( Y/ o. ^9 C& R- r$ }+ x
#include 2 a2 T# [8 Y" Z' `2 j
#include "math.h"
/ H( |& r7 E( b1 Z# t#define N 101( z* F% I$ f) p# z; Z, j6 d
main()
  T1 E: C# _8 s# N+ S; H{
3 i1 {0 C' r" t2 @  s+ @( ^; eint i,j,line,a[N];
4 w  z" i" C# y, }# p, kfor(i=2;ifor(i=2;i for(j=i+1;j {. w7 C! c! @) l" L) W! M. a6 Y0 M
  if(a!=0&&a[j]!=0)8 O% t5 h5 G% j' a5 j
  if(a[j]%a==0)
( F. y) s3 Z8 R* e- K  a[j]=0;}
3 f# W/ q* l2 m$ U2 `printf("\n");
2 l" z& {7 h) Q6 t( |for(i=2,line=0;i{; R/ U0 |% e* C
 if(a!=0)
. @4 O( ?+ {1 W2 a% y- w/ ` {printf("%5d",a);
  m. i/ g; y! x0 U9 m: T line++;}
  [/ B( Z7 r5 C: h9 @& h if(line==10)1 D7 o% W$ f/ `, u
 {printf("\n");, z% @* p; _3 j, ^, O  A4 |* t
line=0;}4 ^" ~0 u) w" s9 ]2 {+ T( L
}
7 U& g4 v% w4 ?; N! `% a5 v}
, i* t$ \3 l- L4 f; [==============================================================
6 {$ E( k( L/ G! ]4 i; h2 ?【程序37) u" w8 p8 E( x
题目:对10个数进行排序
5 a) H2 L7 b9 X: Y  l* ?: q4 y1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
/ D7 e. r3 O6 `      下次类推,即用第二个元素与后8个进行比较,并进行交换。        2 a, W4 i- a. t
2.程序源代码:) L' x$ Y! X& z9 N/ Q% t
#define N 10
- {* F1 ^4 I8 [! i5 ]/ H7 S+ Xmain()0 Z0 u" q% N6 F7 k- `1 Y
{int i,j,min,tem,a[N];( e: Y- }: k! k* z5 [" ?3 G1 z
/*input data*/
7 m; ?8 b+ V4 U% {+ O8 hprintf("please input ten num:\n");
6 U% K+ f2 v; P& i/ \1 K' C, qfor(i=0;i{# L. P4 R) {5 h/ y
printf("a[%d]=",i);
) h; {3 C+ n! Oscanf("%d",&a);}
0 m7 Q5 c" _. U" A6 tprintf("\n");6 L3 Q! ?  }5 y0 y
for(i=0;iprintf("%5d",a);
9 u8 j0 t. N, ?" cprintf("\n");: d* K% ]; Q8 e0 Y# }! ]
/*sort ten num*/( K  w& ?$ J8 D0 Z$ G' _/ C
for(i=0;i{min=i;0 N, w" `: R) C0 v: E8 f  G
for(j=i+1;jif(a[min]>a[j]) min=j;4 q1 G, R0 W( r! u& p) e, o& k
tem=a;/ G, Y) y# i8 ~( F  q
a=a[min];1 V: A4 ?8 e0 o; K; J' m9 ^; ]
a[min]=tem;
2 B1 q; u, O# _3 @}8 m6 G( W' z( r% W9 n6 \. a
/*output data*/
8 K0 {# T2 R7 H) ]) m# Gprintf("After sorted \n");
' K6 G# T4 N" wfor(i=0;iprintf("%5d",a);0 `0 ^/ f4 r0 F
}
, n/ l- S; ^' S, E) }==============================================================
4 o6 M9 ]! {# w, M* |" {
- Z! D! H0 u% R1 [( A8 ?  N" T# `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-5 06:23 , Processed in 0.074331 second(s), 33 queries , Gzip On.

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

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

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