【程序8】
; |# \( P8 C$ U7 G% E4 w題目:輸出9*9口訣。 2 M3 I- n$ e; C0 ~* W
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
, A& D* R9 v* e% a. }% ^5 D$ K) l2.程序源代碼:
) h6 @ r" o$ j#include "stdio.h"
" }2 o- q1 R- z; lmain() 8 `/ ~" w4 W- u& o
{
, v, q0 T. X6 b" F1 d0 _int i,j,result;
" j! N6 G( a% J% Dprintf("\n"); : x; A. E# H ?* F+ J' P
for (i=1;i<10;i++)
, I, r* E o* p2 e{ for(j=1;j<10;j++) 4 N+ ~' e7 C- Q, x ^, _
{
5 { j8 J r+ C9 S4 f8 G% M) P: bresult=i*j;
0 c% R1 `0 i) e9 a' F8 s6 Q* o! nprintf("%d*%d=%-3d",i,j,result);/*-3d表示左對(duì)齊,占3位*/
/ c+ j1 \# ^5 Z} ( y: L: t e" |% s# o+ o! A, A
printf("\n");/*每一行后換行*/
7 S3 ]: z7 W7 {5 y4 |" j}
0 k- D+ T; L3 r* ?5 e2 V) Q}
+ m/ R h- x) z============================================================== % M. x2 Q W$ c1 W5 @. P, X1 R+ n
【程序9】 ; r8 T& Y2 E( T6 S8 Q9 E3 T- h `8 K
題目:要求輸出國(guó)際象棋棋盤(pán)。
H% h: n2 ?* T1.程序分析:用i控制行,j來(lái)控制列,根據(jù)i+j的和的變化來(lái)控制輸出黑方格,還是白方格。 , w2 V+ n) s% s" O. r% p
2.程序源代碼:
6 T; W" V4 g/ w; a! K0 j#include "stdio.h"
! I+ P* R5 ]/ Dmain() 6 h1 |# r1 Y5 k' Y
{
5 m. } ^- Z8 [) k' ]* u6 l. mint i,j; 1 d. Z, z+ R+ F/ E9 s
for(i=0;i<8;i++)
6 y8 Z5 e" j) ?' f9 i{ 5 w. B) O) I, {3 B- R3 S" `
for(j=0;j<8;j++) 0 G% K3 P' o% F
if((i+j)%2==0) 4 I' ?1 L. I2 v/ \$ E5 n
printf("%c%c",219,219); , O4 H' M: x; A) m: J# w L
else - H; t9 ?" [0 j2 D7 q
printf(" "); 2 v5 a% l# B$ G' h7 y
printf("\n");
! w3 x- J9 d8 j7 ]6 O9 d}
0 K7 O/ t& F; ^/ ^+ w6 u) {} ! k+ X2 ~) R( I' r2 P
============================================================== 8 H& _- X2 T& x% [- W
【程序10】 + w$ P' w: q. E) D* e
題目:打印樓梯,同時(shí)在樓梯上方打印兩個(gè)笑臉。
5 i5 V# H' i& p; k" E) T' t1.程序分析:用i控制行,j來(lái)控制列,j根據(jù)i的變化來(lái)控制輸出黑方格的個(gè)數(shù)。
1 w7 ?& t" l* V A4 d( b+ p2.程序源代碼:
- y0 L$ j9 Y8 K$ c, A( D#include "stdio.h"
5 @( ~9 b" e# l6 q, j3 |main() ! U) i# n n: y+ Y: t. ~. E
{ 2 F/ {) ^/ G& A5 R& S/ h& T e7 g
int i,j; 9 |* U; C1 A4 v* ~* V: Y+ V
printf("\1\1\n");/*輸出兩個(gè)笑臉*/
I+ J& K9 Y0 d p+ L* Tfor(i=1;i<11;i++)
5 X- O# W) Z6 {" J- B( a. Y& D{ $ B0 d |9 _+ w$ H' L4 z. N" l
for(j=1;j<=i;j++)
# K |2 W4 }% a6 v8 Eprintf("%c%c",219,219);
% K; \; k9 E% P5 _printf("\n");
1 j6 ]8 d5 o" H" o4 \} 8 h/ M2 S$ | M
}
r" o! z9 B8 d k* g3 F- h( K& R3 u
9 |1 l& ^: t( d0 e
& o- [7 i! R6 n) x8 r
作者: zhlei81 2005-1-22 11:29 回復(fù)此發(fā)言 # A. C3 }% ]: Z( i u8 d
( V) c2 ]9 g& U' K- f9 v7 e! J& j- V5 Y
-------------------------------------------------------------------------------- 2 i- F3 k c( O( Q
^! |( y( E0 t4 N
3 回復(fù):經(jīng)典C源程序100例 * U8 U7 q) E* Y8 q
【程序11】 6 K8 F* J0 l8 a& ?, D
題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月
8 `/ O0 g: a2 t$ x' i2 c后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
& G- k2 O1 c7 [& p1.程序分析: 兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21.... ! e7 S5 C3 I5 |/ D+ x" T( |
2.程序源代碼:
, J# S: _: e: N8 N# Dmain() $ c* i$ k2 F/ K" f7 `1 r/ v
{
1 \" R" N% c6 ~long f1,f2; + ^5 x% x' v& S+ s$ M5 i
int i;
. c' l4 V E( ef1=f2=1; : w+ l) H, z" u& r, p& g6 U
for(i=1;i<=20;i++) # v! s3 J8 j1 g5 S6 h" [& V
{ printf("%12ld %12ld",f1,f2);
( ^0 G. w, [. v* U% X. kif(i%2==0) printf("\n");/*控制輸出,每行四個(gè)*/
z" D, i3 L" M1 `/ |$ O! F$ _ kf1=f1+f2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/ / Q6 t. h! w9 ]- m+ w
f2=f1+f2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/ & ^* r* q" ?. ]' }
}
# Z2 x% Y9 b/ I1 S0 }}
$ _/ Y8 q: m" W# t============================================================== + G% V/ \5 X- s' X! p# g
【程序12】
- y8 N T6 J$ M/ X0 s題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。 : z3 N, g6 A- d8 a
1.程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除, 4 Y$ F( @+ n: E
則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。
- I% j+ L# r; S }2 a# i2.程序源代碼: 7 ]3 c5 _6 {; @, G% q3 U* d
#include "math.h"
' m5 l" ~2 Q, o7 A# D: wmain() - v- L6 f7 j V& k5 _, Y, G
{
! ]$ J; d: q% R6 Y) Z: @" [int m,i,k,h=0,leap=1;
& m# J m4 p3 j+ \6 `1 T. O lprintf("\n");
" T. i0 D- i& W. l/ @for(m=101;m<=200;m++) , C3 R% h/ ?& J" h
{ k=sqrt(m+1); . L- i- b2 J$ s7 |3 l+ U& ^
for(i=2;i<=k;i++)
" m; k/ Y1 H$ Y3 K. F# tif(m%i==0)
. B; l4 R- |2 h' e6 q- x. D: G& G{leap=0;break;} ! T7 w- M( T5 P
if(leap) {printf("%-4d",m);h++; ! @1 @2 e9 |5 Q8 _! q
if(h%10==0)
# X4 r' |; h" W5 ~2 G& ]0 |8 Fprintf("\n"); ! y% h8 p7 F. q
} % U8 z8 G- e% j
leap=1; ! a" N- q, {: e( {
} ' L: W: f9 J- w( A0 u- }
printf("\nThe total is %d",h); 6 Q; j, l8 t/ o+ N
}
, v. [7 F8 e3 c- ~! a==============================================================
& E) {% m! w2 H; h/ f$ R; U【程序13】 4 m! [4 L7 l" K7 b3 G) u
題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)
6 v# A# K) C/ B% [本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?/font>153=1的三次方+5的三次方+3的三次方。 * j$ q9 u5 n( }* P4 z+ B8 P
1.程序分析:利用for循環(huán)控制100-999個(gè)數(shù),每個(gè)數(shù)分解出個(gè)位,十位,百位。 % m5 z2 w1 |9 O( v
2.程序源代碼:
( ^: x: f9 ~% {1 q( W4 }, E3 {8 Dmain() 8 p6 Y7 Q5 x' l; G
{ 9 r/ Q! x2 ~+ N% D2 G
int i,j,k,n; 8 W1 g0 Q6 G$ S0 g5 p* a# A! _! P
printf("'water flower'number is:"); " K* J% Y0 f$ \2 w; I
for(n=100;n<1000;n++)
. e) {7 l/ M7 F( L$ S {{
J7 Y$ N, Z2 E G+ k( {/ l, Ti=n/100;/*分解出百位*/ ) p; u, o/ \+ b' f5 c- W1 F" J
j=n/10%10;/*分解出十位*/ ; @. O5 Z9 ?1 Y
k=n%10;/*分解出個(gè)位*/
& ?/ }" J# R$ n/ Jif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
" q j8 A/ E) g, L" ]/ M{
3 e2 u5 L( l0 R# ~; R. M* xprintf("%-5d",n);
5 K& a; g0 \1 s8 f* {} - m2 B3 s: }6 A7 l+ Z K% @
}
- Z; U, E9 G6 Y' Z* Kprintf("\n"); Z8 W* u) s0 g) u+ ^8 _: n7 r
}
# V, Z7 l6 [5 P* h: s/ N( C% h+ N============================================================== 8 Q" z. F% r; F# ?6 e/ q( M
【程序14】
# S/ D( W5 a& r) E& {6 }+ e1 k題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。
' g+ b0 U' L* Q3 l y/ g4 j" ]$ q3 A+ [* W( v1 _1 f( N p
程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
: k% i9 Q6 a) t$ T: j(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說(shuō)明分解質(zhì)因數(shù)的過(guò)程已經(jīng)結(jié)束,打印出即可。 5 M) h, m7 D5 X& Q! @
(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,
& t" h$ s% s: s3 u重復(fù)執(zhí)行第一步。
6 D. M/ K" r$ l8 M(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
T' W& b6 e/ W/ ?" X. m j) c) Y% x# ?/ n
2.程序源代碼: 0 m; [. w. ~5 }7 j5 o+ ^8 |5 y# [
/* zheng int is divided yinshu*/ 8 _7 T/ u) a! O, `" X7 z; ?
main()
) ]0 y# }6 u2 m" ]1 b{ ) g9 o4 f2 R/ @* |) A
int n,i; ' A( i+ z7 L# O- R& G: D
printf("\nplease input a number:\n"); . _$ l# p7 s8 q: |$ R. n& O
scanf("%d",&n); 0 O r- V o; k, L: r T. A
printf("%d=",n);
$ L3 |. l5 h3 O- Xfor(i=2;i<=n;i++) * Q) J" e4 c8 R' _- `
{ 1 x3 v8 p( K) R; x+ N
while(n!=i) : l: b8 r$ N H) T) _, g
{ 4 a; c% u2 m C4 `+ H
if(n%i==0) 6 Q% N* J7 f0 Y+ R1 B1 s+ f) H. x
{ printf("%d*",i);
3 b7 [* I/ ~7 ~2 x) y! }) vn=n/i; + f) Q$ o* }; L8 j, l5 i- e8 H
} 4 {0 x% l6 A- P* D% R
else
6 B8 r' D( b: D) [% z1 Qbreak; - M' k* `6 p/ h9 L! E7 h" [- d
}
7 k7 ^+ c5 U4 `. B. A; w; x}
3 w5 i7 `8 r$ Uprintf("%d",n);} . r! ?1 P- T% @) z
! {8 R; F" E0 C2 Q+ ?# K5 e- l/ @% p
|