找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6381|回复: 16

C语言经典算法100例

[复制链接]
发表于 2017-9-23 10:57:34 | 显示全部楼层 |阅读模式
【程序8# M  B- k3 S1 v, o9 A! @
题目:输出9*9口诀。 5 s: i1 H' s+ N' C3 ^
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 * E$ C, y' T1 c7 }4 B. E: j- a
2.程序源代码: 7 N6 ]* t/ X. x! e
#include "stdio.h" 1 X; L& Q2 ~: O# I
main() % X9 P: A4 _9 `( a6 c: H1 y" z' f
{ ) I; B7 y- c3 ?, i7 y+ E: U
int i,j,result;
# N1 Y/ s* Q/ |5 |printf("\n"); % p3 y1 @* O# X/ ]
for (i=1;i<10;i++)
) S& C4 ~7 q% ?{ for(j=1;j<10;j++) ; i' c! ^: l. V* d( l0 T) n
{
& f4 g1 _, k4 O* B* ]8 {result=i*j; ; h1 e, G, l/ S$ z. w
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
+ y6 w/ p  e) ^" |" v% N}
' a2 v& A' E$ m' S) Bprintf("\n");/*每一行后换行*/
' Q' c/ Z( @# X4 R' w( b} 7 U: q$ r) [9 Y% H0 j% q" o7 ~& ?
} 7 N8 c. m  [+ i
==============================================================
& l! k4 _' k9 V% n+ S! d" p【程序96 B6 H1 I+ y2 ]) A% Z/ Y
题目:要求输出国际象棋棋盘。
! p, q% h' j$ O& d2 E& J$ f( ]2 ?1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 5 i- V5 b9 t& A5 ]( A
2.程序源代码: 6 |( Q# Z7 b& W, |
#include "stdio.h"
) P( o/ ^4 h# w. g. v* \: fmain() . @1 d9 A, q7 C) u9 u1 T
{ & a* U  ^6 U% z' @4 x+ g
int i,j; 5 o* ?4 @' G4 C3 ^; y) Y" {3 G) ?
for(i=0;i<8;i++)
, B; z* S+ ]/ ?{ ( d8 P, D6 f. {1 ^
for(j=0;j<8;j++)
7 N& @# R9 m3 d2 s$ H, Yif((i+j)%2==0) 5 _8 z# z7 {6 z
printf("%c%c",219,219);
9 M+ U( m& J0 n' e- Oelse 8 r1 O' V- }% {0 C" q8 t' O
printf(" "); & X' r8 K) N& l* u# t# O$ k
printf("\n");
# V+ I0 ~" M/ ?/ I# C, s1 E( C} % M5 e! b2 G  c' L2 {
} ' p. W* H3 f: e
============================================================== ( P2 b7 F7 @; E2 Y
【程序10
6 a0 H6 E! p  R) n$ M题目:打印楼梯,同时在楼梯上方打印两个笑脸。 4 X  X, }% N4 H- n( ?/ v) a
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
, D8 ^  Y2 a# ~2 R: x+ t2.程序源代码:
/ H9 J2 o; W9 ]; `6 `; Y8 {; f* o#include "stdio.h" ) j* g  F6 y" x- f$ D) S+ i
main() ( ~% M) Y$ ^* F" }
{ + F$ W8 m9 t- b  O# N# M8 e5 v! ?/ F
int i,j; $ \( x+ Q1 p: b* c6 z1 w; B
printf("\1\1\n");/*输出两个笑脸*/
" r% J- e6 F+ s/ S; S, Ifor(i=1;i<11;i++) 5 r4 ?! b, d' k$ n) k# k$ B4 A! h
{
$ m7 [( ~! E6 a4 @for(j=1;j<=i;j++)
/ w8 u( [! Y5 A; Bprintf("%c%c",219,219);
* ?) @; @' Q7 A- z0 x( _printf("\n"); + g; L$ H+ m: H
}
. P8 v9 ?$ E+ o1 ~  z}
  ^2 d; b2 g5 w- ]) K$ |& p; C5 m& q* d: ]9 R% \- Q

9 q# _! g, G0 t3 ]; S. Y
  ^4 a) Z5 ?3 r) B% q- f作者: zhlei81 2005-1-22 11:29 回复此发言
  H9 n! l8 m1 }+ O% p5 Z9 c- ^; l* `7 i* Y' Z' W
