机械必威体育网址

标题: C语言经典算法100例 [打印本页]

作者: tainqing    时间: 2017-9-23 10:57
标题: C语言经典算法100例
【程序8
( `, Z5 |7 g7 \5 n题目:输出9*9口诀。 . M' e) N5 r  P3 Q2 z# W$ O( \6 A3 _
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
- r! n0 x6 @; L  V7 j2.程序源代码:
" u2 |  U: b$ ?3 T& I7 e#include "stdio.h"
4 C5 r1 _) P: }" i0 o( cmain() ( C; p3 b4 V1 p. V- l: o
{ % e, S% W) m$ h
int i,j,result; $ t" W7 b+ ^8 w% {( _' Y# s
printf("\n");
. T7 t- U2 c! J$ ]for (i=1;i<10;i++) ! `! |" H2 p& Z0 Y7 h* }- k
{ for(j=1;j<10;j++)
8 h5 H) g/ v# N) O# ?{
+ n" o; d+ e, rresult=i*j;
3 W7 z* A0 O3 W6 {, V( Yprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
$ ]: C1 }" A8 b& L. Q* D2 k} 4 t2 a9 h. p9 H5 L
printf("\n");/*每一行后换行*/
" p) z: N  n# X2 `7 A% U2 N} - t5 u: l9 T* ^; W5 ~, o. X: Y
}
( c9 |* Q/ i: v" L, V, Q. u0 k============================================================== " ~3 e6 E9 ^' q8 G2 G7 _* M0 S  {
【程序92 N" Y- P+ k* L; B8 {" L" b
题目:要求输出国际象棋棋盘。 . u4 ~1 K( R$ [; M( }
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
, u$ U0 c; n6 l- l4 A8 c2.程序源代码:
# y1 X+ W, x& V#include "stdio.h"
/ E* F4 B( T. z$ H" bmain() ) y* ?- l* d9 P7 b# N+ u
{ % A# V- O! x, S2 {) W
int i,j; ) N, ^+ s8 }0 i
for(i=0;i<8;i++) - O8 F, g9 \2 E. I) x
{ # G2 d" A2 h/ G$ c# W8 o
for(j=0;j<8;j++)
! [- j" S( n0 }if((i+j)%2==0) 6 @9 v/ Q, a' @# p) a* |
printf("%c%c",219,219); ( a6 @7 R- a! L
else
- Y4 R+ k8 q; h/ Qprintf(" ");
$ ^: `: O3 n! G3 K6 @* aprintf("\n");
6 H# C! L/ I& a0 W8 {6 q& d}
3 s: f' ?5 f- x& t( e! I6 s/ N1 _} ( v: H: D0 T6 ?
==============================================================
. Q2 `1 {0 I* k' Z, i& Q3 x7 v$ \【程序10
/ f. A2 o2 }+ y  ?& X题目:打印楼梯,同时在楼梯上方打印两个笑脸。
$ c9 C7 k/ r3 ~2 Z1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
% D" e8 E) {" R# f2.程序源代码:
3 G! Q- p9 e  Z) h#include "stdio.h"
1 T2 Y/ q  ?% U7 `% _main() 0 h$ p0 f( x5 @  G& G
{ 9 N: [- X  k3 a* U; P- K
int i,j;
6 t5 m& c+ o, b/ @- W& [! uprintf("\1\1\n");/*输出两个笑脸*/ " r+ a; @- n: k
for(i=1;i<11;i++)
3 a) U9 ?# _; q4 s2 T{ " X" Z* z  S/ D! C
for(j=1;j<=i;j++)
# e  S7 \% B" D! x6 B- l# B. Jprintf("%c%c",219,219);
$ X1 c4 F, B* d% M& }) h/ h5 F# \printf("\n");
3 }! k  t4 V* ~) W& u}
/ ~; T& B5 u9 {, \}
; {' Z2 I( T# C4 l" I4 s' p) j( @. P) J
, [3 K% y/ Y8 t
; a" F$ t$ k" F8 ^: A
作者: zhlei81 2005-1-22 11:29 回复此发言 ! r6 R5 N, X4 V

" S2 @4 `1 [1 O% c9 \--------------------------------------------------------------------------------
+ _' X4 F3 N  z; `$ h5 K
! {% {% l& A, z0 S* g; S3 回复:经典C源程序1003 v* f& i/ v  G/ S' @! f' F
【程序11* U( @* f# b% ^
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 7 O2 Q! @- Q% |9 i, V: [" m: }
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1 |, {* a. X8 R  j
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... ! }! w% R) Z8 R
2.程序源代码:
  k- H+ M1 G0 P; f+ Y0 X5 p* ?+ cmain() . [9 X: f9 {* y6 M. `
{ 3 `* [+ `$ o8 R; ^% q: B+ n7 |0 l
long f1,f2; ) W2 Y9 I: x) i! V7 ?0 Z
int i; + L+ @5 l. D0 y# P
f1=f2=1; 5 v2 m. Y5 f4 w9 s, q1 _  m3 {5 ~
for(i=1;i<=20;i++)
& m7 D  O( W- j{ printf("%12ld %12ld",f1,f2); + h- ~: H9 o  H3 t8 K' ]
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 7 b! w7 T' V: a+ e: W- `
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ : B% w# R7 c, T7 [9 y: U: ]
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
: b/ n2 V3 G9 n$ k$ U# b/ z" _$ |} 9 @$ `% R& C, O9 |9 j8 c4 p
}
) G/ H- b( W) ]0 i/ O& B* V==============================================================
% Q9 L4 v. W! U( G8 Y  p! a' w) o【程序12
/ D5 U2 ^' }1 c& Q; T2 D: h题目:判断101-200之间有多少个素数,并输出所有素数。 4 N( d6 X% a, u$ A4 c
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
6 v+ c, F) v/ X! U0 ~: a0 u7 Y则表明此数不是素数,反之是素数。
) P1 _9 W3 m0 i/ F, A6 U. s2.程序源代码:
6 v3 Z+ }4 ]" e2 [#include "math.h" - v" L) u4 y1 U4 I/ w
main() 5 `) M1 e  P& [6 j" ~: ]9 o
{ , R  u# I$ T1 k) R6 A. w
int m,i,k,h=0,leap=1; 7 n0 x2 P* A: G' q9 W, v8 X
printf("\n");
8 @3 R# v: H6 }for(m=101;m<=200;m++) ( R* g" y9 E! w1 G0 y+ Y
{ k=sqrt(m+1);
& i! Z7 f- l* G5 @$ g. {! {for(i=2;i<=k;i++) " u7 }: V+ E  e
if(m%i==0) 7 A  @: N3 O3 C: Q. L* ]4 m
{leap=0;break;}
& Z, l  Z8 Q' ^- g0 z+ z) Yif(leap) {printf("%-4d",m);h++; 1 E9 x2 ?) A* h
if(h%10==0)
; X0 \5 y- C8 S) o3 Q; K# Jprintf("\n"); + o  Q- w/ Z, b, r
}
( U" H! x  r" B# g5 [leap=1;
) E% f: B* [1 V}
$ E$ x2 m! O4 m9 I( ]- Uprintf("\nThe total is %d",h); # {' h! {/ x; X4 F4 F& b+ R0 ^5 N
}
9 N9 }6 J4 p0 ~" Q: k============================================================== * W& B1 ?1 [5 e. S
【程序13
$ I; r( ^  I( M题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 0 B4 _* a. e' e- y
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 9 t6 n6 e$ O  q3 w& ]
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
% i7 ?& |+ m+ |2 p( N2.程序源代码: 7 a- c- C: Y+ m1 B7 W
main()   H! p% q/ w- ^( H! t
{
2 t. F, J# l0 C! pint i,j,k,n;
" D( u2 d( G4 e) U$ i4 mprintf("'water flower'number is:");
- ~& u, {; N- V# lfor(n=100;n<1000;n++) & f5 V% R: |# ~2 T/ N7 Q* b
{
$ [4 S/ B5 R9 N+ Z) mi=n/100;/*分解出百位*/
% I4 L, @! o$ p, _- |j=n/10%10;/*分解出十位*/
$ M# P" }/ @3 ?( U3 I9 }k=n%10;/*分解出个位*/ ( c4 _) p) W  l. x* i
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) , A. z9 [: O0 o2 X3 s' n, Q
{
+ x, J& Y1 L7 u$ P! Q! y) |printf("%-5d",n); - x2 m2 M' r: K, C. I
}
# a9 D) y( r0 l% \8 l" I} - m+ f/ N  S0 R3 n6 \) q+ j
printf("\n");
7 a, v; X: D- \) b( `+ Z3 H} 8 N/ g$ n6 R* \  _/ t
============================================================== " S5 t& v$ \$ r2 O# x3 g" ^5 V
【程序14
) p1 [' A$ F# }$ \2 O- O; y! j题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
& R6 a/ e& u5 |% d) v6 T
" `, m# Z0 m5 d' B2 o6 U程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: . q# D% {- M1 p# I; M8 V) J& E  C
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 3 F+ U6 h" g2 x) ^" U
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
) u5 G2 E3 z6 p/ p重复执行第一步。 1 Q8 U3 R' u  n1 Q
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
2 r( g7 M' h1 e# i; C9 p$ c+ m' e9 u" K) D
2.程序源代码: ; Q( ~! X( }5 o
/* zheng int is divided yinshu*/ + m2 a% A' A5 g. J
main()
) O0 o5 {) f! q$ l, u# k{ & z7 X3 L0 F+ p! X& F
int n,i;
0 Z' H5 W4 r) q4 o( F. }8 z+ nprintf("\nplease input a number:\n"); " G! i1 C% d; f: C
scanf("%d",&n);
) ^' ?" A% d. y/ |; Z! r9 Mprintf("%d=",n);
: o+ U: Q, ]! h/ z, tfor(i=2;i<=n;i++) 5 x5 o* n2 }! @6 v; F
{
% }' g( B, L2 l) Xwhile(n!=i)
% m4 D6 a. F# H: ~$ |& C& }4 m{
, B# }& G. @; @# A' Y. Xif(n%i==0)
2 @9 k& j- F4 U& ~4 c{ printf("%d*",i); * ~/ M, C# U' e; Y
n=n/i; 8 r+ k* P5 M; {1 E: @( h8 [  f
} ' Q+ K) y- _* h
else , {# c" J2 z5 d5 @) ]5 k
break; , y  i) A$ q8 B- ~
} 5 V; B8 V! a4 b1 {1 m
} / ~; ~6 V# X+ [! }! y
printf("%d",n);}
! T9 x* @) d5 _$ J5 s; @$ W. b( a$ \0 L
4 _7 W7 r" }4 ]

作者: 面壁深功    时间: 2017-9-23 11:47
看来也并不是那么难。不过饭还是大家分着吃。
作者: xiaobing86203    时间: 2017-9-23 12:52
赶脚很牛掰的样子啊,机械人完全看不懂
作者: 未来第一站    时间: 2017-9-23 16:14
收藏了,楼主不会是在学程序开发吧。
作者: 华2017    时间: 2017-9-25 17:47
不是100例吗?
作者: danxiaogui2017    时间: 2017-10-9 21:20
c语言的基本应用挺好的
作者: 675452577    时间: 2017-11-23 15:37
好东西& \8 u. F  O9 [3 e

作者: 坚如磐石    时间: 2018-2-28 13:51
在学校学习过这种
作者: 坦克世界之王    时间: 2018-2-28 16:57
看见程序就头大
作者: 411835728    时间: 2018-3-4 22:16
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
作者: UNCLESAM1998    时间: 2018-7-26 10:47
hen shi yong xiexie
作者: 912212596    时间: 2018-8-22 15:36
基础编程,,楼主发这个帖子想干嘛
作者: Lynn_S0yDy    时间: 2018-8-23 15:51
不够100个啊
作者: Lynn_S0yDy    时间: 2018-8-23 15:54
不错,支持
作者: mengfeit    时间: 2019-12-22 11:54
感觉好难呀,做机械的想学编程
作者: 井店    时间: 2019-12-27 18:18
基础哇!
作者: 田爽123    时间: 2020-1-2 16:22
就这么一丢丢么




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4