机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 5920|回复: 16
打印 上一主题 下一主题

C语言经典算法100例

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-23 10:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序8
" t6 H" U& O8 P9 a& v7 Q题目:输出9*9口诀。
! s! `5 T' L( ~2 F# h4 }6 W9 L1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
; ~8 h5 k9 s2 j2 ~0 S2.程序源代码: 8 V- z' o) K$ ?6 J. l- q
#include "stdio.h" & W1 D2 Z( e  D( B
main() 3 ^% _7 |; E4 T6 U5 _( {* ~
{
& |* r4 u- F; Gint i,j,result;
' F; o9 l  ?2 A& bprintf("\n"); 6 r# Q6 H% p- C, g" I
for (i=1;i<10;i++)   M$ U" w, ?0 y1 }, i" T  B7 j) V, v
{ for(j=1;j<10;j++)
, v( L6 [0 E( w1 ?1 q4 R& g{ 1 ]: T  ~. \6 e% S; ^, t
result=i*j; 9 W8 i+ _  K- b) F& N) R' Y% @, [
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ * |: i/ D3 P( @1 g- l% H
}
4 g$ i4 \/ L6 q0 e  w: i! C7 y9 Kprintf("\n");/*每一行后换行*/   X3 q5 t5 e4 t3 y4 a8 k+ s- k
}
& Z5 ?; c# I) @6 j}
; e: D& ?/ j( i; b- j" ]+ N$ X& X1 ^==============================================================
( N. S' m) ^7 J, J0 b& M【程序9
  u1 z; E; Q: w( u# S2 y4 Y题目:要求输出国际象棋棋盘。
/ I$ M, O" e: p" \* l1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 # I# f' B5 T1 T
2.程序源代码: * w* @% r% _+ |/ M1 ?; J7 l
#include "stdio.h" 8 e7 P/ H4 x) \9 S% U
main()
9 o4 z% o- o; c0 B( H{
! h2 F3 W8 c8 Q8 Q% `! sint i,j; * I: s  M0 g/ |
for(i=0;i<8;i++) 1 h7 f: |6 w% U0 H
{
7 k2 H* d, [2 p+ F7 Qfor(j=0;j<8;j++) 4 R. e. E  g& U! `  R
if((i+j)%2==0) * T+ {- Q+ q# |) ?
printf("%c%c",219,219);
0 m* r8 i1 F3 H0 V  |else 8 L0 \; _* E0 L8 Z6 V: D  V
printf(" ");
3 Z! ?4 A' s! n3 `6 ]printf("\n"); + Y, b& p1 k) e; n3 b. ~
}
) m& s, J5 S# i7 z  B} ! v0 c  `, a6 ]' U' L5 w; R) ]
==============================================================
& M5 }/ M/ \( {( F) t1 U2 {【程序10
  X9 H9 f7 z- @7 }4 B0 E/ d6 P; b题目:打印楼梯,同时在楼梯上方打印两个笑脸。 ( P5 P: i5 D5 _- A. W! k
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
6 ], c( {: o! L  P0 s2.程序源代码: ; B( [( n2 c( S" d8 x5 h: U
#include "stdio.h"
6 \2 N' ~. n5 C, H; ~. ymain()
* `) z+ _, G- X{
( p! g: r+ i1 f6 z$ w5 B. }9 c* R& cint i,j; ; z4 w8 [2 \9 O( J0 K
printf("\1\1\n");/*输出两个笑脸*/ / |7 u2 U1 r" t+ r
for(i=1;i<11;i++) ! m' N0 a! [/ y( X: {* I
{ 1 t. Q: ]+ z/ U! M. g! n3 N9 E
for(j=1;j<=i;j++)
0 B% @" u" s" X# U4 u' {printf("%c%c",219,219); / l9 |7 B- C' u& H8 P8 ]
printf("\n");
; s$ }3 v( x5 T' T6 e! X} . z# r" L  ?0 @
} 1 p) s0 |* J! c# n* Z

, T' x6 d1 z$ K7 F: M
" [6 j; j. T: i. _
' X" c0 A2 u- f1 @0 W  t8 n3 |作者: zhlei81 2005-1-22 11:29 回复此发言 - z, A% f- e- G0 K

4 C  S! }+ m0 j, H, ?2 Q) E--------------------------------------------------------------------------------
" X3 p0 D# [5 o5 K+ L+ O! V9 @6 a% d- G
3 回复:经典C源程序100- }, s( }/ |- S, z# S% |
【程序11
) J& U3 Q0 B1 A2 @: T! g题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 4 g+ G/ Z8 F3 N+ j
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
: k, j$ ?' \. k2 X% E. ?& L1 m. O1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... % w/ j9 {  o, g
2.程序源代码:
6 Z) \% F8 Z4 b( amain() ) Y' c' ^" ?1 e: }
{ . J# w" \, ^- t$ A! f. b; B
long f1,f2;
$ A; ?) _/ t* v  O. ?8 R6 uint i; ( c' }5 b1 O% {( f7 E7 A
f1=f2=1; ' x7 _; i, l$ M% s: B$ \2 ?
for(i=1;i<=20;i++) . o# d2 _# h; P8 u7 k9 B
{ printf("%12ld %12ld",f1,f2); ! }% k9 d+ O( y( ~
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 6 D& J: U2 L% K* L" ]& Q3 g
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ $ l3 f8 i* q7 `# G% U2 I6 I+ Y
f2=f1+f2; /*前两个月加起来赋值给第三个月*/ ) W7 M+ B; h3 b2 h
} * E" e7 k( Y0 v4 J2 j- f
}
, F% g, u) Q! J. K============================================================== 6 Q/ \" D/ @: j
【程序124 L/ `+ L5 L: \4 Y* R! o
题目:判断101-200之间有多少个素数,并输出所有素数。
6 N% [- i! i3 ?0 j; t' [1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 8 ^9 g3 y0 k. y7 }: S
则表明此数不是素数,反之是素数。
# M3 u5 {8 \; Z8 t% {1 X7 p  E2.程序源代码:
. w7 d9 T; B5 E0 `#include "math.h"   C+ Z9 u0 O. G8 _- v+ ]. o2 I
main() 4 p/ n, U9 q: V$ u  B/ q+ ]
{
- Q5 o7 h3 J5 z- Q3 Nint m,i,k,h=0,leap=1;
- w: k3 j7 P3 C& S; {7 Eprintf("\n"); ! ]2 I: a- A9 z8 y3 Y: A$ M
for(m=101;m<=200;m++)
# |5 q9 x3 ]2 u{ k=sqrt(m+1);
3 L% d6 a- L+ Yfor(i=2;i<=k;i++)
; Q8 u7 N: I/ e- V6 J( Sif(m%i==0)
! Q/ y* d3 g; H  D) z+ f{leap=0;break;} 1 i& e2 s" D1 Q4 X1 D+ z
if(leap) {printf("%-4d",m);h++;
7 V8 m7 e; S$ ]% b" T; b' L' Kif(h%10==0) + q. j- Q0 R) D/ A0 {
printf("\n");
' J& L7 c( V0 i+ e}
1 a8 d$ d+ ~6 j6 C1 d8 r. Lleap=1; & k5 n& N0 R: _8 H+ o5 I
} ! T: O9 ^& Y& _  i# U4 V6 u
printf("\nThe total is %d",h);
0 t# {* h  s$ J2 z}
  A( G) A3 u1 B2 _7 _==============================================================
& u, E/ E2 R6 e: B, h: J' i【程序13
6 S* h& V" U$ X" A. L题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
% A+ N  I" j' _3 x本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 0 @0 k/ w# @! P5 r) p
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
# i( U3 A" ^$ J1 Q/ C) E  C. \% a2.程序源代码: 8 d8 r6 L% U1 }1 |( X5 m2 P+ y4 e  f
main() : I9 l$ y/ ~' P. Y% {0 P
{ " S! M6 ?- S# D
int i,j,k,n; 1 o) J( t. N, P  }; x& {
printf("'water flower'number is:"); 7 [2 x+ a* Q9 e  o5 X& \  N
for(n=100;n<1000;n++)
7 Y6 E% u# g/ C4 j' S7 K4 S{ ( t8 F6 f: j8 `. Y6 d, ^0 o
i=n/100;/*分解出百位*/
* Y/ _& ?, z% @8 n+ d; f8 q8 R2 h  sj=n/10%10;/*分解出十位*/ - d8 T% E; W0 b8 n
k=n%10;/*分解出个位*/
* v* X8 U' c& C% |/ @. ?if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) & y6 R# f! g4 T3 X* J& `
{
$ H5 W, G& x% y8 j) }8 c: N  _printf("%-5d",n); ( l- K( Y( Q% v/ D- T2 u
}
: O; n5 t9 N. |1 r  d: A}
, }+ z  ^* _7 ^  @- m) p4 }- Wprintf("\n"); 5 i) T5 ?3 n$ y' L8 u& R7 S) c# V
}
  C5 p) M& @7 `% t, h' X- X============================================================== 5 _+ j/ [3 e- ^
【程序14
. N+ w& C" l: x2 N3 g( X/ c题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*59 K4 c1 t$ c, R/ c
. j, e( Y( m: m& `  q
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: + W: ]$ D4 i4 E) M! N
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 ; \: o" S# y3 O6 y+ t" b  r
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
& q' q$ O& @4 Q& n: W1 |) M重复执行第一步。
1 E. u  O  n7 j# d(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。   x$ H( G- D% m; O1 @+ Z% s
$ O, l9 c, a7 \; j- ^+ v8 E
2.程序源代码: & `; \/ d. e6 T* c; _$ m0 [+ _
/* zheng int is divided yinshu*/
9 m3 r8 s5 g( Y8 x5 jmain()
7 u2 v* J6 B+ C" z% B( A{ - \) s  o/ W& j, s8 V" U  Y
int n,i;
+ O+ Y! _$ j/ fprintf("\nplease input a number:\n");
1 |1 z; q3 G2 R$ e% Cscanf("%d",&n);
) g" ?- z' i2 N3 pprintf("%d=",n);
" H. C* W5 a8 w/ ?- [, m; c' |9 Pfor(i=2;i<=n;i++)
, b0 |1 \8 X" i{ + i+ @2 l( i1 W4 Q: u( B5 N  o
while(n!=i)
/ l8 f; l( t& H$ i+ w{ # S1 [4 {1 w; q# Z
if(n%i==0) ( I" R, U$ u/ b1 S0 X1 u6 R9 R
{ printf("%d*",i); : A4 j6 k' I8 c  Q0 ~% {  R: D
n=n/i;
0 n& e2 @! A/ S% Y  Z& G}
9 v  j" E4 w. o$ y/ B  kelse
( V' Q: K8 o, b) R' j$ fbreak;
+ Q* v6 `8 K2 y) R" M5 X}
4 j* ?& a; S/ l( z  l2 z}   d3 ^6 `# J$ |
printf("%d",n);} 2 g% ~; u+ w! P4 O2 d6 F

9 G& N* s7 g  c3 X
回复

使用道具 举报

2#
发表于 2017-9-23 11:47:18 | 只看该作者
看来也并不是那么难。不过饭还是大家分着吃。
回复 支持 反对

使用道具 举报

3#
发表于 2017-9-23 12:52:40 | 只看该作者
赶脚很牛掰的样子啊,机械人完全看不懂
回复 支持 反对

使用道具 举报

4#
发表于 2017-9-23 16:14:55 | 只看该作者
收藏了,楼主不会是在学程序开发吧。
回复 支持 反对

使用道具 举报

5#
发表于 2017-9-25 17:47:49 | 只看该作者
不是100例吗?
回复 支持 反对

使用道具 举报

6#
发表于 2017-10-9 21:20:33 | 只看该作者
c语言的基本应用挺好的
回复 支持 反对

使用道具 举报

7#
发表于 2017-11-23 15:37:41 | 只看该作者
好东西
2 d2 k7 g0 Q# n0 E. D$ r! j: N" B  G
回复

使用道具 举报

8#
发表于 2018-2-28 13:51:49 | 只看该作者
在学校学习过这种
回复 支持 反对

使用道具 举报

9#
发表于 2018-2-28 16:57:19 | 只看该作者
看见程序就头大
回复 支持 反对

使用道具 举报

10#
发表于 2018-3-4 22:16:13 | 只看该作者
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-2-19 06:28 , Processed in 0.063456 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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