机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

C语言经典算法100例

[复制链接]
跳转到指定楼层
1#
发表于 2017-9-23 10:57:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序84 ]/ q6 x  _! g2 X2 E# E
题目:输出9*9口诀。 2 O; e( _$ }% ~7 {+ r
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
! B: k+ d$ }, J$ s( G5 O2 Q2.程序源代码:
, ?) |) O$ B7 C#include "stdio.h"   ~# J. P! g  A1 l) G, y/ V  v
main()
- ?& }7 q9 @- J. C; J( k, P{
# {+ B0 j1 q! F1 V* b+ ^) kint i,j,result;
: w, F' u( r2 e2 N. t3 Zprintf("\n"); 5 ]- x. i% i. _# x
for (i=1;i<10;i++) ' P9 B. r- t6 G8 W3 \
{ for(j=1;j<10;j++)
( O2 k8 T! a+ a/ Q: Q9 ?" P{ 8 n; r1 M6 y% s" B6 g- E
result=i*j; - Y( b: D$ D( e- o3 ?" V
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
9 U( R, D7 C3 O* e0 o7 |0 ^}
& r( T- G: C$ k5 ~5 f% kprintf("\n");/*每一行后换行*/ * a$ W/ t# i0 L( r/ B# n! M
}
% g" f5 K) f5 N& Y% A- j7 ]. O} . z& u8 F) @, s+ q8 p2 l
==============================================================
% @" o: z" D8 D5 L, m【程序97 U3 o3 Q7 H2 c" i1 X% J6 n8 @/ R$ P
题目:要求输出国际象棋棋盘。
0 U+ P: m. j; p1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 % }/ D4 Z6 j! V$ J6 R. \
2.程序源代码:
( [3 q1 O8 h$ G0 }% v0 \#include "stdio.h"
; \, v4 M4 x9 W! j. hmain()
$ I. y$ x( ]1 U# `{ ' P/ h; ~9 l6 r+ D& I& x- e
int i,j;
( e& ~2 `1 L! }* w: |for(i=0;i<8;i++)
" h/ x3 d8 m% p& `8 T! f2 {{ : ~) P1 x: J' s$ g5 a: c
for(j=0;j<8;j++)
/ l: G% R% C' q1 g4 m* Gif((i+j)%2==0) ( T+ ^, y4 K1 u# L2 h0 F
printf("%c%c",219,219);
0 W0 X! ^, Q+ m8 H( e& O0 B! xelse ' s+ Y, `2 U$ }3 y5 h5 c
printf(" ");
- B) s& x% e6 |9 a- ~printf("\n");
5 u  K; W3 v4 g* v# K}
1 x( a* f+ G" O' l3 n} 3 v+ y0 S7 d& P( C2 @- I) p
============================================================== 7 ?! `, q9 \* {% {- J; w9 G
【程序10+ y2 k* A" G0 c6 Z2 T
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
5 r" A& X- e& o1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 ! f( d7 |* d, }3 x  }6 W2 x
2.程序源代码: 4 m, X0 D- @/ Y6 Y. B
#include "stdio.h" & P. L" n, M6 Y6 g
main() + o( i, v& `$ ^( \+ H
{ " k1 n- a6 F: i# B' C, ?8 W
int i,j;
* I& ^  b7 W$ _, iprintf("\1\1\n");/*输出两个笑脸*/
8 ^) U1 j  }& T% c; Ifor(i=1;i<11;i++)
$ l( {- q( i. [3 T( {{ " ~6 T+ {+ `9 V  P
for(j=1;j<=i;j++) 0 J4 |) Q4 v, s% J6 i. G+ V" l
printf("%c%c",219,219);
3 b9 i1 ~; o( d6 T! ~2 ~2 Hprintf("\n");
7 \$ |# B0 ^( ^" H: c& t  v8 v}
/ A2 U( H5 c4 T, H" o  s4 d}
% i$ w" G/ t' u9 l  X% l0 H& _! T/ X( [/ ^; w2 w  L4 c! u. l
+ D9 u9 t0 w' z  I, n: a

" M, Z6 D- `3 Q$ Y作者: zhlei81 2005-1-22 11:29 回复此发言
& K1 \  y3 H4 a- h3 S) ^" n  e; D1 o- u( |3 S' p
-------------------------------------------------------------------------------- : o1 U9 `6 e+ Z8 r' ?  ]
/ q  A4 f  e3 Y' x
3 回复:经典C源程序1003 z) {( c7 v2 S. V
【程序11
: Z! l5 A7 ?" H) `# z题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 # |- Q" H: _8 U) |, ]! d) L8 B
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- K8 z& M4 @* i( `* B- _1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
8 |. |1 ], r0 e' o2.程序源代码:
" }# M4 P; N& v! Nmain() 3 |  }6 U( f5 o$ Z
{ 0 f# z: e9 _5 g6 |8 W2 }$ G
long f1,f2;
  j+ G3 F$ s* B5 h' v  ?+ h" @int i;
+ y5 {0 X$ X5 J/ ff1=f2=1;
$ ]# Q7 V; E8 U5 c  O* Jfor(i=1;i<=20;i++) ; ^! k- [$ q5 v7 t8 }
{ printf("%12ld %12ld",f1,f2);
. H) j  Y+ J6 p1 h! @0 tif(i%2==0) printf("\n");/*控制输出,每行四个*/
# A; P7 }5 H- V! Z9 \: S9 \+ yf1=f1+f2; /*前两个月加起来赋值给第三个月*/
2 W8 F7 l( p% Xf2=f1+f2; /*前两个月加起来赋值给第三个月*/
9 l. f$ Z* j5 q9 u9 `) a}
, V! `. V. _3 ~' g% ?/ U} ( V- P) d: b% y
==============================================================
0 J3 Q2 ]7 b& ]【程序12& ?' h1 I+ u/ P6 J" d5 T% l5 U  c
题目:判断101-200之间有多少个素数,并输出所有素数。 ( |7 z, T0 m/ G( F
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 8 z) W* {1 @. M, ~! ^+ x( Y
则表明此数不是素数,反之是素数。 1 N) ~2 h3 \; w% H$ R. ]3 O, W
2.程序源代码:
0 i9 U( c8 V# [% Y0 G#include "math.h"
3 X/ N6 o3 c7 c( \main()
( V0 ~, Z4 F, n; E{
% v) C. U; G! ~int m,i,k,h=0,leap=1;
8 u% r; o$ c0 h$ R: ?, v* A: Zprintf("\n");
, p4 h/ J+ d, M' J# G, kfor(m=101;m<=200;m++)
" N' c+ x7 v' `3 r: F4 ?{ k=sqrt(m+1); : Q' R0 s2 N# N
for(i=2;i<=k;i++)
3 {4 I* q4 K! d' y- Iif(m%i==0)
* D0 Y+ ]) A4 C: j% S# B7 r/ g' ]{leap=0;break;} 1 N8 F' A0 r1 L* Y! }0 S
if(leap) {printf("%-4d",m);h++; 2 L  V, v$ ^- \' C- `7 N2 l+ F
if(h%10==0)
9 X5 m2 X  v8 H5 Rprintf("\n"); ) G( e, P3 G( P  |
} 8 x* C  y' S2 c3 a  ^6 K" `
leap=1; # x: w, K& E) A  x
} + W1 F/ Q( E7 }
printf("\nThe total is %d",h);
9 s' ^; b  Z) d8 Z. @4 ~} 2 |1 h' _" z: H% v$ t8 i+ N
==============================================================
, d& M* P. t% C( Z" `【程序13
6 t$ {; {& @/ ^  B3 w题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 # x8 L/ B* T5 A. M8 c, T
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 " @) }) t" O4 b9 ?, }# I! [' n
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 # i. _* }9 |2 |% B+ Z8 |( v
2.程序源代码: 2 v$ |$ F/ a# X$ R" _6 P& e7 K" S1 ]
main()
7 }0 G7 o+ l" w& ~2 Y{
+ v" b9 \/ `+ r8 U. tint i,j,k,n;
0 c0 B( v2 ?2 \# B( a9 z/ l5 Rprintf("'water flower'number is:"); - f" j- a: m$ ^, F9 m% f0 n, S
for(n=100;n<1000;n++)
+ L1 Y8 `1 g& T% |7 {4 h{ ; m% \2 |/ L% N% m0 r
i=n/100;/*分解出百位*/ : u! H3 E; l* w& a
j=n/10%10;/*分解出十位*/ 1 {# G% [' g- j" d; ^
k=n%10;/*分解出个位*/ 9 Y. X. w) @6 _' k, e4 j/ d; X: _
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
6 m* }+ }/ z4 r- p% t5 C  n{
4 K& z3 y5 }+ w( B4 j3 Zprintf("%-5d",n); - q' B2 u1 m( l7 M& b/ r
} & n% [' I. e9 c6 c9 \- r9 }
} : x' r( r" c+ ~9 C/ T( k* h
printf("\n");
. M1 [: ?) Z4 _  `}
6 ~' t" R% K# M/ d, t, s============================================================== ( a' R' {% J) V0 h. L
【程序14
  Z8 H+ ^- {; A2 q# F! e题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5$ Y3 s, s% K- e' [# h* G( v

* |$ P! C. k, T# R% p$ @# _6 }程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
% N. p: y% @7 L& a+ R5 ?$ e(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
, i' Z5 h( _2 G9 \  Y(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
* [7 P$ L. U2 x/ [* H: H1 p4 h: c重复执行第一步。 % V6 y( P7 ]5 r/ Q" }4 p" \3 }
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
0 p7 I( h7 ]9 w# t' P; T
0 m' W) T# G7 s: B% ]/ n; N$ H2.程序源代码:
9 T. s/ M  q, ^& i+ t3 S6 b/* zheng int is divided yinshu*/ $ `2 ~* C( `8 {. u4 U+ F& B
main()
; [5 Y9 h  W" o. O/ m: s* L{
* F7 k. k' Z+ E& U& P: Zint n,i; ' ^2 m! v/ A+ G- m/ [, d2 r
printf("\nplease input a number:\n"); # b/ W5 U* D, e( y5 A
scanf("%d",&n); / D/ H7 p2 E3 \4 J' ]
printf("%d=",n);
8 Q. ]5 {$ C" k5 u8 r# c& Dfor(i=2;i<=n;i++) 1 z4 ^. m- Y2 B" _, o
{
$ s. \- {  I" y8 w* `while(n!=i) 3 C5 r/ h( _4 F. a5 O2 w. V
{ , T" B; j/ ^3 k8 S  I
if(n%i==0)   n' P& ^6 i, I( l* S9 c# w
{ printf("%d*",i); 2 {7 {* E, n% e2 Y; ^
n=n/i;
2 n. s9 R$ A9 f* c" [/ d}
1 _" [* u+ W) F# Telse & x7 X1 S& \3 |4 b+ ]
break;
4 T- z/ P- X! T} 2 s  a4 P1 G! D! E
} ) A$ ?+ M. Q$ E3 ~' h/ k% d
printf("%d",n);}
: _2 _4 }; T; Q; V
. n# E) F9 [5 m( H; d
回复

使用道具 举报

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 | 只看该作者
好东西
* H9 ]. p: @; `* L, f5 M
回复

使用道具 举报

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-1-11 12:50 , Processed in 0.057085 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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