【程序8】 + Y' j: X; b1 o$ J7 d" M" n" Q4 J
題目:輸出9*9口訣。 6 e: l r1 f& J! }+ ^+ v q# T
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
7 I1 V* E8 E+ ^+ s- a! v# g2.程序源代碼:
' g3 ~3 A( o/ o/ `8 R) t#include "stdio.h" * G5 d {7 X0 V1 j) S5 g
main()
3 D( e: t7 P1 F; f5 Z{ ' I: L- ^8 |2 Q. l" {; i
int i,j,result;
; D" A2 N" @* x6 }3 {) o; ~8 qprintf("\n"); ) C: ?& C6 }, D( W
for (i=1;i<10;i++)
5 R6 F" f' l0 U, J{ for(j=1;j<10;j++) 2 |: y- x8 z$ s5 ]- V8 r, D
{
7 U+ Q/ P. E# j+ J( oresult=i*j;
5 @- w: t$ B2 m$ r& }printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/
7 p0 v9 W; m; Q}
4 J5 ?/ x( ], l$ W ?printf("\n");/*每一行后換行*/ & ^+ e6 t0 v" |# F: U# C
} # e) f* X N9 q! V( r
}
6 u: n3 P6 t- L2 l ^============================================================== / \4 u* P4 B5 V" B A
【程序9】
7 O( V: Y3 c& W. X4 j S題目:要求輸出國際象棋棋盤。
# W6 v, V# X$ @0 [+ G8 b1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
6 N- E; _! V$ R2.程序源代碼:
) i+ |7 @7 ^4 k6 q* y#include "stdio.h" + [- P9 O0 ], R g4 m1 c o
main()
7 W: C* u l7 t5 T" q( `% B{
# H6 \/ K9 m. A G3 V( _int i,j; 7 \$ s9 ]8 l( J% H, Y2 Z
for(i=0;i<8;i++)
9 Y7 z r9 ]4 U% Y) t; K1 F. p{
: T2 I) k# B* w9 Mfor(j=0;j<8;j++)
$ @- {6 j2 ?( e3 ?: |if((i+j)%2==0) 0 V: C' U0 j3 E9 H
printf("%c%c",219,219);
* }4 E# L' L# ]# ]! Q$ delse
. S* g" o U) }/ fprintf(" ");
* ~; ?" `4 @! u* X8 Uprintf("\n");
5 M) ^8 f% S2 f. I! L. t}
5 l( _8 M2 k6 w, h}
# K _7 R8 @+ o8 v==============================================================
+ t% i: z) j) N4 B$ H$ s( l! j8 q* i【程序10】 7 @# a0 S- L" d5 }
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。 2 U3 r6 @* m1 f9 U. C
1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。 0 c. R4 F6 ^: P5 t6 c) G
2.程序源代碼: 2 Y( F" j4 O) w+ \4 a
#include "stdio.h"
' |5 j2 w' v. ?4 ^5 x# x7 e! |main() * ^: K3 b+ e* n- O3 h% @
{ 2 @& x" L( }4 J6 |0 m' a' X
int i,j; % |/ r, F3 L$ v& X2 G, e2 ~2 t0 A7 ]
printf("\1\1\n");/*輸出兩個笑臉*/ : [6 E2 F7 @0 Y! S- E7 G& Z, F
for(i=1;i<11;i++)
1 z3 q* f3 D* {; A{ ( q+ E0 `, R+ X3 |9 F% v
for(j=1;j<=i;j++)
- S9 X8 d( `, G( C- Y. xprintf("%c%c",219,219); 2 y7 N7 Y; L9 C6 q B
printf("\n"); 8 [* D6 _# D- M; X# Q v% ^( f
} 9 ]+ u& K/ Y4 i- x
}
$ V* X" b- z' A5 M5 q8 H# D6 s4 n' U3 w3 f; }. ?! j) ?
5 E. _1 e6 K. Z k2 j4 Z J
* W+ q4 t2 p' j5 p4 Z- ~6 p
作者: zhlei81 2005-1-22 11:29 回復此發言 3 R$ Y" ?+ U- J
0 U$ C$ {; O" N. E6 c--------------------------------------------------------------------------------
# C5 O4 [7 j2 N$ M) Q$ c
* N. B9 `6 ~" J- N& `* b( `- J3 回復:經典C源程序100例
0 F) H6 o- R& J: Z' _3 g【程序11】 F) E) \4 |! y3 |/ u
題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月
6 H3 Y. \$ G4 w/ k) V后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
: V9 V6 i! Z I( v( M8 W, ~6 g1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
4 Y4 j' ~" \+ g, A- R2.程序源代碼:
, x! U, A B& S$ b0 g: vmain() J9 e7 s4 C) D. z Y
{
. T& d4 A& L5 a3 `7 ?0 s5 h- f0 @; zlong f1,f2;
$ {, h* x2 x9 Y8 Q; z2 K4 Gint i;
1 `& G: O. k# Kf1=f2=1;
; p$ D0 A( y& q5 U; j$ o. ~" Pfor(i=1;i<=20;i++) c% _! x% I+ \. R
{ printf("%12ld %12ld",f1,f2); : b' {* x9 @/ b, m8 ~
if(i%2==0) printf("\n");/*控制輸出,每行四個*/
1 Z [1 L' }1 T- b: o( H# f( P/ ~f1=f1+f2; /*前兩個月加起來賦值給第三個月*/ 0 Z, o7 y3 c, s, i5 j+ b
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/ : ^8 m" N$ w# {( ]" |( U1 ^3 h
}
$ _7 X' M- G7 [2 ]- J3 B0 |}
" I: v3 n2 O, |4 D3 b==============================================================
, x8 ?4 R6 g' V% X4 O【程序12】
. t- ~+ a3 a3 y/ [% y0 y0 k題目:判斷101-200之間有多少個素數,并輸出所有素數。 8 q+ E. B* h+ e; R9 [7 N) S
1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
. q% }8 h5 k: `8 t3 P則表明此數不是素數,反之是素數。 9 y2 P8 z5 {# V" q3 b
2.程序源代碼:
0 c+ i" [+ e1 H1 `/ }/ M3 {#include "math.h"
* b: L9 w& }( P) X9 Dmain() , [0 H( t0 j: e2 ^
{ 3 L2 p8 Z7 j5 A' U$ }
int m,i,k,h=0,leap=1; ( A8 w! \' I9 a) K t2 h
printf("\n");
3 N0 p. ^# i- ]- B' I% W! i3 D0 kfor(m=101;m<=200;m++)
2 p( p3 P% g+ c# U{ k=sqrt(m+1); . K0 b2 a6 |7 j0 y: Y
for(i=2;i<=k;i++)
3 m1 q) @3 g& L# P5 Pif(m%i==0) 6 T, ]( {# ?& l( _: l
{leap=0;break;}
/ _. u* ? z) D9 G& S) `if(leap) {printf("%-4d",m);h++;
5 _$ }0 a5 r* O7 B( L; \if(h%10==0)
0 D! O* i( z; j6 W4 ]! M- |( tprintf("\n");
* g' R) E( D# c; t} 8 C- c/ b9 X- c& y( I' ?; G' t: J
leap=1;
" G5 }) l5 V: S$ d, R}
5 N( Y7 K, ~: i, Kprintf("\nThe total is %d",h); 5 q) c, g* N( L. C( V* R
}
2 v- n( K( M% V==============================================================
+ y E0 M) z) k, G# b) Y: c. w【程序13】
0 e4 V, S l2 |- ^) z- ]( s" g9 O題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數 " R0 B2 |" n) }* K' E4 I
本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
$ F, y9 X6 \8 g; P2 }1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。 0 V! N0 f) _0 Z# K9 A, M& o
2.程序源代碼: / I& i, s9 t$ H2 V% I
main() X% `. O1 z+ @
{ 9 d6 u+ D% G& y& ?$ Q- M
int i,j,k,n; 5 L; ?/ @0 I" Q L& Y0 w) }3 h, E7 |. V
printf("'water flower'number is:");
+ N. V l' A7 a* T, f& zfor(n=100;n<1000;n++)
) \) {+ i4 o0 D4 k6 L{ ) C! f b; r9 h; J/ y
i=n/100;/*分解出百位*/ + C1 R+ f1 s! U! s3 |0 D1 Q
j=n/10%10;/*分解出十位*/
6 ?1 x" l7 T. @, h# m) K0 R2 s* c" ek=n%10;/*分解出個位*/
$ m9 e [* N2 i8 o1 \9 r P( Jif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ) ^ {+ a+ K; H; N
{ + r# H( ?: p' f# W
printf("%-5d",n); ! a3 F/ R( e6 W
}
" i: U: \# r. Y' s} " v5 R; f9 S. K) C2 C0 d
printf("\n"); / k; e' {$ [, b& Y; @
}
" h" Z% E4 C& w( `. `( r============================================================== 7 e) a" k+ o& {) W* F
【程序14】
( P6 G: U, i( d+ n9 O題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
" g5 E$ o6 z" g% o) a4 Z4 J3 v- ]* Z' P; `3 Q
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成: , m$ f( Y8 S% G1 e; c' h* m
(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。
% N& N; F& J' e! p7 E. @, U(2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,
( ^2 f ]1 K3 Q- ^( {4 I重復執行第一步。
k) Y0 q H/ Z/ D! {7 X" p(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。 # u- i ?+ J" p5 A# }+ C
/ h: T" H5 o/ C4 L
2.程序源代碼:
/ B. B1 m$ w2 x" V3 l) d. ^/* zheng int is divided yinshu*/
# Z. W- S0 K" y! Q6 G G/ Y% c6 Nmain() ( F$ n$ P7 Y+ c% ] Z6 }2 Y
{ 5 I: }1 a, ~: _- ^
int n,i; 9 A, g; ^! G2 g. ~
printf("\nplease input a number:\n"); 5 O+ D6 C( T+ f2 v8 S
scanf("%d",&n);
* y% d! W, b. u \) p) g' v+ Eprintf("%d=",n); ' d' c# c, o, R& ~( W' Z
for(i=2;i<=n;i++) , p% I5 J w3 K2 f" k. A
{ 4 h+ K+ o. }' ]5 z0 `6 A
while(n!=i)
# L8 k+ `+ u1 K5 V1 m7 z8 u3 n& N{ 6 X6 i! c* j D1 N& E( ]. w* t, J
if(n%i==0) ! L( ?' |+ P6 M+ ~7 W
{ printf("%d*",i); 6 \" c3 a( K# G2 K( D
n=n/i; 7 L; S$ G& _3 q% ~' f
} . F5 g. v! T$ M
else " i7 k- p/ k) n$ l
break; 8 v, v0 K( }- G( O8 H- e
}
8 ?5 E# J: u3 [9 t! d% x} ; W3 \; h2 z% Y) T+ J
printf("%d",n);} - q3 H+ q: J* V6 \& J
" U* e0 y; s& K
|