機(jī)械社區(qū)
標(biāo)題: C語(yǔ)言經(jīng)典算法100例 [打印本頁(yè)]
作者: tainqing 時(shí)間: 2017-9-23 10:57
標(biāo)題: C語(yǔ)言經(jīng)典算法100例
【程序8】
& {. c8 W- {; S4 _+ W% Q題目:輸出9*9口訣。 ( K/ |! M. Y+ M
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
9 J2 A% X5 A) E( v2.程序源代碼:
) I3 B+ F2 b0 H. B#include "stdio.h"
% G- q* N% J( Amain()
1 b, F2 z3 N9 o, ^{
$ b+ Z6 T0 J0 j( w' X/ nint i,j,result;
. ~$ A. J' F, o! F4 Lprintf("\n"); . }3 Y F8 }6 h; Z; g N$ v
for (i=1;i<10;i++)
( |0 z4 x( w; }" o+ R/ P, ^) c{ for(j=1;j<10;j++)
, s1 t a r3 U, V% H6 M{ ; |; P9 S. B! a4 i' u7 Q: P
result=i*j; 4 f7 ^+ F& d; U9 `3 u" h
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對(duì)齊,占3位*/
: U# [! Q8 L2 l% |7 S}
' F) ^# r5 e9 u+ _/ H4 n4 R5 E9 Y& Qprintf("\n");/*每一行后換行*/
+ }2 u8 h' z! Q, {( {} 4 V0 F8 a0 Q# d& G& q: a! t
}
% |5 Y( y ]$ j$ E& _============================================================== 5 A4 b g& G7 b: I
【程序9】
8 e1 N! u. s. I9 p& t7 N題目:要求輸出國(guó)際象棋棋盤。 ) u+ H% \* H* @
1.程序分析:用i控制行,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方格,還是白方格。
! h/ I8 z- ]. Q- o x6 e2.程序源代碼: + ^: y: h2 b+ |" [+ ~
#include "stdio.h" . d2 p; o9 r6 H3 [
main()
, G7 a( N: j! ^{ & X+ s9 N4 g5 M7 A6 d5 G9 U8 Z, ~
int i,j; + c9 ^' s$ P y- ]) U
for(i=0;i<8;i++) ' _) b; { K* {" h. R
{
3 u. y1 d# n& D" \for(j=0;j<8;j++) 4 H k, x4 Z' \! r- Y5 `
if((i+j)%2==0) , L( D: l9 u/ t
printf("%c%c",219,219);
. t S- p/ p+ t( P& [else
+ h6 C+ i" w1 {* Y7 xprintf(" "); 7 s7 @, b& x* c( q2 n4 ~
printf("\n");
, [0 O, @+ |7 j7 O" z} . {+ O* `% J# U3 ^3 N, A# \
} S# ?. x j% o6 Y8 y
==============================================================
0 L3 n$ a0 _ m8 a7 J【程序10】 + V4 e Y A: z+ [! s
題目:打印樓梯,同時(shí)在樓梯上方打印兩個(gè)笑臉。
0 S0 [3 R9 _' q3 N% a1.程序分析:用i控制行,j來控制列,j根據(jù)i的變化來控制輸出黑方格的個(gè)數(shù)。 5 N/ X6 Y# W/ x4 _. |
2.程序源代碼:
! j; n" y: `* a" x5 f1 }#include "stdio.h" * X$ ~2 W6 v V8 T% N7 E' z# H2 f
main() 2 s2 q& }+ X" t; Z; i
{
8 W$ P# X$ x3 L+ e# o0 x& hint i,j;
: T+ T% D) ]' h3 K' i! b! o7 Vprintf("\1\1\n");/*輸出兩個(gè)笑臉*/
, m; x: u- k+ Y) Gfor(i=1;i<11;i++)
1 D5 ^1 f+ m, @4 ~! n5 I/ ^- z: [{ i U, z& E2 f2 `& Y
for(j=1;j<=i;j++) 8 ?+ M8 ?' S+ J* t
printf("%c%c",219,219); . a5 a5 j! a1 a& `/ V
printf("\n");
: S# a5 d, r" L}
+ Q G# O, {3 ]7 P' q7 z}
& g9 i) |, M* d% q4 k8 D# f
. \8 t4 V5 A% u4 |1 q7 J8 f: W) o$ W2 M# K
" ~( u; h: H& Z
作者: zhlei81 2005-1-22 11:29 回復(fù)此發(fā)言 e& g" w# s* G9 b, I
C1 [" A* \9 b7 }, k) p) l/ C
-------------------------------------------------------------------------------- 1 J S; `* z* {. A. G- o
* i5 o# @( c, F. ]9 D/ U
3 回復(fù):經(jīng)典C源程序100例
5 _) r8 W" q. a【程序11】
3 r2 `3 D( f: Z題目:古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月 + L7 J2 ]9 D8 A5 ~
后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?
6 e! ?; S9 U$ |' i% N# {+ Y$ u4 |1.程序分析: 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....
4 T' ?8 {& Y3 q1 o* W( O2.程序源代碼:
9 v3 P9 p: q! Hmain() ' l, a( I. A" t- v) S
{ % n0 t# P' X4 d
long f1,f2;
/ F' ~1 n" Y8 z+ I1 k" rint i;
. _ v S0 a p+ i/ r4 {# U, c2 cf1=f2=1; 1 {3 Y; X$ m) D i5 Y
for(i=1;i<=20;i++) ! Q5 I! d7 D# _6 c
{ printf("%12ld %12ld",f1,f2);
9 P6 _5 w3 A4 Vif(i%2==0) printf("\n");/*控制輸出,每行四個(gè)*/
7 g, j5 V% F8 ~# Q8 G+ Lf1=f1+f2; /*前兩個(gè)月加起來賦值給第三個(gè)月*/
% U( Y% V6 g8 u: Xf2=f1+f2; /*前兩個(gè)月加起來賦值給第三個(gè)月*/
1 B- I8 F% u' q- F}
, u9 E3 X7 ?' ]- ], {& E3 s}
& [% Q& X% c* n) d9 E, w/ m7 b==============================================================
" f7 f9 n; T4 K& ]: @0 T【程序12】 . g1 O' ]3 _5 f! w4 k. Q. B
題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。 ' J6 i( }+ @4 |7 i
1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除, * K6 r( r' D% Y* f9 f3 m
則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。 3 \8 N! k+ d1 o7 v' Y" C
2.程序源代碼:
. A+ r& s, m4 y$ ~, q+ V0 \9 w/ p#include "math.h" 4 s! {5 q Q* h. X3 m
main()
' p/ }, J; @0 v{
- a T6 s# i4 V( \int m,i,k,h=0,leap=1; : O( r+ m+ G, Q7 s& w* K6 g. h9 p
printf("\n");
. w: @& f7 Y8 \! f% @for(m=101;m<=200;m++) " t. t0 P/ c+ D* l
{ k=sqrt(m+1); " x5 a" d* b! U# e
for(i=2;i<=k;i++)
6 {! V+ n9 x9 v) ]. y' aif(m%i==0) 4 ~, n4 T1 I) C# ]) a; h0 r
{leap=0;break;}
7 q2 r% m$ X w A- ?7 Uif(leap) {printf("%-4d",m);h++; . ~$ K8 B* W6 m* V' V; O' B: n
if(h%10==0) ( Y O$ a z# ]! s4 V
printf("\n"); 6 c0 d8 p: M& P: @+ n" j) a- g& r
}
, ~: E8 c/ I' ?* bleap=1; 8 X4 W: F3 Z# W# K
} " ?" \2 j* y# @1 u# s2 G7 Q% W8 i! w
printf("\nThe total is %d",h); , ^2 t7 A; D& U! i
}
4 ~3 X) T& Z9 V7 c* X5 u==============================================================
: a" l) c/ g. X5 L【程序13】
- _* d; _, W @, ~題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)
9 B) ^' v, b9 S, k+ K. ]3 n本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?/font>153=1的三次方+5的三次方+3的三次方。
$ ?0 ]+ j H' q4 B2 b- l1.程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。
+ L8 S$ o- K; A# c6 O2.程序源代碼: 4 H* ^$ w* d: @4 I" \( g. J
main() * F8 H! g# c7 @& `
{
. _5 ]7 n- X, G( }9 }6 uint i,j,k,n;
, z( g. q7 s, h$ q2 K/ iprintf("'water flower'number is:"); " [4 V$ T( k- s4 M) [
for(n=100;n<1000;n++)
7 H! N! N5 ?( R- {* T$ u$ K; {{ ( [+ E i/ {" I7 v; D1 k0 h) A
i=n/100;/*分解出百位*/ 4 N( P% Q, A: h$ W, _" ?
j=n/10%10;/*分解出十位*/ , B8 U7 D7 d+ \6 |0 F' j
k=n%10;/*分解出個(gè)位*/
( B1 ?# C$ ~# t0 K7 Kif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
3 t! T* M9 V% x8 q0 R5 S, x{
3 G8 o( Y2 h9 ~printf("%-5d",n); / ^: X1 ^* ~* X7 s5 k
}
9 I% H) X# w! Q2 K1 D0 p) R2 O% c$ I}
. `6 c/ I- H4 ^" z5 ]! oprintf("\n");
1 c0 p, Q9 ~7 o; w2 n# s! h}
% L0 V0 w/ o( ]. t==============================================================
' s f7 |) I: k: z# d. N. u& S【程序14】 ) o3 i6 u& x9 i O
題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 : Z( J" n$ U5 j4 |3 x. K
- q6 v+ B$ n8 [8 O( U6 c }" r
程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
8 a% ^0 `2 S. ^9 H(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。 % r8 `& V( X' e1 {
(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n, # t' Z* u# s5 q- Y0 b4 B0 o5 a$ o4 |
重復(fù)執(zhí)行第一步。 % O9 L) ]4 T+ o% `. c( W
(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。 ) ~4 N9 |- ~2 J& \2 b
+ l5 ?$ t, \0 E, k2.程序源代碼:
3 e: v- ]3 y; b) i% {/* zheng int is divided yinshu*/
8 C8 } s5 q0 G. Ymain()
" h2 K+ i5 @; {) |% a3 U* n! |! U{
8 f' X9 N4 H) b ^" cint n,i; $ j1 b0 y3 l. t" h& b( G# ?( I
printf("\nplease input a number:\n");
( u7 P) u0 W1 R8 qscanf("%d",&n); J" _" m3 y' \' ^/ Q- I) _
printf("%d=",n);
( D5 L# U+ Y6 N' jfor(i=2;i<=n;i++)
& }8 y+ X8 ^, d" T3 ]* c' @) z" `{ 7 b) ^/ M, q1 C8 {8 ]* ~* ]
while(n!=i)
/ \) c# ^; a: B Q; {' G{ . _: ]) {, o) }# X
if(n%i==0) ' k) R, p/ `! s: O: h/ U1 P A
{ printf("%d*",i);
4 I' p. v8 R$ F4 T! j) s9 c7 Dn=n/i; ; e1 @# F- b- n: _) v
} ' ^; d0 F2 [8 }% g! O3 ~# d
else
2 F6 v- n4 c4 S& q8 i `break;
; R# x+ u: \2 s& U5 a% h' J} , p- n4 K$ a+ m" O( \7 O
}
( k5 O- r# \5 h5 Sprintf("%d",n);}
- \' c+ I: k" I2 L
7 y. s6 s4 E6 \' B% I$ Q6 C) ~. q0 V8 G
作者: 面壁深功 時(shí)間: 2017-9-23 11:47
看來也并不是那么難。不過飯還是大家分著吃。
作者: xiaobing86203 時(shí)間: 2017-9-23 12:52
趕腳很牛掰的樣子啊,機(jī)械人完全看不懂
作者: 未來第一站 時(shí)間: 2017-9-23 16:14
收藏了,樓主不會(huì)是在學(xué)程序開發(fā)吧。
作者: 華2017 時(shí)間: 2017-9-25 17:47
不是100例嗎?
作者: danxiaogui2017 時(shí)間: 2017-10-9 21:20
c語(yǔ)言的基本應(yīng)用挺好的
作者: 675452577 時(shí)間: 2017-11-23 15:37
好東西
/ p& T2 n7 l% e% G
作者: 堅(jiān)如磐石 時(shí)間: 2018-2-28 13:51
在學(xué)校學(xué)習(xí)過這種
作者: 坦克世界之王 時(shí)間: 2018-2-28 16:57
看見程序就頭大
作者: 411835728 時(shí)間: 2018-3-4 22:16
你騙人,我數(shù)了,不到100例,把剩下的吐出來,不過還是收藏了,雖然簡(jiǎn)單,但是基礎(chǔ)和根本。
作者: UNCLESAM1998 時(shí)間: 2018-7-26 10:47
hen shi yong xiexie
作者: 912212596 時(shí)間: 2018-8-22 15:36
基礎(chǔ)編程,,樓主發(fā)這個(gè)帖子想干嘛
作者: Lynn_S0yDy 時(shí)間: 2018-8-23 15:51
不夠100個(gè)啊
作者: Lynn_S0yDy 時(shí)間: 2018-8-23 15:54
不錯(cuò),支持
作者: mengfeit 時(shí)間: 2019-12-22 11:54
感覺好難呀,做機(jī)械的想學(xué)編程
作者: 井店 時(shí)間: 2019-12-27 18:18
基礎(chǔ)哇!
作者: 田爽123 時(shí)間: 2020-1-2 16:22
就這么一丟丟么
歡迎光臨 機(jī)械社區(qū) (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |