【程序8】
7 P) d& ]4 `. K* {题目:输出9*9口诀。 9 g2 I% D& P. X1 Z; G/ _# S# y
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
6 M- D# h& F) \7 k* q2.程序源代码: 3 C) k* ^ E4 X" `! b7 L
#include "stdio.h" + [; s4 D* K0 ~0 G
main()
7 I- _" l1 q* G! k2 ^ n2 J{
; \' o) g4 ]& \6 ~int i,j,result;
9 l! \) P$ I4 @6 x9 ?+ kprintf("\n");
; f& N* A7 y" Y- _+ Efor (i=1;i<10;i++) $ p% B9 r. B! m
{ for(j=1;j<10;j++) ( k2 ~! B1 u9 `
{
M L9 L& h4 [1 r, e/ \; X. X/ Bresult=i*j; : D2 e% Y+ C$ e- S5 S
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
7 V, M2 x5 H! Y} 3 E I0 ^: [" f& j% B
printf("\n");/*每一行后换行*/ ( a- X7 A, |) M; o9 O
}
- { }. y) L' w2 q t}
1 `! \* I' E$ Q( ~" F3 U+ [4 d============================================================== : {% g+ Q s* E/ Z* C4 }
【程序9】
) y( |8 x) W4 u% H& q& S. M7 R题目:要求输出国际象棋棋盘。 5 Z- \7 ^2 B7 s% ^
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
4 I6 \. }6 R8 d4 F! H" v2.程序源代码:
z4 r: [. e+ s4 @$ R2 x#include "stdio.h" / ?9 R& z) U t( u
main()
4 x" J Q9 \; d# E7 r q{ , Y4 ~" v. r3 g1 n& F( W2 P
int i,j; , ^- [7 g" s& A" d, B% E
for(i=0;i<8;i++)
1 |! }, T4 n, P# B1 B8 j{
8 s# _. R @/ g; s# Y9 k0 }for(j=0;j<8;j++) , B" [7 ]+ V. L1 C' u* U
if((i+j)%2==0) 0 @9 a! N3 Y, \0 e/ b
printf("%c%c",219,219); ) o8 E) z6 \, d; }
else E* v8 S+ ?% N7 C- Q( ~
printf(" ");
/ k8 C0 W$ C$ x4 }; o* K3 r. Nprintf("\n"); ( Q) P( A8 G4 q( P( e4 y
}
% n3 F7 i0 R8 N} # A' e$ {) P2 l8 @
==============================================================
( ^- ^: S; F" g( z【程序10】
a( P6 t* j6 x( e: i7 ?) N题目:打印楼梯,同时在楼梯上方打印两个笑脸。
- k% N7 Q+ P8 I6 [ R- i% |1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 8 U4 z0 G/ S! X" P
2.程序源代码: ) l* T( s9 G. r; j/ Z; d3 Q
#include "stdio.h"
! s8 L/ \: D0 P( Q& k* P4 C4 u1 gmain() . n* ]9 l" I0 G3 g+ L: [
{ 3 {- v" m+ n4 `* i) X' _
int i,j;
1 t E3 f; K8 W! k" bprintf("\1\1\n");/*输出两个笑脸*/ / V4 H9 Q" i, s) j# E
for(i=1;i<11;i++)
. i# h9 }) C' m" r' O3 ~{
( E1 n! X e3 a0 Z& D8 g! vfor(j=1;j<=i;j++) & n+ {' t: ?; ?1 b" X5 @# }5 a
printf("%c%c",219,219); : E. w4 l& e, _9 b( a! W& ~
printf("\n");
- p+ |- B7 R. g* H8 Q) f3 n} 7 O7 L+ T% w! C
} . [9 ?. a3 k1 a
( X" k6 y1 h2 U. H4 k
0 H( O5 I4 i/ |6 W
5 V) j* I$ D$ V" R作者: zhlei81 2005-1-22 11:29 回复此发言
5 o+ r6 Z+ F4 ~4 o0 p# Y1 D3 G# R6 o7 K+ X
--------------------------------------------------------------------------------
/ o2 ^( _3 _7 ~5 {! [
6 e( C W+ [6 {6 s. G6 C1 I3 回复:经典C源程序100例 * p+ x* v! s; c4 e; w, d3 T% b! n
【程序11】
2 R( D5 j5 \% S7 b3 l. }3 B, N- c6 K* i题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
( V1 Q- z1 B6 F$ P7 u* e后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 e) S. |$ |& M7 g# z3 |
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... " w* x- I7 K; T8 L/ {+ h" L; z
2.程序源代码: 2 J* U8 z& J- G# b
main()
6 q/ m9 |- o4 W{
% J" N: }6 q( f/ D& Flong f1,f2;
% l/ x9 k# a, L N3 f; r L: oint i; " Q/ P; l I) m4 Q
f1=f2=1;
! j+ d) w' m' ^' ufor(i=1;i<=20;i++) ! q, ?/ g( M: _, w: d
{ printf("%12ld %12ld",f1,f2); : l% s: q6 |1 k) y! `( O
if(i%2==0) printf("\n");/*控制输出,每行四个*/
9 A& A8 u/ z" Z# u" cf1=f1+f2; /*前两个月加起来赋值给第三个月*/ 0 C! |$ S7 W" u5 ? r
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
/ y$ [9 I8 G# Y7 u9 v} 5 T8 O" K J5 g! A
}
' u: ?+ S e& B% U============================================================== : F& M' Q% S8 ~# Y4 Y
【程序12】 : T6 M! c& Q+ U3 |
题目:判断101-200之间有多少个素数,并输出所有素数。
9 W) k7 D4 ]+ m1 N/ J) z* A1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, ! l( ~0 _) s! y& J
则表明此数不是素数,反之是素数。
& b% d' M# V4 ~* \9 x" p2.程序源代码: * P$ r ^8 p3 o* B6 B
#include "math.h"
* J6 j6 Y9 b9 e% {1 p/ O; O7 `main()
; @6 N! [! m! q% W1 q7 U{ 6 x4 G1 ?' ?1 ~' U. s- s: C4 X. F
int m,i,k,h=0,leap=1;
0 G1 B, c6 l. x+ ^+ i4 S* nprintf("\n");
, I' m5 J8 ]$ E3 A; T0 Ifor(m=101;m<=200;m++)
# T g- M# m# d! F{ k=sqrt(m+1); 0 L }( a, y$ S6 T; G/ U: n( ~) W
for(i=2;i<=k;i++) 5 y! T& P' G f- n0 L4 L
if(m%i==0) 0 C( y+ P0 N" c# v6 e5 Y7 o, R
{leap=0;break;}
! B x/ a3 z2 Y0 h* lif(leap) {printf("%-4d",m);h++;
! t, ~7 B" B" ]! m0 N, g7 h9 nif(h%10==0)
* o* l g' e+ Z& Yprintf("\n"); ) F4 ~. p+ a# s; U: A8 |2 j% I, X; ]2 D
}
3 ?- m' g$ J4 F0 Wleap=1;
& m2 w5 N6 L8 k}
, r: r8 q o! `+ L1 z, n8 Cprintf("\nThe total is %d",h);
9 J8 o2 s+ |, j( u S+ U}
* [1 w5 b3 e4 m) M ^7 I- Y============================================================== , P* C: @/ c! r
【程序13】 N8 B& x2 {4 c/ Z
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 1 x$ L+ Y; x, L! x- @
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 : N& e$ L0 @8 I1 q5 v
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 & s1 G1 @8 r( {' B9 K5 |
2.程序源代码:
) R- e* J- @3 c7 ^- rmain() ! m" z& y' S( @# l/ T5 M Q
{
; j7 u0 L: O; R% ]( kint i,j,k,n; 2 t) u5 @6 U d% `) c% z
printf("'water flower'number is:"); ! L3 }' U0 d. g4 R) L8 y, }
for(n=100;n<1000;n++)
. j5 u. L- F' O$ [. F9 y/ v& ?{
& c0 D" o. Y1 ci=n/100;/*分解出百位*/
( \( } N# K5 S" l( _: G' J( d& Kj=n/10%10;/*分解出十位*/ c- L; F+ i' j; r) ?! w+ w
k=n%10;/*分解出个位*/
& O8 T6 D- T( G1 Qif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) : @+ \! G) p; o" a @
{
! _+ |+ c9 w# w' s+ hprintf("%-5d",n); % V$ b( ^+ c8 U! N
} * x- K: e1 U# |. U
}
) l* H1 e8 y! F* W: vprintf("\n"); y, i5 h6 Y5 Z, Y9 W! a( ]' u5 A
}
; D( b0 ^5 \$ c# s: r==============================================================
9 K6 u9 P% D9 X: _3 @【程序14】
a4 x2 @" q2 p4 X7 n7 }8 A( V" ]题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
. d8 \# C* }2 p1 b$ X9 d6 z" b" W2 b$ B3 n7 y
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: / u8 l$ v1 d0 ^8 u: M d1 w
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
! m p9 U& l: k }- f Y* a4 x(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
/ O' f* c( p9 U重复执行第一步。 & |, ^ b' A- ?
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
. H D; m2 V* @7 D0 I( W, o$ i& E% A1 t$ g
2.程序源代码: 7 `& ~0 d& N7 E9 q7 M/ g+ Q4 }) [
/* zheng int is divided yinshu*/ / v- d, o: D& ^9 r
main() 2 H4 i0 c$ w- K3 g; |
{ 5 C. t8 Q- V% s6 m$ i) W
int n,i; , K7 i6 s; i- q( z" ?! }
printf("\nplease input a number:\n"); 1 n2 y- F3 B! Z3 O
scanf("%d",&n); 0 U. z$ t& r4 u
printf("%d=",n); - p6 ~9 X# o$ a5 h/ s# |. J; X
for(i=2;i<=n;i++) 7 K2 n( O) w3 { d# I9 E2 q/ c$ ^
{ 7 a8 k" E; g- E
while(n!=i)
; L9 t: W5 n' F$ B% z4 a( k; i{
8 n' @( H0 f9 @! N. y# w! a8 h' {/ t3 u9 kif(n%i==0)
: G6 o# x- ~: Q7 m, h4 m M{ printf("%d*",i); % n1 ~* Y- \1 M0 W1 Y1 b* a
n=n/i; ( f; F6 Y+ Q! a6 k a# P# X5 Y
} / B5 Q" s# m# M# |
else 6 ` H+ d$ P1 Q$ ]
break;
( w( y& g: @ Q/ A# c}
z3 |1 k: V+ t' D: U! Y}
i8 u! m& c t5 U1 _printf("%d",n);} 0 W4 L3 |/ Q) G" ~$ f+ K0 p9 j8 S
- J, I; w; P0 h' ^2 ] |