【程序8】 1 z( y l; l9 M: E, M
題目:輸出9*9口訣,。 6 G* Y/ ]* V M$ f0 f; k
1.程序分析:分行與列考慮,,共9行9列,,i控制行,,j控制列,。
; b8 i) {! X, t+ p. f; } m; p2.程序源代碼:
* z% T& Z' y0 H; s#include "stdio.h"
8 i" S6 a9 z3 V7 j- d h4 _main()
+ a" S3 L- \3 @- ?+ J" t, y- q{
6 v9 R! [3 H) |/ cint i,j,result; 2 \" V) O5 M ?) A
printf("\n");
5 M, |- O% o; yfor (i=1;i<10;i++)
; H! S$ o, K- ?7 M0 B& ~; _{ for(j=1;j<10;j++) ; R/ D, d1 k# p$ F
{
: ~% Q/ K1 T, B" t1 x3 oresult=i*j; r$ D( {' p6 G3 \! l
printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,,占3位*/ 1 ~2 i; ^' F: N
} + _+ d! D1 |3 M% l
printf("\n");/*每一行后換行*/
& k+ x" j7 ~% z$ t( D# ]2 P} + f7 G8 ^5 `6 V ^0 V* T- F
}
4 T5 o% D: d4 @* m5 {" o/ X============================================================== " b+ i3 C* z- M9 V+ |6 o
【程序9】 0 _' U! e2 F; U% p. w8 X* i
題目:要求輸出國際象棋棋盤,。 & f$ U% J9 ^9 t& R! {
1.程序分析:用i控制行,,j來控制列,根據(jù)i+j的和的變化來控制輸出黑方格,,還是白方格,。
2 S& H% q- b1 D g* b5 d2.程序源代碼:
; Y2 N6 u" [9 [& {2 B#include "stdio.h"
. A- |7 {* z% N4 ?0 L# W8 R0 ~main()
3 y% H: T# u9 ?- n8 L- D J* }6 g{
( N& w" X% C* s8 B6 Zint i,j;
% {% _) ~1 a* ?; o; Tfor(i=0;i<8;i++) % I$ X0 S Y! \0 d$ [5 {4 T
{ , b* x, p1 N- \
for(j=0;j<8;j++) - d6 w$ R O/ V t' b6 U8 v$ X
if((i+j)%2==0) 5 O& K3 l" q8 m% ~3 F2 c+ P4 l
printf("%c%c",219,219); . F- q+ G7 _, v# \' K! q
else # ]1 t2 _8 \# y. x+ D
printf(" "); # [$ T# M9 D& }& s# ~, R4 C0 V* H
printf("\n");
* x s3 v9 c0 \1 p, W' `2 Y}
2 G! ~: K( F8 S+ Z) k$ j+ _+ n}
! V- L! p' U! e( F============================================================== , N) ?& Z) s+ \: e1 C' K
【程序10】 8 e6 `& q/ _' Z. ?* Q: p$ P& L2 ]
題目:打印樓梯,同時在樓梯上方打印兩個笑臉,。
9 b Y3 ]0 ]2 d! a6 R8 p# `9 \1.程序分析:用i控制行,,j來控制列,j根據(jù)i的變化來控制輸出黑方格的個數(shù),。 5 z' _' f, K5 \& W. H* x' O1 |
2.程序源代碼: 7 j8 V+ }, `0 |7 P
#include "stdio.h" 8 Q* g; l( p% ], ]9 y
main()
" Z) {3 e. k9 x! c* U) r! Q. ]{
: x# F9 }3 ?# w: P1 m1 cint i,j; : l9 M; Z& Z5 m5 b
printf("\1\1\n");/*輸出兩個笑臉*/ 6 ?: \/ F5 Q3 ~0 }
for(i=1;i<11;i++) - ?5 n! i _6 G5 k6 h
{
4 [+ F6 [) }% K0 Y- w4 cfor(j=1;j<=i;j++)
, c7 X3 W, G$ V F) Qprintf("%c%c",219,219);
3 \! y' v% @; b$ [* `1 vprintf("\n");
1 F4 A- m* o# |1 V( F% M" x7 a} 8 y& U. r8 j$ v l1 ~; ~- K1 T
}
4 u: t- y. M9 \ p9 m& r; _" s6 P' z. y) k1 @' F9 J- C
9 g- p3 `/ |6 u" Z8 W' X1 F$ _6 U; R% D/ Z6 L7 [- Z5 y' g. J
作者: zhlei81 2005-1-22 11:29 回復(fù)此發(fā)言
K9 C0 Y- F6 u3 n7 X+ _: j! }) r# x; K h4 T
-------------------------------------------------------------------------------- " \- f) N5 Y4 Q' s8 o! s9 B
5 ?4 h9 Y" m. ^3 回復(fù):經(jīng)典C源程序100例
( i7 G& k* M" Y7 N5 W/ g7 b3 \【程序11】 $ O2 d# u% O$ w+ G6 z8 F$ r1 Q
題目:古典問題:有一對兔子,,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月
8 a* S+ f! u, e6 r$ y' y& G后每個月又生一對兔子,,假如兔子都不死,,問每個月的兔子總數(shù)為多少? . n: K& q# ]6 [/ k* d q) Z
1.程序分析: 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.... % c0 D& L' o! o
2.程序源代碼:
$ Y t. f5 y v( m D1 e9 p- v Xmain() % K; R0 A! T, ?$ v
{ # l& B, y6 J6 o- O# d7 U {
long f1,f2; ! s5 B# i p# P. m* j, [) I
int i;
; l3 W; N( W; }+ @& {f1=f2=1;
, b& y, n) c+ }for(i=1;i<=20;i++)
9 a! Z# w; T% Z{ printf("%12ld %12ld",f1,f2); 7 W; }$ D. P2 i9 P
if(i%2==0) printf("\n");/*控制輸出,,每行四個*/ : X+ E M+ B. a, P. u- l6 C
f1=f1+f2; /*前兩個月加起來賦值給第三個月*/ / e8 p; h4 G6 i9 a3 {. {: G
f2=f1+f2; /*前兩個月加起來賦值給第三個月*/
* E3 J1 I2 V( v% H! a& g} : T7 k) [' Z2 Z! b q C
} : r9 V: A. {% V, f" r4 g
==============================================================
! I; C- D: n6 j) a6 y: U【程序12】 ) D+ ]) K8 K3 b( r$ d, q. S
題目:判斷101-200之間有多少個素數(shù),,并輸出所有素數(shù)。
3 e+ s) x# F5 r2 f4 H1.程序分析:判斷素數(shù)的方法:用一個數(shù)分別去除2到sqrt(這個數(shù)),,如果能被整除,,
- j! r; w% \) y# B, H2 h6 a6 n則表明此數(shù)不是素數(shù),反之是素數(shù),。
0 ^; w' @+ L& {2.程序源代碼: ) S0 S; g% C# M0 |6 y
#include "math.h"
7 r$ [/ `, j2 Omain()
5 v7 i( n/ [5 E% r+ z{ $ g( a0 J6 C1 `0 k S
int m,i,k,h=0,leap=1; 3 }4 V. }# b2 s% o5 f! h% H
printf("\n"); 8 H# Z8 S7 l6 q% ~9 a2 z
for(m=101;m<=200;m++) , C8 j: n! D* t. m
{ k=sqrt(m+1); ' A4 W+ r2 p, v
for(i=2;i<=k;i++)
' t% U4 ^1 ^5 Zif(m%i==0) ; I+ E. c7 i6 s8 g1 G2 S. E" i! z
{leap=0;break;} 6 w% m' [$ q; J$ K: f
if(leap) {printf("%-4d",m);h++; ( a: h: s3 }; g
if(h%10==0) + x7 V/ A/ Z" W) _0 \+ E
printf("\n");
( S3 i4 |! d# y& i. x7 @} + y7 _& Z- m# T* n: B
leap=1;
, X# M: m* b- B}
5 ]* E& m1 |$ k8 A4 A( Tprintf("\nThe total is %d",h); ( d, L' [' {9 M) \
}
5 E: O1 o! j" X! Y, t, I==============================================================
$ r; s0 \, j+ q+ c+ [1 m; }6 |* t7 T【程序13】 3 e- Y+ _4 N& s6 [) @7 f( P3 c, p
題目:打印出所有的“水仙花數(shù)”,,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字立方和等于該數(shù) 2 Y+ w r. v6 M1 u- Y. H8 u. n
本身,。例如:153是一個“水仙花數(shù)”,,因為153=1的三次方+5的三次方+3的三次方。
+ u! S9 q- E5 Z% E8 s5 b. d( }1.程序分析:利用for循環(huán)控制100-999個數(shù),,每個數(shù)分解出個位,,十位,百位,。 j. ]; N+ G$ W
2.程序源代碼:
" H. j1 j$ J5 C8 v5 f! lmain() & _+ x5 N6 T+ |( F, d$ \- g' ^
{
! j, u( k/ F3 }. E- M `1 {int i,j,k,n; " N, V ^0 f8 C- F# I- H8 m
printf("'water flower'number is:"); 8 y) q; w9 L4 p; [6 m
for(n=100;n<1000;n++)
& c! O* O7 j6 U) Z{
8 Y3 x- @" F' y! Gi=n/100;/*分解出百位*/ 7 |- ^' ~0 z8 M% q
j=n/10%10;/*分解出十位*/ - ^$ h) [. a9 `4 u% A7 o
k=n%10;/*分解出個位*/
! l' U0 j5 i& \: y/ H; G1 Fif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ; J. B1 p5 o! y8 j5 b+ q
{ - ~* X- Z2 D! q& O! V9 s. _6 ]+ N" m
printf("%-5d",n);
A; X+ V" k6 o! ~}
) L) P! |3 |3 D% ~3 K( f9 {7 A} + t$ Q6 x8 f+ c& M! l
printf("\n");
4 p6 c+ [ r2 N9 e5 I4 S}
0 |( z5 f5 ?6 l7 E! u============================================================== 2 e& R# b: t/ ~( \
【程序14】
$ B: d& j& z* |3 B題目:將一個正整數(shù)分解質(zhì)因數(shù),。例如:輸入90,打印出90=2*3*3*5。 ( w- i4 c; p% j
2 P, f/ b2 I7 T9 n9 r* v5 W) T* w
程序分析:對n進行分解質(zhì)因數(shù),,應(yīng)先找到一個最小的質(zhì)數(shù)k,,然后按下述步驟完成: 1 t% ^* Y7 g) ^) x: X0 W
(1)如果這個質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,,打印出即可,。
! R; C% R7 _/ L( A(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,,并用n除以k的商,作為新的正整數(shù)你n, . N: U/ \" ?: s& n; C* q. R* g
重復(fù)執(zhí)行第一步,。
, n A) H/ [! @8 v8 G& J6 r(3)如果n不能被k整除,,則用k+1作為k的值,重復(fù)執(zhí)行第一步,。
- c% o. L( b) \# a6 z1 J) `9 r( I5 N' N2 r+ G/ @% v
2.程序源代碼: 0 m: D7 V/ v1 q4 k# ~8 w
/* zheng int is divided yinshu*/
# h+ C! S! Q: j: G7 E- qmain() 4 N$ Y6 [$ {9 h& t4 p1 T( ]) b
{
0 u# W4 G5 x+ F; q% b, X( i; k7 R8 Yint n,i;
( L( L2 G8 s2 Qprintf("\nplease input a number:\n");
- _( `) h% _6 R5 G' T/ t* [' P \scanf("%d",&n); 3 n3 t& z/ Z" q6 x
printf("%d=",n); 6 \" ?. Z% Y' w- _7 `
for(i=2;i<=n;i++)
) I5 ^. v& _' [5 i7 T- b0 V I{ / X$ H: p: p/ c4 n$ T v3 Y: ]
while(n!=i) - v j) f. F3 K: h
{
' P+ X( Y5 G/ z) [if(n%i==0)
1 V3 a E5 r! A8 x& [ H" x7 f" T{ printf("%d*",i); & K6 F* \& ?" s Z! k6 C$ q3 x- B
n=n/i; $ z" S( B$ l0 P6 @: V* ?
}
0 b" d" {" E& ]else 1 U f0 ^, o1 w& K$ d1 Q
break;
, W2 H; E- `& T* i}
$ b. R& Z) z$ x4 r# [1 ?}
2 [9 s8 [ ^ \printf("%d",n);} 5 Q! o/ \+ m! x8 E
" L U& c8 l1 D4 X |