【程序8】
- I0 s: J2 }1 b3 I4 ~6 h题目:输出9*9口诀。
6 ~8 ?! L3 ^* i: ?/ W1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
K* h# `& z: S) D0 A" W. b2.程序源代码:
: O. A9 n6 C$ J( B#include "stdio.h" ' g c3 o7 {, o
main()
# c5 k; T0 p( _, e& u0 J{ : x& _# K( t/ V6 [
int i,j,result;
( f9 w4 |* r2 f+ c% Vprintf("\n");
9 I/ r/ j# q9 c/ w" wfor (i=1;i<10;i++)
. Q! ?: l+ l) f{ for(j=1;j<10;j++) - c! T7 g9 @7 k5 [# w0 c* c
{
2 O5 r1 m( F: D/ b# V& Gresult=i*j;
2 w a5 n) N0 _printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
( Y* V; g0 x, c$ n0 l8 |}
" |# H9 T6 y; r( t9 q+ R! Fprintf("\n");/*每一行后换行*/ $ {; r0 j, n7 Y' H4 n% B% D
}
* ~3 N- K5 _& J( }9 C2 u+ H} ) H+ u: c3 d3 X( B
==============================================================
9 y; Q; V3 r8 f& L5 }【程序9】 * m" |( E* F# y# R* i
题目:要求输出国际象棋棋盘。 $ s2 v$ \: D5 W( P: t& h$ @7 N& |8 v
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 8 ?# m1 D3 ~$ \, l
2.程序源代码:
% Z8 Z5 T' ^) p& y#include "stdio.h" 3 q9 Y" `/ |/ T# t
main()
4 o0 E2 _6 i6 ^! d8 y( q8 s \. S( g* k a{
& }9 f/ A" F* ~; [ O& A: H# I! [int i,j; 0 E: b% k9 y' R0 o
for(i=0;i<8;i++)
- q& O0 d6 W, r% Q4 }% U{ k; Y7 L9 D7 I( `) x9 f6 S' f
for(j=0;j<8;j++)
* O" ?9 E3 V% r! e3 Tif((i+j)%2==0) : g4 f- ]2 h$ Y1 ^4 `
printf("%c%c",219,219); 4 N- [1 c; g6 X# O. q& N& L2 X
else
; y+ q4 t! y. ?- z$ j9 Rprintf(" "); 0 c& P1 e- _9 L6 c3 E2 d3 }
printf("\n"); , s) k( d$ M; n) ]
}
* f( I5 Q* @" H5 ^) G0 z" c} . J- Q: U; v: e2 Y, D- ~7 t7 O& w
==============================================================
' d1 m! t9 m, g1 E& b3 Z7 [【程序10】
7 D: x% k& t8 ?0 P% _* G" W8 _) e题目:打印楼梯,同时在楼梯上方打印两个笑脸。 % { ?$ C. S9 X; y
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 ) `2 S& K1 }9 v" S$ v% ?6 c
2.程序源代码: , `8 k5 E+ c( u: K, z) `
#include "stdio.h"
$ g& K& i( Y! k' ]2 u6 [; ?main() 4 [" p# r1 [* O# Q- a
{ 3 d9 \$ H' [1 Q( F, g8 Y" ^5 b
int i,j;
7 @8 M k* A" [4 kprintf("\1\1\n");/*输出两个笑脸*/
3 u) I$ W- m6 L, Z6 v& Cfor(i=1;i<11;i++)
c9 {3 @* }9 I{ / o4 s4 l3 [7 c% u- V1 M; o
for(j=1;j<=i;j++)
. B5 V* a: ]) Xprintf("%c%c",219,219); 0 D+ P8 O( h, c% O" ?# s
printf("\n"); ( G( y( \$ N8 E' t1 z( Y- M
}
: Y; z& ]; h4 o* A. D' \/ E} , A" n! M" P1 L# P7 p( q
2 L, C, c1 z3 D: F6 o2 b, D1 A
8 Z- b% l9 i$ t* G* h' z. H- U1 P; Y% L% L
作者: zhlei81 2005-1-22 11:29 回复此发言 ; y+ T' z7 t' P, E, |- I+ i# W3 ~
8 H; \* ]( y3 b/ y7 z1 S* \--------------------------------------------------------------------------------
) G/ T! g# k, a( V( ]% v6 y) I+ y# @' L
3 回复:经典C源程序100例
3 A% U# c; W# o: i0 e$ f) b" L【程序11】
+ ]1 v: A2 V; C, ~6 K r7 ^题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
, a2 n; j, q/ u: Z; E后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1 l9 _* ?" [. Y6 Z% @7 {8 Z1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
; d) j' R, s) N$ }* {$ M2.程序源代码: 3 n9 a* u7 r5 o$ `9 h6 S# \4 _
main() ( C1 f' _5 M/ D' n7 |" S
{ 3 s7 F$ o1 N$ ^! q
long f1,f2; , R3 X& O' x; \: E* W
int i;
, u; C6 m& s) K$ Cf1=f2=1; 7 C( k% J, H& p- G
for(i=1;i<=20;i++) $ e7 D7 r+ r0 B4 o [
{ printf("%12ld %12ld",f1,f2); & t5 U% J# N: Z- x7 ]5 z) W8 M
if(i%2==0) printf("\n");/*控制输出,每行四个*/ ( k u# Q0 ~0 V. m6 ~1 k1 O& P6 O, k! l
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ 8 G; v0 D' j$ O! _3 ~3 w3 _* r
f2=f1+f2; /*前两个月加起来赋值给第三个月*/ $ [. g8 A0 O8 @6 u
}
8 k" V; b% ]/ H( R- R3 {4 s}
0 c! C3 w5 ?$ {- Q- ?/ t============================================================== # z9 y, Q1 W4 {2 V2 R* L
【程序12】
8 S9 A/ {2 ]" G, ]6 f, z题目:判断101-200之间有多少个素数,并输出所有素数。
* I+ K. S9 Y7 H* b. s4 k, t! T9 r+ G1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
# H3 u% v& `( u: E则表明此数不是素数,反之是素数。 1 J; \3 p& z& N. b& t
2.程序源代码: ) K9 |4 m' W# c$ W* @, X% Y& A
#include "math.h"
- ^% ~! x" v! [( {6 C- y3 Lmain() 5 c! U' } n6 K1 I1 R8 K, M
{
5 s- x5 ^+ F! ~6 e/ c% e1 m# `int m,i,k,h=0,leap=1;
1 z' o8 H' B- `- @1 _) ]printf("\n"); ' x, `$ A' T9 f5 s7 Y
for(m=101;m<=200;m++)
9 `' H7 @/ e8 `% | d: h{ k=sqrt(m+1);
% T* N& D6 x0 Efor(i=2;i<=k;i++) " Q/ B+ C( L- b: X* o
if(m%i==0)
6 p1 R8 k6 f- o; x. ?2 D{leap=0;break;} : Q# p% G4 N3 i1 q
if(leap) {printf("%-4d",m);h++; - F- N4 r" z7 N# U0 Y, x8 E* b1 l
if(h%10==0) 4 Z8 C) s# a+ p$ `
printf("\n"); ' ]2 r! n8 i, i# @8 A7 V6 S5 C
}
% I& j( ?0 N) u' K6 b5 \5 |leap=1;
' l4 U# m" M. u2 Z. G+ _} O `( m/ e K7 c- ^& Q
printf("\nThe total is %d",h); * M0 j9 E) E+ H: \! T9 Q
} . J. d& d) u. S9 O# {# a# R. m
==============================================================
% D8 t: g- W$ l- P" ~# Q5 @【程序13】 5 z9 \6 s( X- k* r+ V' K
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
. x6 s" ?" o/ n5 d {本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 : }" a0 |7 y) t3 ]0 `: T7 F
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 # \, l. m. q4 {& [1 K
2.程序源代码: , H8 T0 I( [% P+ H9 ~- [! r) S+ J4 r
main() . M6 C( p; h2 }
{ 0 Q( j7 S, @- z* ~# F3 j5 O
int i,j,k,n;
* `+ i6 f, X7 p' rprintf("'water flower'number is:"); . P0 g! o; }5 x( j& B% P- C
for(n=100;n<1000;n++)
* T. W( E# z8 f: ?+ o1 U{ % j2 o/ P C3 U; ]7 G6 l5 n# J
i=n/100;/*分解出百位*/ - p- |& a2 O3 x) P; L/ u# I& A; G+ {
j=n/10%10;/*分解出十位*/ . c6 v5 ]* E% ~( _
k=n%10;/*分解出个位*/
( A# x, ^( H, l" Pif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
8 T' X/ T& x$ f6 J, x- O" U; _/ U{ / g% I- G5 i+ u* t
printf("%-5d",n); " m0 Z. f- h1 N7 X) z0 u3 N
} 8 h1 f% z$ M+ b: K9 d# f
}
W0 ~3 ~. {/ ?' Y w4 b) q; Iprintf("\n"); & ]8 O% @$ _: N3 D. C' B
} ' S3 y/ o- f* N( _3 `( t
============================================================== 0 u L' y# U' j, ~
【程序14】 : S$ s* v# W7 M5 G* N8 o5 N/ y- {
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
7 s: d# Y7 a- [# u) w# }: e' `( z& W; P% T6 E7 b. u1 `6 k1 D
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
8 V# t; J5 _1 E3 c9 v% p& m1 H. t(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 , ~* a5 |# Y p8 m8 m' Z
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 3 P5 V- L9 }7 Y' H
重复执行第一步。 3 i! f$ Z. W, d1 e7 }1 w
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
% p' N- a; H X4 Y% f/ F) L
3 n1 c( D @" N r" H+ N0 X# s3 L2.程序源代码: # Y0 i! F# K0 W! Y1 M
/* zheng int is divided yinshu*/
" U9 E# ^3 _: A3 { P& f9 e9 nmain()
3 u! L: h* c9 d6 I: c{
& ~) {$ ?6 O) @7 s U: Dint n,i; ! b6 s+ o/ S+ u+ X8 ~
printf("\nplease input a number:\n"); 9 V9 K/ b" k* E9 M- h
scanf("%d",&n); " t& v% r5 Q1 F6 E$ a
printf("%d=",n); ; A$ r: r) O! w2 ?; r
for(i=2;i<=n;i++) 8 a3 J* v" H0 X7 t, E+ b
{
$ F4 ^ `0 F$ p/ `3 C' @( w- Uwhile(n!=i)
: S# z9 c/ v: p1 P8 b- X3 j3 R$ [( h{
( q/ R/ g5 k8 b5 o) Iif(n%i==0) / m- C; W8 g1 M" J/ M4 w
{ printf("%d*",i); + Q9 \" o) Y7 L% k# W
n=n/i;
5 ]+ i% F5 y; u* t" B) }8 k, W}
% B$ n4 U$ p/ P8 Y: V3 Velse
5 |! k$ s8 \- b: v4 ibreak;
% i0 a5 j% p- h/ a$ J- J0 L# G} , t& x O" I3 F/ x' o
}
% u4 a$ s u9 n5 Xprintf("%d",n);} / T4 d0 J, r' F+ g3 z% N
8 ~2 v7 Y' h3 A( z, u1 N2 D$ j |