【程序8】
; z( [; H E2 n! V* |6 _" b題目:輸出9*9口訣。
0 f# t) P% j# z' {5 k$ k1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
/ ~5 @( S1 E. x2.程序源代碼: ' M8 C! ?1 B2 U9 |) L# ^
#include "stdio.h" ) |! z' V. A* k, V4 ^3 x
main()
( n, _( x0 h- ^2 b{
* Z' R) T3 N" G# h5 L; [int i,j,result;
4 s1 _$ W: I) R: Z6 o @* Kprintf("\n");
+ w: }8 |/ F' z, b+ B y" f) Mfor (i=1;i<10;i++) : P- y: N0 Q: q& x. ^
{ for(j=1;j<10;j++) 8 y6 L) Z1 ^# y* [7 g0 Q; z8 x
{
: ?- I6 x' T6 @6 qresult=i*j;
7 \0 R( V& x& h; Hprintf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3位*/
3 S" b! x6 z/ B7 o% S/ ~- F} * ?& k; L! E5 D. _4 G. [3 p! r
printf("\n");/*每一行后換行*/
0 A2 p* j' a8 ?; Z) P" z) d} * m* B5 g1 s" R! T
}
& A6 |0 N9 X- a9 Q0 j% \============================================================== ' z; ?( x5 ?- z9 o. \4 n
【程序9】
4 t& Q: Y0 ?. O" \4 t* w. ?題目:要求輸出國際象棋棋盤。
3 `& T: J# [5 d7 E1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
7 n$ r1 g- }9 S4 T2.程序源代碼: & e/ H7 }) O8 @5 Y, P
#include "stdio.h" * _) l8 L4 f/ D U
main()
n* K' L( b/ \{
9 n8 {, e8 j" p; c! Wint i,j; 8 H$ K! O- x( e2 \1 d3 B( ~* U
for(i=0;i<8;i++)
$ K5 A8 O* A) w. y{ 6 o, b! a: ?2 J* S6 U
for(j=0;j<8;j++) ' I% r; Z4 ] x3 M! F, S( w
if((i+j)%2==0)
+ s; J3 k8 w3 }5 Vprintf("%c%c",219,219); 4 y; w8 _$ H+ A1 G A6 V7 k
else
/ Z7 w# s8 b# x9 ^/ L3 T3 gprintf(" "); 6 n9 e, G' i! U$ c! d
printf("\n"); 9 t* E7 o7 y9 ] t, c
}
( K/ S9 Q K- t} , F& m6 q& r; T. h
============================================================== 5 Q( A7 O4 P) p& F/ y
【程序10】 * I; B" L8 T( u
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。 6 C3 A x( J" f$ `/ {8 Q" T3 V& @
1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。 0 S! Q4 D1 l& d C( f, y3 N% @4 C
2.程序源代碼: - d8 c* h( y1 ^- v F
#include "stdio.h" 0 H* W' @: b3 W0 |
main() # e/ a+ e# U: {, i3 [- g b
{ 8 [' r2 X0 i. x" T* ^6 Z
int i,j; 1 q; l: G5 O: | _5 Y6 e
printf("\1\1\n");/*輸出兩個笑臉*/
2 S. [6 ^# l% y% y7 @for(i=1;i<11;i++) , W# l0 m/ w% e" W
{ % z9 _! b# V( D3 T( ~
for(j=1;j<=i;j++) 9 v) | u1 D: _3 \( e+ n3 E
printf("%c%c",219,219);
2 M7 S" I( _0 s; b; X" ?9 s/ Jprintf("\n"); ! F6 a/ Y; O, s: P
} 3 O' E% v1 ?8 \0 ~7 b" y* \
}
" v+ k! t( D6 e0 h5 f
# |# j6 _8 Y1 E& P+ y/ d; G9 m- S5 s
1 q6 F8 C+ K8 @3 P" Z: I3 i
作者: zhlei81 2005-1-22 11:29 回復此發言 , U' ]; V- A8 `* S# n- ]' e. v6 o5 \
% w- `( R8 i% V--------------------------------------------------------------------------------
$ k, y$ o `8 }9 @9 t3 }% g2 _0 c( B9 B3 x9 o# c5 S* F, k2 L
3 回復:經典C源程序100例 4 Y* d8 g5 P; J' u' n5 l
【程序11】
& B, ~; ~- M" s6 d題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月 # W: _4 K& G5 E$ o* @2 V
后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 1 P, V6 i0 [9 @5 [* o% }
1.程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... # ~$ t" q$ Z4 O
2.程序源代碼:
4 a" K/ r5 L+ h1 K' k/ L7 o. ]main()
% i% ^ y& K5 g2 `{ - Q. i5 Q- h" \
long f1,f2; 5 _/ y( b/ B' r# @' J8 `/ ?
int i;
4 k, \5 j+ W6 G3 Xf1=f2=1; 3 D" O7 q4 M8 Z: S* T6 _3 n
for(i=1;i<=20;i++)
: M, y+ L: P) a. o* v) M{ printf("%12ld %12ld",f1,f2);
7 ^7 p1 \: \9 l/ g; g& qif(i%2==0) printf("\n");/*控制輸出,每行四個*/ . v# V* m/ ^1 S/ I* g
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/
# R+ e7 X0 ~9 t/ w* q' bf2=f1+f2; /*前兩個月加起來賦值給第三個月*/ ( u x" F Q/ o5 {" r; _
} ; e3 l6 C6 g" H! V, e( i+ t: _# \
}
! u6 m9 Y6 k. C==============================================================
7 T: L- v; i* W& H【程序12】
4 S0 @+ B$ [- f. `! a. q! N題目:判斷101-200之間有多少個素數,并輸出所有素數。
- |( Z/ J, ^; B2 E1.程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
; L/ ?' X: p3 O5 K8 `5 L6 c3 d則表明此數不是素數,反之是素數。 9 T2 l1 o0 y0 W. T% s8 [) `' O
2.程序源代碼: ' p a3 q$ }1 e6 \8 P1 Z$ G
#include "math.h" 1 o. g9 G* k; G% `- J: s
main() ' U/ s# a v' s" L: |- M9 i
{
5 v- }! `5 \' ~0 ?0 W" f- I4 lint m,i,k,h=0,leap=1; # H5 t2 r( r, J
printf("\n"); Y( t- `" S U+ G
for(m=101;m<=200;m++)
# w$ n; C- P- e! D( P3 ^{ k=sqrt(m+1); . L/ h# r% P! u& j- @ Z
for(i=2;i<=k;i++)
' E" S. Y& ^ {) W2 Rif(m%i==0) + a! t, d+ F0 X% w3 x
{leap=0;break;}
; ]$ v2 U r3 M$ @: g0 j y/ aif(leap) {printf("%-4d",m);h++; 4 g5 O& k7 ?! Y% G- E6 ]. g
if(h%10==0)
) o9 h6 m' |( t- |8 |$ h' \printf("\n"); 9 E. r3 U; F ~5 J6 h! ?+ m6 x
} + z. _' V- T; O" q( [; |
leap=1; 0 A: R5 C0 T5 I+ @, Y9 `6 S% U
} 4 K, r8 K" }8 i3 ^1 T7 [, u8 ^/ W6 M
printf("\nThe total is %d",h);
/ V/ T& W! ~) E( F5 ]} $ f2 `, Z& R$ L$ q6 g
============================================================== " l) x$ M5 z" b
【程序13】 2 T2 x! b8 g# W% Z& ?% H
題目:打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數 * G6 h7 V& T4 C1 j# m7 r
本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
; y3 a# G9 }# v( p6 }; A1.程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
: Y. a5 I- ]) U2.程序源代碼:
- e9 w0 _' B$ Bmain() " {4 l: N' p; j0 w5 y1 G g5 |
{ 0 {6 }4 P! ^5 n- s
int i,j,k,n;
/ F1 O1 o1 E# R4 c( F) j$ Tprintf("'water flower'number is:"); $ e( h# D5 i$ l) S+ T: [
for(n=100;n<1000;n++) ( P5 Y) d% y. g" }" L8 F
{ 0 A' o6 b' i1 D" h. S/ k& v
i=n/100;/*分解出百位*/ $ a- V9 J# U9 `* f X
j=n/10%10;/*分解出十位*/ % W$ {) }9 d7 [: e# a* w
k=n%10;/*分解出個位*/
5 M* F, u5 U% u1 c" iif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) - W& j$ P. l4 f2 r$ {
{
: ~5 Z! y ]. [1 dprintf("%-5d",n);
8 |* x; _: e; I0 _}
' t+ f- n: q3 m$ N- J: z}
" X7 U7 ~& |) L1 C0 M8 Dprintf("\n");
* p* Y+ L. Y) m} # h* K' H: Y% o- [9 g1 |" F
============================================================== . i. H+ ^. j1 }" K& U3 U* {" X
【程序14】 & } p D! N4 c, S8 ?
題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
/ T, i+ K3 J- d& W6 e Z) }3 e& _/ X) v
程序分析:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成: ; S& D# H- B: U, i' p+ L" \% C
(1)如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。 . W. n+ q& Y% {' ^, D( _
(2)如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n, 2 T# g2 G" M4 v" _
重復執行第一步。 # M, P* C, E4 h1 p, d
(3)如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
4 k6 x& X4 H8 v t0 G
& g" m- P0 G0 _. }* M6 b2.程序源代碼:
, h4 Z3 A* E7 ]5 |! {/* zheng int is divided yinshu*/
# u) y7 G* p+ E* J- |0 Zmain()
" q! `+ f9 n/ v. u{ " Z0 t4 w5 R1 t1 l" A6 W0 v
int n,i;
- @; { u$ U2 k( Q; j1 A% u) _2 v( cprintf("\nplease input a number:\n"); % I# ?$ ?% F4 o
scanf("%d",&n);
; ~* G+ d: S* E4 n! Q7 r* E8 Z! Gprintf("%d=",n);
6 v3 A* C5 I. @( X8 l8 hfor(i=2;i<=n;i++)
c, Y# g8 ]' U: }* s$ r{
* K/ S2 B3 W% L0 c. t( s9 ^while(n!=i)
$ ]9 {7 h, ?7 N' b; P6 m" s{ / \0 }+ D0 A) N9 G: b2 h1 _, Z
if(n%i==0)
5 H5 y; R- P6 D{ printf("%d*",i);
4 O( K: |& M0 g9 {$ Kn=n/i;
& _( H* z; \6 E s, C} + f+ V# }: u2 t8 F! P
else
5 w4 |- J$ C. G5 e+ o6 R8 Kbreak; ' n( ^* t) k$ p4 p5 F
}
P3 I; P& A) e* i& _} 2 U) q' d- `% ]* |
printf("%d",n);} ) z! J0 C2 v' v* q* o
9 |8 T, U. J9 R+ ^0 m6 [
|