機(jī)械社區(qū)

標(biāo)題: C語言經(jīng)典算法100例 [打印本頁]

作者: tainqing    時間: 2017-9-23 10:57
標(biāo)題: C語言經(jīng)典算法100例
【程序8
$ C8 }2 @: Y- ]" \+ U題目:輸出9*9口訣。 0 c4 q; z( c$ V0 ~0 e
1.程序分析:分行與列考慮,共99列,i控制行,j控制列。
. M7 c9 [) d: o5 u* I3 \2.程序源代碼: " ^( [. D2 G) E# g- v8 O/ E
#include "stdio.h" ; ]0 u: @- I) B( r# M$ C
main()
- v+ N7 x& E) a( F0 Z% Y{ & E9 H# Z" K  b- R7 {  G
int i,j,result; * Z/ ~# m6 N$ g7 D' c
printf("\n");
+ \  H( X; q0 a' dfor (i=1;i<10;i++)
) @5 p# v) G# a4 [  c{ for(j=1;j<10;j++) ( N  O1 D0 Q4 J9 \$ T0 m$ V
{ 0 w2 m6 Z% t9 o. f$ n
result=i*j;
& I3 x$ y+ v# Z5 `1 q# @7 D* @& Dprintf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3*/
2 I- ?7 b" E. r/ i& \% c* W}
0 m& |+ m1 l5 t" L2 O! `printf("\n");/*每一行后換行*/
" ?3 M& w+ [: X5 F9 y/ ]# G' b} 8 n  m  V0 R# o- v+ e" ^9 a1 e4 T
}
# M- a# x; M, F7 g7 W) _6 o7 q============================================================== % V6 L& U* R2 M0 P1 L1 w
【程序9
$ ]) W2 B1 u/ s- a8 |5 E$ t題目:要求輸出國際象棋棋盤。
/ |. t5 G% u' g3 C0 @1.程序分析:用i控制行,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方格,還是白方格。 , G7 \1 o+ K) T  y; U; m
2.程序源代碼: ! c1 e4 _& I8 o6 i+ c
#include "stdio.h"
( U3 M# I3 K& U  V& s- L8 Smain() " Z; b, \& A# S' U1 _
{ , _  i) r% b7 d3 `
int i,j;
+ w7 G4 d! C. h6 ^4 o0 I" g, Rfor(i=0;i<8;i++)
0 y' d8 B. A+ a5 }: c9 O* A4 o{ 2 M: L' A) @% }
for(j=0;j<8;j++) 0 R  q; |+ ], h$ P* C1 n
if((i+j)%2==0)
7 g& _4 \& |1 u+ K4 x/ pprintf("%c%c",219,219); 3 {. y! i3 C0 N( O0 D
else ! S8 M' H( f% t$ S  m$ G
printf(" ");
2 ~! W) d+ O% V) U$ Fprintf("\n"); ; v# M/ k3 ?- p2 A' O8 ^# h
} . X  r2 O' d7 j! H; X: J" w6 ^5 q4 I
} 0 b7 d  L+ d, c4 v. f. }2 V
============================================================== " X2 X  M1 D) G% K% Y' b
【程序105 {* w* c6 O9 a2 r
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。
# g# z3 G/ S' N2 x3 t3 U1.程序分析:用i控制行,j來控制列,j根據(jù)i的變化來控制輸出黑方格的個數(shù)。 % Z- q) ]6 r  ]+ R
2.程序源代碼:
3 k5 K' r, X% h+ I: K( Z/ m1 m#include "stdio.h" 7 q% Z' _/ x. `8 m9 m% c
main() ' f6 ]" X% \% E2 _  w
{ ; v2 F, [  s. ^2 f" f8 X
int i,j;
. D3 L5 g' }) V3 C! y6 T" g$ Pprintf("\1\1\n");/*輸出兩個笑臉*/ : S0 h; ^  u' }8 P  s
for(i=1;i<11;i++) * V9 d* j1 j4 O( H' \) ~
{
) l  b2 n0 P( J- D( ]for(j=1;j<=i;j++)
- j: ?' G8 ^' n# s4 mprintf("%c%c",219,219); , U% i; E5 @2 z+ E  ]0 }
printf("\n"); ) i1 l! S% Y8 a8 o. z/ V' z9 [' @
}
$ A1 j. C% o9 p& I}
2 P7 E+ S) Z+ }7 E% y& O( [- W" d
# s3 Q% R* Y) B( ?+ Z6 n/ M5 @; x. C) P  x4 }2 w* \
% g" v% V) u- P/ O( n& w/ ?4 E" }2 Y# k
作者: zhlei81 2005-1-22 11:29 回復(fù)此發(fā)言 3 g# C7 i7 j- x) p* [2 D. b  w

" k! \4 F; x% C4 S4 t-------------------------------------------------------------------------------- % V( @* v' D: K  T6 U2 S

8 `6 r! T4 y% P/ C; N2 |. e3 回復(fù):經(jīng)典C源程序100
5 n, ?/ u' d5 U+ Y4 _2 n) u. R: @【程序11" T5 |" Z& v$ y: J/ v! u' B1 o% [
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月 7 D) l2 \, B& |" K( l$ x
后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少? " U# v! w, t3 g' ]: o
1.程序分析: 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....
0 W3 U( A% G2 K/ _! H7 P/ [/ @2.程序源代碼:
" W) F. t# u8 H% g( Umain()
% \% F/ O9 {2 H: s{
; W9 @( _" t8 R. ]long f1,f2; 5 L/ j+ P% ?; w( ~, X# o5 ^
int i; $ V1 z: u/ w. Q5 R* g
f1=f2=1; 5 Y" ?% d/ `6 K* m& X
for(i=1;i<=20;i++) ! ^, K8 |% _/ V; Y1 s7 l8 r
{ printf("%12ld %12ld",f1,f2); + n$ }1 {7 s4 g7 Q8 s
if(i%2==0) printf("\n");/*控制輸出,每行四個*/ : c# u6 x  g8 a, [; E4 _# ~
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/ 8 E/ U( `1 u7 z9 p/ l2 x) h
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/ ! i  i' h! h5 E
} 3 _- u) M7 N5 s/ r$ H4 W7 l; L
}
' G$ {9 X+ [: r& d0 O* f0 Y+ v==============================================================
6 `8 d) F: b" e9 a$ S* `【程序12
2 b3 h! S4 P1 q# s& v9 E  f* h# q3 K5 {4 f題目:判斷101-200之間有多少個素數(shù),并輸出所有素數(shù)。
; G0 ]7 M; J' ?9 @' k  T% i  }# _1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2sqrt(這個數(shù)),如果能被整除, 1 D' Q: u) K! S# l; T9 e5 M
則表明此數(shù)不是素數(shù),反之是素數(shù)。
& w, f' K* w) J! O5 q2.程序源代碼:
5 T, N9 ?0 {; c: ]#include "math.h"   g1 h+ {$ h" c& b9 u+ B4 h
main()
9 T9 K6 Q& S) M6 a( `{
3 K. ]8 T, X- Gint m,i,k,h=0,leap=1; ) o, Z& Z" p$ J* H% ?$ y
printf("\n");
2 {. W! J# L# h2 Zfor(m=101;m<=200;m++)
+ \( v! I  ^% D{ k=sqrt(m+1);
  Y: j7 }: R0 d# v7 pfor(i=2;i<=k;i++) * x5 J, q/ c. D( S4 H. a! g
if(m%i==0) 3 S0 Y/ t+ ?- H5 t5 K# b. t! ~  A, t
{leap=0;break;} . x( C5 z+ [$ X. r+ g3 y; s2 e
if(leap) {printf("%-4d",m);h++;
! L- s8 Q6 ?! K! A/ l. rif(h%10==0) 1 s% c9 U1 a* z0 V7 t7 V5 A. \: I
printf("\n"); # Y# W' ]4 x2 O1 Q5 I+ A& i$ `, ]
}
! }/ r6 r% ?8 _2 U$ P) e1 U) I, Ileap=1;
! ^" s2 B# A! r3 v} / \7 Q% e, q" C# z2 C* `" o
printf("\nThe total is %d",h);
1 P8 a, [5 Q2 T) P' `}
6 _4 w7 I3 K8 H1 ]; O============================================================== % D5 m7 V' P3 }; m0 @- Y
【程序13; l$ U! B! {3 \. B! ]/ H/ b
題目:打印出所有的水仙花數(shù),所謂水仙花數(shù)是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù)
0 n! E. G' o& H- _/ y9 @* o本身。例如:153是一個水仙花數(shù),因為153=1的三次方+5的三次方+3的三次方。 ; t3 h& W1 n6 v7 U5 p" `
1.程序分析:利用for循環(huán)控制100-999個數(shù),每個數(shù)分解出個位,十位,百位。
* @* q2 J" i) C0 _2.程序源代碼:
1 \6 k$ J" {" v) Wmain()   F' ?2 C* S9 b% H, h. m
{ * B& M+ J+ V7 I4 h; ^2 Z
int i,j,k,n;
# l; y6 Y/ L$ P0 Oprintf("'water flower'number is:");
5 T8 Z+ h* ^* Bfor(n=100;n<1000;n++)
: V! T8 b4 u2 [9 B2 f" [( l# e{
7 ^6 g5 F: G* Q( B; xi=n/100;/*分解出百位*/ # H, n! C( X4 L. w# |4 I
j=n/10%10;/*分解出十位*/
  ?1 X0 ?& E' \* @0 i4 Uk=n%10;/*分解出個位*/ * j6 E  s4 y5 N1 m
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
3 s- ]/ d( P: ~0 c1 _: w$ \! ^{
2 {' j* _: ^& S! K, D" o1 Hprintf("%-5d",n);
: ^  B6 [. j1 {. ^4 z}
$ L9 `2 C( w) e} 7 ~+ ~2 X$ |* Q) f. _: b
printf("\n");
# a# {4 E+ K( \* B+ ]& T} ( U- |7 i) O' o. J  M
============================================================== 4 x+ c# X) }# Y
【程序145 A* n0 _6 i$ a/ c$ y' t% Q( N
題目:將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 4 q, e& {) \4 m' J$ u# ~3 j( Z

" k. N2 E( _4 f8 Q$ F程序分析:對n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個最小的質(zhì)數(shù)k,然后按下述步驟完成:
) }, v# j0 f. _4 _5 B; ?) A(1)如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。
6 f4 L* v& E$ {! N7 i(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n, ) ^, S- K& r- e. _( v2 c. [
重復(fù)執(zhí)行第一步。
% t; Z/ K5 @; L(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
" v; P, p  ?; A9 A
7 i$ _5 B- x3 ~2 \* L7 D2.程序源代碼:
$ U' y# n# J  S4 v/* zheng int is divided yinshu*/
4 i& E6 I, t+ S; Lmain()
/ B& R  Y) r; I" a( w$ c! b{ # X2 f( {/ R1 V: q
int n,i;
# h9 ~# M6 k5 H' K! t( ^printf("\nplease input a number:\n"); ( q% \9 a1 {; S4 M8 e
scanf("%d",&n); ( `! Q% ^) O8 }5 F+ D
printf("%d=",n); 2 @0 S# W' E# Y
for(i=2;i<=n;i++) " O; y$ A6 |, i) L8 p! z7 M6 X
{
1 F; \2 F, k2 Q/ ]6 A& z0 d! Nwhile(n!=i)
3 x* V8 U  |! v{
; s' h4 P, ~% vif(n%i==0)
$ \  E% K. k! w! T: Y- _6 F6 d: l1 m{ printf("%d*",i); 2 N, q$ D9 g9 K, |2 C' p. E( V
n=n/i;
6 @, A% K) c, `* a( c& w! ~) ^9 Z} 6 A$ k* k4 ?5 i5 l2 E: D0 c
else 1 K/ e& W" o- j! \6 R
break;
/ Z9 G3 R; |! K8 Y} / I( ?* K" S3 V/ E
} ( x' {, U, \& \  _2 z7 l) O
printf("%d",n);} ( A6 ~+ O" Q/ x4 H$ K

7 o  G) r3 |, G+ Y5 v; O# T2 }9 @
作者: 面壁深功    時間: 2017-9-23 11:47
看來也并不是那么難。不過飯還是大家分著吃。
作者: xiaobing86203    時間: 2017-9-23 12:52
趕腳很牛掰的樣子啊,機(jī)械人完全看不懂
作者: 未來第一站    時間: 2017-9-23 16:14
收藏了,樓主不會是在學(xué)程序開發(fā)吧。
作者: 華2017    時間: 2017-9-25 17:47
不是100例嗎?
作者: danxiaogui2017    時間: 2017-10-9 21:20
c語言的基本應(yīng)用挺好的
作者: 675452577    時間: 2017-11-23 15:37
好東西
0 B* [: J5 R& F, |) ^& c
作者: 堅如磐石    時間: 2018-2-28 13:51
在學(xué)校學(xué)習(xí)過這種
作者: 坦克世界之王    時間: 2018-2-28 16:57
看見程序就頭大
作者: 411835728    時間: 2018-3-4 22:16
你騙人,我數(shù)了,不到100例,把剩下的吐出來,不過還是收藏了,雖然簡單,但是基礎(chǔ)和根本。
作者: UNCLESAM1998    時間: 2018-7-26 10:47
hen shi yong xiexie
作者: 912212596    時間: 2018-8-22 15:36
基礎(chǔ)編程,,樓主發(fā)這個帖子想干嘛
作者: Lynn_S0yDy    時間: 2018-8-23 15:51
不夠100個啊
作者: Lynn_S0yDy    時間: 2018-8-23 15:54
不錯,支持
作者: mengfeit    時間: 2019-12-22 11:54
感覺好難呀,做機(jī)械的想學(xué)編程
作者: 井店    時間: 2019-12-27 18:18
基礎(chǔ)哇!
作者: 田爽123    時間: 2020-1-2 16:22
就這么一丟丟么




歡迎光臨 機(jī)械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4