【程序8】
7 S3 N8 X7 P; U* J题目:输出9*9口诀。
8 D5 w; P6 |; {/ R8 D6 F, d5 C# d1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 + i9 U: p/ l9 M0 ?. ~" W
2.程序源代码:
6 t( l* _9 V" P/ k6 k#include "stdio.h" 0 b" F0 I! u+ ^2 X( f) F4 U# u
main() ' g9 O9 h. d. R# O5 @/ D
{ + G, g9 C1 z' r" q& w
int i,j,result;
2 K) {* e2 ~- ]printf("\n");
+ |+ C5 |8 V$ i% G! b, afor (i=1;i<10;i++) . r9 {. ?8 O" g7 t! l2 [
{ for(j=1;j<10;j++)
: O/ @% l8 r! B, I{
/ I+ K m& j9 m9 l4 o Iresult=i*j;
/ P: n; j* E" q; S& I# D( Q2 e5 c) nprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
/ B/ P- s7 D0 w5 s; [/ n} " F: i! p' c7 E
printf("\n");/*每一行后换行*/ $ y4 F3 g8 k, M: E
}
$ Q. `! b* A) C* u. G}
% A, v: f( W) l4 l8 m9 B==============================================================
# k/ O" a: L# I! l6 ]/ C【程序9】 9 v8 ^; b( `5 j$ |& w/ k# d# `" c# `
题目:要求输出国际象棋棋盘。 0 K) u2 p( v, P
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
* F/ Z5 c4 G8 W# w& G" w1 J: g/ v2.程序源代码:
7 {" N+ l6 e1 B, g( W, z ?; j/ P#include "stdio.h" 0 [5 M/ {! J V+ I2 ?. a/ ?5 d
main()
2 |% o8 k4 Q4 h1 u- s7 s{ - ^$ h( m( R# W# B/ S- _
int i,j;
( F- N. F" s/ \: t" O6 Yfor(i=0;i<8;i++)
- s4 n! ]; C- y{
0 m8 }3 b2 h6 z) c- ` _for(j=0;j<8;j++) 9 V: l- ~5 ?/ P) e# f' {
if((i+j)%2==0)
* ^$ I2 h# {- X6 _6 h0 b+ o) O. e; eprintf("%c%c",219,219);
" C& P. o( o; Delse
8 e& i7 M1 C; C& I X) J: Sprintf(" "); 1 p7 J* v- f. r3 t4 `( S
printf("\n"); + c3 {0 |2 `7 I/ X- B( h# b
}
/ {; A2 S8 S) s% e% Q. w( Y0 u/ M7 n}
; t T: D0 J$ w4 }: l8 _ s============================================================== ) i& e# b& }# S4 Y" o! d$ B
【程序10】
' u# v; X# u; ^$ o6 a题目:打印楼梯,同时在楼梯上方打印两个笑脸。
4 e& W% G/ N/ j) v2 ?% J1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 . j' U! J5 b$ Q$ a( C4 w
2.程序源代码:
$ @4 h2 `% m, [2 E# _: @#include "stdio.h" 9 [) |: _% m z5 n3 \% u
main() / _9 p7 E: s! y/ y6 O' `
{ ; v( G ~4 L# {, {6 P
int i,j; 1 T' A$ e+ n6 ?
printf("\1\1\n");/*输出两个笑脸*/
% l8 [. T: p2 `8 Efor(i=1;i<11;i++) . F% }) i% Y! N2 D5 G) @
{ # j4 s- O$ g' w. n# R
for(j=1;j<=i;j++) $ y3 R' W( Q4 E4 f5 X3 S# E9 v3 c
printf("%c%c",219,219);
: J; S3 `; P+ \( O9 ]printf("\n"); 8 g) H ~) x( G
} % ~% ^1 P- z6 d, S) V3 ]6 ]7 W. T
} 0 z7 l, V* S0 H, g
" M5 h! m" C6 o* g" I, q" _$ g
8 {! [& M* Q" |* N: p* Y
) q0 b8 {. v; p& f# E
作者: zhlei81 2005-1-22 11:29 回复此发言
2 F6 z; K# E, A$ U9 L8 f! j! B* f$ O) m' ^
--------------------------------------------------------------------------------
y+ k& v% k7 n7 W
) [* f8 w2 D1 y+ P9 \; F3 回复:经典C源程序100例 , h: ` w( q" n$ i" z% G5 t- G$ x
【程序11】 6 _) u; N K7 G) i
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
; I, P7 @6 _. [( o9 z- W2 G: z/ q后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 8 F6 u* |" j8 ]$ P
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
* F0 z( d+ y1 r5 Q8 k$ Z$ n) \2.程序源代码:
8 C, x( Q9 q$ a5 Mmain()
2 u c$ o% q" |& c/ b( V{ 8 \/ M) n# G3 y$ e" A3 d _
long f1,f2; % F8 W. a, o$ O
int i; 2 T$ o8 r; p1 h0 j' N
f1=f2=1;
) M" R- Z! F% _% i- ]: [for(i=1;i<=20;i++)
5 X6 z+ f+ G& D{ printf("%12ld %12ld",f1,f2); & U" e+ P4 \2 F' H
if(i%2==0) printf("\n");/*控制输出,每行四个*/
1 T$ E& d$ R" ]: `) v% q. J) Of1=f1+f2; /*前两个月加起来赋值给第三个月*/ ! g/ {1 [4 r4 z2 n) V0 @# ^
f2=f1+f2; /*前两个月加起来赋值给第三个月*/ $ r7 ]6 a7 ]! L4 k1 i6 a
}
, }! {2 ~4 n" B* v, P9 F} " V i7 |6 q" N4 D$ z/ {% ~1 t
============================================================== ! S' q( h2 }' W, Q: Z) v2 `' h
【程序12】 2 ~2 X3 K0 v7 ^+ h: \8 E( _. V7 [
题目:判断101-200之间有多少个素数,并输出所有素数。
$ l7 \7 j2 D. H/ [6 J9 ?1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 5 F2 u2 J; {/ q( P1 A6 A* G- M
则表明此数不是素数,反之是素数。
. V Y, e/ j5 Z6 T& t' [, x! r4 n2.程序源代码:
& p( c6 I1 A0 d; V% O8 N4 c# e$ d#include "math.h"
' q! g) Q; x$ L3 w' }main()
) {1 i* h2 m! N W+ I! x{ & h' m$ S0 S* [* Q3 k3 [& }5 T
int m,i,k,h=0,leap=1; 8 r5 i4 N1 n+ S2 K2 Z: W0 q: G
printf("\n");
; U! y8 d0 g/ \% o9 H& Rfor(m=101;m<=200;m++)
+ y7 S8 j F4 R8 }1 e! @" z{ k=sqrt(m+1); ; }' n3 K' u$ s9 V
for(i=2;i<=k;i++) 6 |; d6 E: v3 g9 G9 s, o
if(m%i==0)
/ K$ z: v3 r' h$ r) W{leap=0;break;} # z0 m$ i& F; L! l2 p6 f( x4 p
if(leap) {printf("%-4d",m);h++; ; a9 t' s3 R, E' l% H
if(h%10==0) ) o0 h! g- ~0 D @% A: L8 K
printf("\n");
& ]) l! K2 Q8 X( l; A}
( W! r1 ?3 o3 B0 @/ a+ q5 `leap=1;
) A* C. U$ Z, h! M& p5 ?}
# j3 T: G/ A5 N0 F" T0 M$ s. vprintf("\nThe total is %d",h); 8 i& _* h0 h8 C) `+ v
}
0 y# P/ n+ W% a==============================================================
6 t" \. Y1 l/ D【程序13】
2 l$ ~1 X1 _' o4 H2 O- `3 G% c4 t题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 8 x5 [* k9 h2 B2 w
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
7 `4 C1 |- O5 {; w. ^$ j( A1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
( T$ C9 c) c! ?1 Z5 `2.程序源代码:
1 F( P, [1 S/ F" t( Smain()
' Z2 x! ^4 B# C" f{ 7 m, s1 \* \! ~; u2 K: h% w, S
int i,j,k,n;
* _% S" ~5 |# l* U+ f0 ]9 ]printf("'water flower'number is:"); . `2 J) F' Y2 O, L
for(n=100;n<1000;n++) / v+ _2 N9 o* R& T: {$ a
{
: x$ H! W0 d3 B8 Hi=n/100;/*分解出百位*/
% Y! z" C( Q9 W7 h" ~9 K7 ^# ?j=n/10%10;/*分解出十位*/ ! p6 v9 a1 V# U! ]; L
k=n%10;/*分解出个位*/ & L% b; q, c: n3 }
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) % u& P" Q ~. f/ l3 d! A$ ?. f
{
" ~ |- K; I3 }" Dprintf("%-5d",n); 0 H$ M$ K$ n0 A1 O: x
} , v( L/ {* j: e5 O
}
4 x4 S$ L# B+ v: |$ ^2 uprintf("\n");
( O9 b0 j! Q- k} 0 n% V4 F9 F; M5 x, C/ d7 I9 f
============================================================== 8 t" g0 ~3 v, D- h" ]; q
【程序14】
5 a! X/ l4 b* i7 m题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
3 w! a. v) L3 M2 ^) k; Z1 w1 k+ ?( P3 A# C [
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 9 g' v/ a% ]+ o
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 2 _, _* f9 [* a1 @0 _5 j% P
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, ; O2 m* d, p* [2 f$ o
重复执行第一步。
/ J+ C; f$ Q5 X3 ^9 T5 [(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
) r% O- Y: _$ }7 E1 |( y f6 c
% C' M6 [5 ?8 j5 ~' q. {2.程序源代码: 6 b# q# D, j5 {$ D
/* zheng int is divided yinshu*/ $ o% n$ ^1 a; s* I0 d
main() $ J* B1 T, C9 ]% _) C: U U' ]
{ ; b* L0 j1 |# V" l* e" \- w0 C( h
int n,i; , w" t8 O6 F0 k! C$ Z+ E# q
printf("\nplease input a number:\n"); 7 n) L! p% P9 K# a. I1 l$ o) L. i2 h
scanf("%d",&n);
- R# _1 r, ?" Z9 ?printf("%d=",n);
$ ~2 v) E: n, B+ i/ Ifor(i=2;i<=n;i++)
9 G& g5 W% S2 T# n* B{
8 P+ k5 l) y A7 n7 c( wwhile(n!=i) : y4 z6 F5 g- j0 C4 u
{ 2 u9 @7 s6 K6 E3 w0 h3 K
if(n%i==0)
% m/ ?& J: i' {) h# y1 c{ printf("%d*",i);
* \6 |5 \4 U+ _) m/ pn=n/i;
# o% w9 V& R) ^+ Y4 N& p0 r5 b} 5 H4 e! T! H* Q- q4 Y; u
else * _ f9 v0 _) a% G' I$ _
break; 3 M' p% b% c z$ B
} ! T i z1 X& N9 k X. h* K7 g7 S
} & n& @6 \ r) _- ~9 s! O, J
printf("%d",n);} : }* J ^: a% U1 f$ u7 \6 [, s; D
7 B& J* F5 Z2 x) o% q |