找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6322|回复: 16

C语言经典算法100例

[复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序85 C& t- G2 i' [9 }& X/ S- F
题目:输出9*9口诀。 % }6 R3 J! j! i7 i) c$ t) @: L8 u% y: I
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。   v1 i9 v; y6 _- f0 z' g/ Y, n
2.程序源代码: 1 p4 m8 s, j) |1 E* [2 p
#include "stdio.h" 6 t% m0 \- W/ {/ Y) z6 ~! s
main()
& f" {: r' T/ |8 E9 \: X7 c3 @* U{ 1 M& Z' v# I' O& q) _# M4 j/ Z
int i,j,result; ( F  h) w7 D5 }. S: Y9 N6 ?$ U
printf("\n");
9 u- }' p- ~5 S3 v  Q0 h7 B% m! \for (i=1;i<10;i++)
8 o; X% J* t1 G' t{ for(j=1;j<10;j++) ! a: B6 f0 U- w1 w; i7 y6 v9 C
{ / r& ?% `% w6 x8 @& E
result=i*j; " B# h& ]& \8 d2 d
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ 7 Q6 S( I* C8 w$ n9 u/ v
} 7 n0 H4 I; I0 h, \& U
printf("\n");/*每一行后换行*/
6 ~/ b' g4 J: E, s; ]} 4 Y7 Y. C) p  g- T, P3 L* I% y9 _* x4 S' G- p
} 5 X/ Z/ h9 x3 S* k1 @
==============================================================
" S! Z* v- p, r& ?9 N7 [. i【程序9. ?2 ~8 s) n' P% D0 f+ F$ ]  }
题目:要求输出国际象棋棋盘。
. Q" N6 _& V8 k1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 . f2 u6 i* v( j) }* [& c/ H; S
2.程序源代码: % B( d2 f& I/ \; _. u( X* a
#include "stdio.h"
8 j. G$ m9 V" Zmain()
7 Z' E. I( ]2 w{
0 ^+ U3 w4 a, Z; |5 M! f; S& Zint i,j;
+ S" M- d& x  ofor(i=0;i<8;i++)   f+ G# a' M  i' G# x$ L( V
{ + j- h& p( \/ O3 F
for(j=0;j<8;j++) , b0 D2 \4 v3 z1 H4 Y9 a
if((i+j)%2==0)
% n9 H$ {" K) r  ]" l: k' lprintf("%c%c",219,219); 3 `( p! f5 }" z% b
else & e( D3 @, @1 f" |0 O2 B; W
printf(" "); : a2 v4 Y4 s# j3 J, T
printf("\n"); 6 a* t1 U& D0 d8 a3 l$ w2 A$ j
}
2 ^2 d1 ~; F( U% R- ^} $ {& A& z9 F' s- }2 b. p& s6 W2 H
==============================================================
( X5 {9 N: d; T( A% ^. ^. t9 [【程序102 s7 T8 h. Q1 d3 {
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 4 u7 P' Z/ m: e+ Q2 [
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
$ h) |3 U; L( ?  E2.程序源代码: 6 F3 [0 C4 m9 L- |/ e$ a; r
#include "stdio.h"
3 g, B2 ~: I5 {' }% O$ K" _4 smain()
, {' u4 o: ]. F: T1 [{
' l$ t# E* m- M- [int i,j; : o5 _8 ^  p9 Q6 Z- R
printf("\1\1\n");/*输出两个笑脸*/
! L4 A3 ?4 q7 ?; N( I, efor(i=1;i<11;i++) 5 d- o& z; L% y2 K7 s+ }3 f
{ 4 A2 u! l# _( R, g3 X6 A" v
for(j=1;j<=i;j++)
3 o5 _  u' C3 \  M. }& {: M; l' Uprintf("%c%c",219,219);
# n$ o$ @4 Z% `, oprintf("\n"); 0 s6 R4 i7 C6 c
} 5 b- j$ ?6 n$ R" ~$ n
} & J6 r. Q& G: [

1 i: V! O: W3 z/ O5 U2 t: U# C6 i9 G4 `- F& @8 B

/ P9 g: a& w# ~  U' h  I' A* h4 U作者: zhlei81 2005-1-22 11:29 回复此发言 2 }2 c2 [* d. _1 ~% \) A

1 W8 j' e( E# j5 i5 N+ ]# o--------------------------------------------------------------------------------
! s4 |8 y: E3 p0 z8 p: C/ b
5 R- o9 v  ~) ?& }% f- p3 回复:经典C源程序100
% F- ?* t, y* ^- W1 W【程序11
/ O4 s) E# R* J1 F% [1 _题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 8 [0 q& `0 p. Y4 @4 A
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 8 H1 G' I/ m" w2 C  G  _$ |* v4 N5 S* ~* H! D
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 9 ~9 R+ e. z. o
2.程序源代码: ' C: b; F# C- f( Y3 D/ p! t" i7 q
main() 9 Z) x8 e' q0 t4 {
{
( ^/ b9 B, [8 Y: n8 b* ]' Qlong f1,f2; & f9 K/ t' X0 m! ?, n
int i; ; S/ U( Y  i. ^. O; a' J4 i4 A
f1=f2=1;
* e( i$ ^. b" Sfor(i=1;i<=20;i++) * i9 L" {0 B6 G2 c( ~
{ printf("%12ld %12ld",f1,f2); . W3 O% K- L% O" E% H% y$ K: d
if(i%2==0) printf("\n");/*控制输出,每行四个*/
: {0 u5 l6 w) [6 H8 }f1=f1+f2; /*前两个月加起来赋值给第三个月*/
" I8 e0 |4 ?' R% {! gf2=f1+f2; /*前两个月加起来赋值给第三个月*/ . l. a( d' l0 J9 `2 I: y1 \9 {9 L
}
3 f* S2 {$ A. O} " {: |* k& F0 d4 E- N9 n8 c
==============================================================
9 m; W, k, @: W4 k6 Q2 _7 k【程序12
5 u( k. r( v2 Q' w; w% @题目:判断101-200之间有多少个素数,并输出所有素数。 $ |# {# M0 ]5 ^# k( r3 e: q4 J2 r8 G2 N! v
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 3 b9 \. X; [. n7 |5 R; J% ~
则表明此数不是素数,反之是素数。 / B. b2 T! A2 q
2.程序源代码:
, J8 C; p, U3 r% t% `#include "math.h"
" H  z$ O' g" ]# Dmain() 7 X+ X1 H) w5 f
{ 3 r% ]5 u( D9 b* g
int m,i,k,h=0,leap=1;
' B& T6 u) |9 P: `printf("\n");
1 z6 }6 X; D/ z2 m2 f; H" Ufor(m=101;m<=200;m++)
- M: l, g) t" }  t0 M; }% e6 k{ k=sqrt(m+1);
7 n5 E. e- N! D, H7 Mfor(i=2;i<=k;i++)
+ r: I8 g8 G/ H# _; G% K  R6 ~if(m%i==0)
8 R8 T' Y/ G& O; Y0 ]) X  d{leap=0;break;}
3 o& b8 r6 S2 ]+ Xif(leap) {printf("%-4d",m);h++;
0 z8 R% e1 I3 J' ~/ I+ J! S! Hif(h%10==0) ' l. ]( j7 J9 G
printf("\n");
+ {0 W; r6 d1 n! u0 S! T+ Z5 w0 U} 7 r: W. A& a& N
leap=1; ( q6 @9 F$ k& u1 L& q- ?0 k3 M
} 1 X6 B7 o) Z$ l+ p: I! O
printf("\nThe total is %d",h); 9 I5 N. o! H3 A$ t7 |
}
- I; b) D  ~. h8 R! h  T; g% R==============================================================
+ r, p3 L. i8 i+ {9 p( I【程序13
+ g0 o' q$ i4 a4 H% z( m题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 ' J+ [) s8 ~5 [
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
6 B: [! N- s; l& l1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
9 r4 a- v; u, i- [: \2.程序源代码: + ~8 u" `+ h  L
main()
, Y( ]( U. _( b9 S. |{ 9 D. k% A; j8 U1 c% L! w
int i,j,k,n; / I( I' Z7 _* W4 r/ g
printf("'water flower'number is:"); ; J9 [/ a8 v3 h
for(n=100;n<1000;n++) $ W  \6 ~) W4 Z( P; T6 X
{ * \3 `) @& T+ q) c, |
i=n/100;/*分解出百位*/ 3 @2 k4 |+ b8 q& K4 i% M- K
j=n/10%10;/*分解出十位*/ 8 x1 f$ D1 `2 f& G
k=n%10;/*分解出个位*/
  l7 h0 b3 G/ }) I7 mif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) + I$ j, J# q7 `  H
{ 3 b1 f" E% r' t; q* n, C# b
printf("%-5d",n); . Y& W9 @1 w/ W. A& U
}
0 p  @5 V) X5 ^; g! r9 l, B} + D- R3 v8 V! i4 j# A# G1 K
printf("\n");
+ [+ ~. F6 j, D1 O+ \& X9 K: Z}
! T% t0 d+ F% H6 w==============================================================
! ]# n# B! n# i* B. H【程序145 J7 ~- N/ m7 B
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
# o5 h; ^: f7 {+ }+ v8 F
1 V5 P# y0 I1 l程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
* k3 h# Y) k' L(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
/ i6 D/ n. t# y; j. v3 O4 c4 V(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
6 A9 |) ]% u6 D7 D& b8 t重复执行第一步。 / Y6 L4 _1 Y5 o1 L! p9 K0 v
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 : G- l; g, |. X4 L' |' x
% `7 ]& C: U- A  W/ X
2.程序源代码:
' k: i( Q$ t8 Y7 |% b/* zheng int is divided yinshu*/
& s9 y% _8 F$ P0 vmain()
) d* c9 A/ v) p, j( H8 I{ 5 V0 @  A& o& j( W  y3 M6 |- R% z. B
int n,i; + q2 ^3 ~* l* @7 k  ], J# h8 K  [
printf("\nplease input a number:\n");
$ E1 t. O  x: K6 G6 rscanf("%d",&n); 7 C2 X( H$ O$ c
printf("%d=",n);
/ |0 y$ P- i5 Z9 K, J) \5 M) bfor(i=2;i<=n;i++)
; X1 J; w1 j/ N9 K, u{
0 B& X; N# Y( c* j0 d8 w  D& dwhile(n!=i)
1 k5 X* k& e* D/ ~7 l{
) P6 M) W, e- U" |8 oif(n%i==0) 6 h3 ~# v8 t; ~! y
{ printf("%d*",i); 1 j$ \: X1 q7 q
n=n/i; ( h9 j- v, r3 m0 |5 o9 o; \; Y
}   H4 Z- Z$ S; a2 ^2 @
else % h: F' q5 X/ b; c# b4 o( y
break;
( N9 \& S+ ]/ r* U( j0 `}
: L% K6 Y' N1 v# }7 l$ ]/ y; n} . {9 y% H4 r0 C& H9 @" l
printf("%d",n);}
2 ^: k9 w; }3 Y% N) `

0 i: w, h( y2 N- l, S* g) e
回复

使用道具 举报

发表于 2017-9-23 11:47:18 | 显示全部楼层
看来也并不是那么难。不过饭还是大家分着吃。
发表于 2017-9-23 12:52:40 | 显示全部楼层
赶脚很牛掰的样子啊,机械人完全看不懂
发表于 2017-9-23 16:14:55 | 显示全部楼层
收藏了,楼主不会是在学程序开发吧。
发表于 2017-9-25 17:47:49 | 显示全部楼层
不是100例吗?
发表于 2017-10-9 21:20:33 | 显示全部楼层
c语言的基本应用挺好的
发表于 2017-11-23 15:37:41 | 显示全部楼层
好东西7 q( V1 |! \. ^. E: [3 h
回复

使用道具 举报

发表于 2018-2-28 13:51:49 | 显示全部楼层
在学校学习过这种
发表于 2018-2-28 16:57:19 | 显示全部楼层
看见程序就头大
发表于 2018-3-4 22:16:13 | 显示全部楼层
你骗人,我数了,不到100例,把剩下的吐出来,不过还是收藏了,虽然简单,但是基础和根本。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-6-19 10:51 , Processed in 0.061928 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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