-------------------------------------------------------------------------------- 4 f8 j% O/ u" c7 U" n
% _( Y2 v  S6 z) a# |% {. t3 M
3 回复:经典C源程序100' Q( a: `- U2 q1 x% {  S- j
【程序11( ?" U" K$ i* z' i9 e
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
. s0 r: V5 H5 t- [! W后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? & I# o  E" J; ^! `. j3 G, A" x
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
4 W: K1 t2 H2 o4 B2.程序源代码: : |! y  R$ S& N, q
main()
, I/ h, W+ D3 A' F9 L{ $ B* n- ^$ _& P3 q6 j! r' r1 Q
long f1,f2;   F- A* H+ v+ F; d0 ?
int i; ! _+ m) o- w2 r" i
f1=f2=1;
/ W8 m! k. _+ I: b0 _for(i=1;i<=20;i++) ( u) C. k9 q; o9 N7 O
{ printf("%12ld %12ld",f1,f2);
, D# M: f# A1 J6 h+ lif(i%2==0) printf("\n");/*控制输出,每行四个*/ ) \1 |2 E4 f- a3 J
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
+ ~$ \% {2 V5 w( jf2=f1+f2; /*前两个月加起来赋值给第三个月*/
5 m* e1 J. |! }  Q} ! L6 i# ]" p; W
} . F! f; o- X3 l! w2 N  e
==============================================================
4 E' \! U9 z: j【程序12
5 R) Z, L2 m. A3 @5 W* G3 @* e' ^题目:判断101-200之间有多少个素数,并输出所有素数。 ) c8 W$ o0 a) o6 M) T4 k* e6 F
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
$ o5 M$ U3 J' o则表明此数不是素数,反之是素数。
! p& v8 V9 y8 S7 t7 z$ @2.程序源代码:
( A2 f! @4 t3 f3 n  ?1 D2 e* u+ n) ]#include "math.h" 2 V8 k& u! ?4 K9 L
main()
: |# _+ B3 \+ g6 Y0 P0 y{ 0 d8 }+ i' O/ S
int m,i,k,h=0,leap=1;
; [0 t4 r( A/ D* [4 e9 }printf("\n"); + z4 Q9 \, }' U1 S5 F
for(m=101;m<=200;m++) 6 L. h* L( A/ N
{ k=sqrt(m+1); / m' E6 x( T$ x/ ?- W
for(i=2;i<=k;i++) % N4 a* \$ G* F' k* f2 ?
if(m%i==0)
$ H1 O! T8 }" {6 ~' A$ g& ~{leap=0;break;}
% k" V. h( N# m, Y& eif(leap) {printf("%-4d",m);h++;
* ~' T" Y- J2 }5 D8 tif(h%10==0)
. Y: ^# H# r% Q. G. |printf("\n");
: t! U- d# i" ]( G* B} " T# O' O) s  G
leap=1; + {. B% B2 |1 e0 q2 G6 F& [
}
" u+ P8 Q! F4 C, ^printf("\nThe total is %d",h); + W1 T  p( U- p$ [
} - H( `/ G% _+ S5 S
============================================================== 3 L3 C8 K' H2 U% f
【程序13* B  N  r, K# a9 T# v* n9 j) x7 U
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
( {7 b7 D& S5 r本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
) I9 s3 ~8 V6 u6 Q# H1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 " ~/ h2 J5 k7 |- _3 J& O# f! ?
2.程序源代码:
/ g% ^) @- k- F' T/ Mmain()
+ u- W1 x+ h1 Q8 A; {; k{   D/ R) g, W# t+ G4 `0 e
int i,j,k,n;
3 ^, r! y! h% Nprintf("'water flower'number is:");
8 Y& f2 f: Y4 {' y+ r# A3 E9 \! M# P! Qfor(n=100;n<1000;n++) & T7 p# W& c5 y% Y
{
( x4 l( [5 d8 s9 {i=n/100;/*分解出百位*/
/ X9 P, b5 X, wj=n/10%10;/*分解出十位*/ : T. U( T) ~7 f3 j) V
k=n%10;/*分解出个位*/
' a) p3 Z' m- a! E" ?. |1 G# w( |* Aif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
( f# t2 |$ G0 _4 \& f{   e) S9 Q- s# U# Z4 Q
printf("%-5d",n);
2 a; F7 c$ s- P( s, N' G} 5 _) `( h. d6 D+ u1 R
} ) }( _! c( u; W, h8 L
printf("\n");
  t( y& o7 y& S  ^}
# l* W" X* l* J1 R8 {; o============================================================== 2 Z" e' S; Y3 t0 ?3 e& [9 _/ l
【程序14$ H$ z! j! w% Z/ \! X( [
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
0 L) z& f+ n4 V& ?) O
0 ?) C0 Z8 e, y6 I4 A4 B7 G程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 3 ]' l: x+ i. G$ v
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
: m# p" w, s4 j% L(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
. L" P9 w* Z4 Q. @. X4 \: `重复执行第一步。
6 ], m  V9 b! ?. K' \1 t3 i' j(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 ) m% {! z6 R4 u7 H0 Q

! Q# g2 a/ b1 v0 m  ]% q2.程序源代码:
6 e, t  d& I% b7 Y# n( D* ~/* zheng int is divided yinshu*/
5 A2 \3 U; w" o2 W. wmain()
8 |" m; R( S" c4 [3 s' j{ & m! z* s& I/ |. O$ }
int n,i;
  j6 \4 y2 q! Z$ ~printf("\nplease input a number:\n");
2 M9 G! \8 [3 {) t( D# Pscanf("%d",&n);
" E2 n! _& E( N7 {0 U* y5 ~printf("%d=",n);
% M! b; L' Q/ L+ H* |( N& vfor(i=2;i<=n;i++) : e8 n* x% K0 d7 o0 t3 J2 X
{ / Y7 _/ t( t1 K) k
while(n!=i) ' S6 \- |& a# v1 [3 }' Z. `
{
1 X& e2 L9 w- `+ I3 Mif(n%i==0)
# Y+ {' J2 H8 f{ printf("%d*",i);
0 W3 K' V/ @9 F2 Cn=n/i;
( Z, \6 a( ^0 l* L}
+ A  ?: |, f* h; B  t  ~/ Melse
5 B3 m# p5 q: ~( b/ E- hbreak;
0 m, m& t- M3 s3 f$ j}
: m* h" F/ q: M/ J8 h9 m; d} 9 t3 W% N+ t" {) U  d6 f1 L
printf("%d",n);} ) V2 O  M1 ~5 p+ C. b2 S
; D2 I. o3 _: ]* K0 k
回复

使用道具 举报

发表于 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 | 显示全部楼层
好东西# g. {/ v- j& t! E
回复

使用道具 举报

发表于 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-7-12 17:44 , Processed in 0.078501 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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