机械必威体育网址
标题: C语言经典算法27-37 [打印本页]
作者: tainqing 时间: 2017-10-7 16:23
标题: C语言经典算法27-37
【程序27】 * W: h6 w: E. a+ V! ^
题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。% n# w* t' L* X0 n$ Y6 h5 q0 i
1.程序分析:
! d# ` ` H/ r; R2.程序源代码:7 c8 e" b; N" \0 L3 W
#include "stdio.h"
8 o0 y9 \) n* @: ~main(), d% s! E7 x6 V
{
2 ?9 |+ s( A$ g. q6 j* }- M' `int i=5;5 D1 j5 z4 X! f7 B: A8 `2 y
void palin(int n);
& s6 `0 o, B; U7 R) R9 e$ p# ^printf("\40:");
A* V* P! z% s9 f+ U5 _palin(i);$ U1 U+ U' ?, p9 {
printf("\n");
/ [9 E: i% B# H0 Z H# V# `}
. [; x1 ^5 T1 P0 S8 O4 rvoid palin(n)( W# Q& I0 e1 [, F
int n;6 Z. V1 s3 ?* h, y6 C0 ]8 g
{
* ^& [. \" H" C; ^+ z5 [& s/ jchar next;8 V1 D$ ^# b/ i3 g$ O
if(n<=1); W, _. y# ^! Y* S
{ t0 M* w5 k: w1 q/ s
next=getchar();; C4 `; N/ A5 K `9 y+ j
printf("\n\0:");
4 A# n* x3 P6 n! ^+ Y. o putchar(next); D0 _; W9 D) ]/ B( C
}
8 h0 Z8 }4 N- v) ?& ?else' j" g" I, R9 L5 W9 G
{" j# a! S% V. z1 f( {# G$ s; g* c3 j
next=getchar();
- a% q5 u4 m8 \* C! W palin(n-1);
! s: S7 [: i4 c4 e putchar(next);4 H' y- W( }5 x- Z- j
}
7 A/ T2 X% z5 d: j! i# m# b}
+ ~2 y+ H2 w+ r+ W) p==============================================================6 ?: {6 y9 u1 T; X
【程序28】信盈达嵌入式企鹅号要妖气呜呜吧久零就要
& C6 V2 ^, x. l1 P题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第; X, O! p+ ?0 H0 f8 _
3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
. G0 j8 o0 q& O. L 问第一个人,他说是10岁。请问第五个人多大?; x+ U& c/ I8 r. R
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道# t* t6 b7 Y3 Y/ F! p( W- a8 n
第四人的岁数,依次类推,推到第一人(10岁),再往回推。
6 M! T7 a2 o) d2.程序源代码:; F9 h, Y$ c- T/ W; x* l0 `
age(n), A; [- X! G% R1 m: x3 J
int n;. g$ k) t( T& q5 c7 h+ P& A
{7 |- V2 K: i9 F. o$ p
int c;
$ N1 r% @5 \: ^2 H1 g/ Z# kif(n==1) c=10;
6 l- ?& D o+ _2 J h4 s O6 |' \else c=age(n-1)+2;5 q2 T4 Q+ ?, P9 ^) x1 a) A- Y& T
return(c);
, j4 T) ~* N2 T- E( q4 ?7 ~}$ t- F7 J1 T) M# H1 \: g) w2 z
main()
, n5 ]( l N' C* l{ printf("%d",age(5));
# @- g6 t$ Z+ m1 O; q+ W}! Q; z+ I: L J: {2 u
==============================================================. j+ D; {: D5 M1 ~9 l
【程序29】 " \+ S; _# q* U- k- o, z7 b
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
! a! t; h, L! H8 Y0 j [- w. z1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
* K% {9 ?# B1 {9 x- {9 ^8 ]! A: ]2.程序源代码:
# ~* u# K! j' i" Wmain( )4 U& e, Q% N( ~( `+ y2 K
{! a. J+ \+ X' ?; k0 I
long a,b,c,d,e,x;
0 k6 P d; U1 L- n! C/ D: ~scanf("%ld",&x);6 K8 | }- M/ r
a=x/10000;/*分解出万位*/: o7 r7 Q8 {% ^
b=x%10000/1000;/*分解出千位*/. H# R# N! f h
c=x%1000/100;/*分解出百位*/
# M. x6 m p) B6 s1 C5 m# M C/ Ad=x%100/10;/*分解出十位*/
; l/ M8 z( X' A+ we=x%10;/*分解出个位*/* j8 U: E) T2 ^: O0 V2 |$ `0 t/ x
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
: `3 Z. q3 W. `9 gelse if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
Q& ?" }% Z2 F& ^" L else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
6 p) V) E/ W" r$ E, `4 x! ~1 R else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
8 ?' I, a" z6 m! q# h1 B else if (e!=0) printf(" there are 1,%ld\n",e);
4 U) e. D+ V, s# k5 y) I}' q) V4 ?' F2 [ Z- u! V
==============================================================5 _+ V4 M! s+ J2 J
【程序30】 w5 i! N! ?' Y) \! a: [
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
: I# n1 ?7 n7 U) y' Y/ x I1.程序分析:同29例
1 A3 I4 ]& k; A/ z3 F. o, z2.程序源代码:
0 P5 B4 o' {! u" C& l7 k" Q0 O smain( )
$ r( H1 e/ F% ]% B{1 _' a f" a" k1 Q
long ge,shi,qian,wan,x;) q3 k6 k( ~; N: x5 k
scanf("%ld",&x);
: U0 N2 T$ V$ G4 I {4 t* `% xwan=x/10000;* M) s) F! f8 P
qian=x%10000/1000;
5 x& l4 z7 @! A7 A! _1 f, R: l. V" Xshi=x%100/10;$ S9 C) b! U* D
ge=x%10;
$ H0 p6 }7 Z- Q& gif (ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/
2 r: I# E- q+ ~; P printf("this number is a huiwen\n");
+ D% ]* i, C. {7 Lelse
) e2 n; p1 F) J3 ?1 b printf("this number is not a huiwen\n");3 b( y( T/ A" C: a$ P
}
【程序31】
' p$ a Y, s; y) z# c6 M题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续. U: C" P& L4 C# {6 _, P! Z" Y) g
判断第二个字母。
, p2 p! f& [/ ^- Z& a0 W7 j1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
. F* X! n1 ~5 I# ?4 }2.程序源代码:
$ \& {" E2 ]# S. \ w0 l! {/ N# w#include
5 p: }" u- f- x) d$ v# ?void main()! n+ ^3 V/ O9 X. l3 ?# L, ~- A: q
{
; S9 E7 Z v: ?: I% C+ schar letter;' i8 k( c0 ^, {9 G# H, L
printf("please input the first letter of someday\n");
' J \; ]. f$ F: }5 D/ j4 wwhile ((letter=getch())!='Y')/*当所按字母为Y时才结束*/( u$ D" z# a' t: j) l
{ switch (letter)5 _, \' Z9 N$ y7 [% i6 u
{case 'S':printf("please input second letter\n");- `+ W1 m$ D8 O& l# J D
if((letter=getch())=='a')
7 F: c+ t; q4 _& U3 }% o% {- O8 @2 C: j printf("saturday\n");
- c( R' B2 i3 }! q% _ else if ((letter=getch())=='u')
& w7 S9 `" V0 E4 o printf("sunday\n");3 |2 F, [9 [8 T
else printf("data error\n");
! z' o- K% O' R0 o( c) Y# b6 P7 s, f break;* }, i4 D- S9 x( j* M! ^
case 'F':printf("friday\n");break;
; O8 L3 X7 z# ? C+ j1 d4 r0 dcase 'M':printf("monday\n");break;
- |6 f4 l& e2 H1 L6 M Icase 'T':printf("please input second letter\n");) V. P- L5 m$ P. @1 V/ `* v$ K* U
if((letter=getch())=='u'); A6 ?0 N. D# m7 ~% X7 h8 Q5 b
printf("tuesday\n");" D6 P) J5 g7 v+ o8 B" s4 H
else if ((letter=getch())=='h')
' D7 ^9 @2 B- M+ o2 y printf("thursday\n");
$ a% B4 ?; D' \0 N else printf("data error\n");
7 l+ o+ z2 r, q break;+ |: X& A; O9 f5 C0 n
case 'W':printf("wednesday\n");break;/ v2 x7 r6 P: \* X; A
default: printf("data error\n");
7 R1 ?* ^) W/ U0 r* h) j N }
1 h5 p$ B6 J. z N& u. g }
+ A$ ?) V$ E, V; y3 W/ Z: {}
! \# T8 a8 L" b$ I' `. F! I( K==============================================================
) B' B; x% x5 h5 W【程序32】 d0 V5 B6 [1 _, w0 W( x
题目:Press any key to change color, do you want to try it. Please hurry up!
/ a6 s$ o. C J, g' U9 y% r1.程序分析:
5 p) M& _9 ~3 M8 M5 G2.程序源代码:
; ~ }& X5 c# Z+ q5 I( G' E#include Z8 {( ]2 z! C: Y) v: o
void main(void)+ C: ]3 a4 D$ E5 a: z# k+ Y
{
. p/ @% q! a4 j6 r8 L8 M {* A5 w4 mint color;
0 x! P0 h5 k g4 B# R4 D5 Efor (color = 0; color < 8; color++)2 B8 L$ W! I$ ?! H
{ " ]- F7 m& h! v
textbackground(color);/*设置文本的背景颜色*// Z4 h$ x* k8 B, ~
cprintf("This is color %d\r\n", color);& ~- T. i# p0 c& j0 Y
cprintf("Press any key to continue\r\n");( R- o2 D, f% V
getch();/*输入字符看不见*/
`: F' v+ _4 \! K$ k }$ y1 {' g& ] U _" X4 L
}7 m8 m; }% @" C/ l! X' i5 M p9 P
==============================================================
1 Y& H; V& u+ Q5 V) R/ F【程序33】: Z/ k' _9 Y# |# U1 ^6 A1 O
题目:学习gotoxy()与clrscr()函数
5 @: |" ]* F1 V9 W- }5 s7 H9 g1.程序分析:$ Q0 G( T# H$ G3 C) n7 O0 u( _ P
2.程序源代码:
5 b8 X) a ?7 k) {7 Q5 ~1 p" z9 Y#include " j3 t' H/ }0 k2 C& U; G# M: d1 _
void main(void)
* }! F$ e l$ u. ^ X. o{
) [, |/ F* F; mclrscr();/*清屏函数*/: a) c/ n( l2 U6 d1 w+ f
textbackground(2);2 d3 g3 c2 o9 C4 S& a' n6 a; w
gotoxy(1, 5);/*定位函数*/: G# ]& Q) P8 N2 l) s- ]
cprintf("Output at row 5 column 1\n");
$ e: s! @- ]5 j; ]7 D: a1 I4 B0 Jtextbackground(3);
; M! q) @! E1 Q: S3 Tgotoxy(20, 10);
& F d6 x1 N! O( ~/ r6 ncprintf("Output at row 10 column 20\n");' f" a* C/ V7 y4 V. V
}
" y* r2 E% W m& f* j==============================================================4 x/ n) T) D- [9 j! p8 [
【程序34】
% L+ F+ A6 \* x" ?5 ~# ]: I, |: h题目:练习函数调用4 q- Y" k+ l7 l" G% K+ B0 n8 R
1. 程序分析: $ r% X; J; Q% N5 t; S& D4 L" a
2.程序源代码:
# }; ~6 X% M) z# b#include
6 n) u2 K. X) p- v evoid hello_world(void)
. C: W% I! O: t J/ i N& [/ b{
5 j, G% T0 x! u, b/ O' }9 Uprintf("Hello, world!\n");
2 e4 [% W4 x5 H- F7 ~6 N6 P0 o( m) p}( |! S: ^9 ^, C0 |( C3 |
void three_hellos(void)
2 M; }( S" F6 c* q$ Y1 |{
1 }- S: A* @2 P& b3 F2 Qint counter;$ Q! ^1 d3 Y6 E/ s- U5 X
for (counter = 1; counter <= 3; counter++)
9 M2 ~: N' E: o& [, s" a, D7 thello_world();/*调用此函数*/% `: M3 [3 ^2 ^# r3 W8 c
}4 N3 p7 h; T9 n9 T0 G
void main(void)
5 J# n/ ] b, @6 u! u1 l{+ X; f8 O- K. Z. t4 j$ c _
three_hellos();/*调用此函数*/) `. b. W4 e3 @
}7 A$ d, M4 ]9 e2 b/ D) e
==============================================================
( p! h( u" [. }3 ^2 y5 ?【程序35】# A2 O# g+ O& R0 ^( H* B+ ]
题目:文本颜色设置
& w$ s: a9 ^1 T# R8 R7 H5 J1.程序分析:
, u. e( O- t& L- ~2.程序源代码:
& z9 S* E! J8 G* R#include
|% q# v2 M( o" c4 n" i* Evoid main(void)
; ?/ K' u7 E+ s9 Q; ~: Y{3 P; m( x7 v( Y5 `6 W! m, V
int color;
5 M' l* _/ h; c/ ?$ M4 dfor (color = 1; color < 16; color++)
" b4 t" E" k7 {5 G# e0 _ {' r4 |* y# ^% }" G8 K
textcolor(color);/*设置文本颜色*/' I; V. g5 @# n! {2 o
cprintf("This is color %d\r\n", color);
2 G1 {4 s3 D0 [2 q% J h; i6 O }
5 C" m( `& V4 q6 r" L5 Utextcolor(128 + 15);
5 C" Y/ g1 W* ]/ tcprintf("This is blinking\r\n");
3 Z# s' Q0 I5 J, `8 p3 ~}* j( M+ I1 ?, `7 L$ F; G
==============================================================, Z) F5 W8 L; ?* T6 w. ?$ q9 Y% E
【程序36】* T/ S. R7 f2 V, ]/ M2 u0 Z* Z
题目:求100之内的素数 % y9 G9 \+ G8 m
1.程序分析:
f/ P/ P4 S2 ]; V9 p( C. F2.程序源代码:
" m# v; J" K' ^, I- \#include
9 ]9 S" [; F# I#include "math.h"7 U: O5 A' V1 O, f
#define N 1013 E# K ~4 U* l3 b0 U3 ?
main()
( q, b" x' H0 ~{
% S! W5 g. n) _9 Jint i,j,line,a[N];+ q; U( Q/ f+ `0 }, M) N
for(i=2;ifor(i=2;i for(j=i+1;j {
1 t. o7 b% q5 q* F. ` if(a!=0&&a[j]!=0); s6 y0 y5 [% G4 X6 `( n7 h
if(a[j]%a==0)4 s, x; [/ t& ^) W0 e
a[j]=0;}
2 ^1 r( O7 d6 E; t4 Z0 b5 aprintf("\n");, M$ l/ B1 o& [7 A- D: ?4 C; ~
for(i=2,line=0;i{" J1 A* r3 u; ^, V
if(a!=0)! U2 x4 m c* D
{printf("%5d",a);( I9 @# N: q" ~
line++;}' u4 X' p# U3 g: f6 B
if(line==10)
6 {! y) \4 Q6 h* O! G1 \8 P6 U/ G {printf("\n");6 u+ [) I8 H9 ~' ]) Q/ P* ?: y/ d
line=0;}3 D- h2 a. Q6 f& B! b6 s: x
}
! _1 K" ]) _2 ^7 ^" J4 U/ I}
4 x/ G# F/ \- V==============================================================( K: b" {9 |) ~7 A
【程序37】
8 ~$ h. w: t: N1 u9 [- X题目:对10个数进行排序. X- D5 J4 x/ A
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
$ j! ^" @9 L/ I: v/ h3 ? 下次类推,即用第二个元素与后8个进行比较,并进行交换。 ) o. J2 s' S, D c
2.程序源代码:
) }# v# Y) E- [6 w; d#define N 10
- H: A3 H; h: ^4 v1 v7 Hmain()
. ^$ p! u3 I- r7 u{int i,j,min,tem,a[N];8 o4 L4 K. l- p
/*input data*/
3 `; V0 ], T0 ~printf("please input ten num:\n");7 M) }! x( y8 F9 n' @/ Z5 X4 q
for(i=0;i{) T5 Z3 m6 H: Z- Q
printf("a[%d]=",i);
. F9 U* _' S: n5 K3 G5 s: W0 q! Escanf("%d",&a);}' N4 I* f0 l( ]: E
printf("\n");! F3 h8 M; o" ?
for(i=0;iprintf("%5d",a);
/ S+ [: T5 I w' ~printf("\n");' U7 _8 E" [5 P8 O1 c+ E
/*sort ten num*/
1 S" s1 Q8 K! a2 r6 ifor(i=0;i{min=i;2 e- Q3 h: R- O5 s
for(j=i+1;jif(a[min]>a[j]) min=j;
2 ]/ T3 j. y" [5 Y* Ttem=a;, b2 r% Z0 I$ ~5 u
a=a[min];
$ e8 V$ {3 q( @1 D' }a[min]=tem;
" Z# P; t$ f2 N}" p* n& f- t3 e+ @
/*output data*/
- x6 X* |9 o1 b- o: o# r mprintf("After sorted \n");
/ G. Y/ [" [& w) z0 J! ^$ s2 ]for(i=0;iprintf("%5d",a);
$ H6 j$ [3 i& U9 s- J* i}
9 |; g- P$ D/ \! Q4 c, o: X" o==============================================================
% J# u' F2 k0 d: E
/ R; B% m) K! Y0 }2 f
作者: xinmai123 时间: 2017-10-7 16:29
十五字十五字十五字十五字十五字
作者: qq642446015 时间: 2017-10-8 11:09
C==
欢迎光临 机械必威体育网址 (//www.szfco.com/) |
Powered by Discuz! X3.4 |