【程序8】
, E7 \* O7 L2 Y9 x1 B) C题目:输出9*9口诀。 # _! Q" k" A @6 R
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
+ X+ ~( s) H# y! w1 y2.程序源代码: - `# Z) Y4 B9 ~; K( P
#include "stdio.h" $ q# j# c1 J, X4 K0 j
main()
% A! |- I- W! ~) w* G6 E& B/ l1 H{ 0 g7 k2 n) D$ l, p5 s, O
int i,j,result; & p$ f& j( l6 c, ]0 c* h C
printf("\n"); ) m. A& s& z) t2 L" G) y( J
for (i=1;i<10;i++)
- l, P g( l( \2 ^, r{ for(j=1;j<10;j++) 8 c4 I- g& M- O* |4 q: [
{
6 m# o |/ m2 z0 Rresult=i*j;
8 }4 W G4 G1 C) D# Z- lprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ 4 J6 N* W% O$ h. C$ N3 |& v( y
}
) K2 u. f+ O3 ]) M" u+ ]' k( sprintf("\n");/*每一行后换行*/
8 l) K! s* B8 X N/ ]/ ]7 ~}
7 i% {- R" f) v5 h7 a; k+ f4 ^, @}
0 \3 V: z5 k- G& z0 A5 _7 W; m==============================================================
' @+ E: P- u' @. S" X" B【程序9】 # r) N3 o0 Q) Z4 l; r1 F: u
题目:要求输出国际象棋棋盘。 8 \; d/ b8 K, Q) K0 y, N
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
- b. ^7 X1 F; l* J3 @; D2.程序源代码: * \; p H7 l8 J& Q5 \! _% S
#include "stdio.h"
+ u+ t& o( @7 x, [$ j" X8 S" Gmain() ( b* p! I r' A/ ?( l
{ 5 l) M! f: n5 y4 c8 v k5 K
int i,j; $ _9 Z. y8 F: V/ z: p5 l5 }* ?
for(i=0;i<8;i++) 1 G4 w6 W2 u& }6 a, _4 W$ N8 t
{
- B& @9 b, ?: x1 dfor(j=0;j<8;j++)
# `' g. }9 C) H5 i" K8 cif((i+j)%2==0) # j; j" ]4 v* v+ y; I) E
printf("%c%c",219,219);
. L1 ~0 ~" H% ^3 `else # g4 c1 v* U% R' l
printf(" "); ' r& n) S$ s2 Y) y+ r9 R5 i) d2 [
printf("\n");
! o0 c# F' ] P' K! v! y/ Z} 3 k) D/ d& I Q8 L2 `. V+ @6 A
}
5 A$ r% H J4 P) R$ g) C; _============================================================== ' N7 z5 h0 Y1 X$ [; p! U
【程序10】
9 n: s0 ?- l7 j$ N# H题目:打印楼梯,同时在楼梯上方打印两个笑脸。
% K& q7 f5 A. r" C1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
# P6 f! ^7 ?4 W$ q3 _7 `9 }0 ~2.程序源代码: ! Z- D: O! |" q9 j% t! J
#include "stdio.h"
, e% [9 z. x3 V! G- q% Pmain()
* K( q& f) w; t7 n{ ! d! V1 _: H- m% `
int i,j; 3 R8 F/ k, ?, k$ U
printf("\1\1\n");/*输出两个笑脸*/ / G- T2 B+ V: K I' M
for(i=1;i<11;i++)
1 {9 v: s5 T: q( T: z{
6 u# `" D7 C9 L# s+ _5 sfor(j=1;j<=i;j++)
. T X) A2 O. P1 z8 Wprintf("%c%c",219,219);
5 H: t! J$ _( s! @6 o7 w: P5 {printf("\n");
p; v$ Y) e" G0 l* |: ^: a( m3 ]} n( G0 T( W+ x7 @
} : g, |4 F5 B& e3 E+ f" H
4 z; [ d& L/ ^" R; {
. @( {1 B: y' h4 j& c7 a# d
; E9 V" M" k. u# }8 m% i作者: zhlei81 2005-1-22 11:29 回复此发言
" H* Q' U8 {8 w2 H/ v" v5 \9 J) b, d
-------------------------------------------------------------------------------- 4 }1 e" W. h1 {7 M; Y6 e& C
3 g! r$ u. }0 ]7 s* `6 H' Z
3 回复:经典C源程序100例
3 B9 Q7 T- t$ O8 u【程序11】 # b; K; V2 F2 G, k1 Y
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
# ~3 b; W/ o0 _0 h( s) f, W后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? & q6 j2 G5 d- w z2 |# t ~3 @
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
- \; x @9 ?% A" m8 `8 m6 m1 x2.程序源代码: ( g2 e% r: c7 v
main() " @6 M& ~# o! e, p! f9 O
{ . }8 F9 ?) n' W( Q( B; N
long f1,f2; . N+ I: K, K, P0 `' G
int i; + V; _% z+ Z/ x2 c; ~; p
f1=f2=1; 4 t/ ^1 X: ]* ~/ ]
for(i=1;i<=20;i++)
7 c4 y; B0 Z$ b- x9 c7 C) c{ printf("%12ld %12ld",f1,f2); & G5 G- I! M- F1 E8 g
if(i%2==0) printf("\n");/*控制输出,每行四个*/ " D% U9 ?, q" `
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
, B9 x( s: e% y; sf2=f1+f2; /*前两个月加起来赋值给第三个月*/
! [% [. E, X( ?' f} $ U4 H7 m/ D0 `$ H$ ?; a) J; y) j; S
}
" b, l' O& J! G& ?/ K+ T- Y9 f: X============================================================== . t' b# ]+ z+ m. ]
【程序12】 : N" l' ^( R6 L4 _ Z* e1 l" X
题目:判断101-200之间有多少个素数,并输出所有素数。 / A2 s/ ~8 T7 B" A, a. S. G
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 4 {) H H/ j2 f1 R- L5 x' _" {
则表明此数不是素数,反之是素数。
0 }' R5 ]/ [8 A1 _0 {6 k) I3 `2.程序源代码: 3 s, S; c% K- D4 q+ F* u5 h
#include "math.h"
/ q" ^ ?# z D, _& }* F$ Zmain() 5 ^$ O9 x" @& }1 `, S! s# F
{ ' _6 {+ Z( g( X ]
int m,i,k,h=0,leap=1; ; X5 b# d, V7 |% D9 _8 t
printf("\n"); ( a( |+ B# ?6 e! R+ S& q9 X
for(m=101;m<=200;m++)
( n' c$ N+ ] Z1 T{ k=sqrt(m+1);
$ m7 b" S1 \9 X. W) }; i/ Ffor(i=2;i<=k;i++) 0 r$ {' L1 F& k
if(m%i==0) 3 l4 c4 ]& J0 C8 F, ?* p9 u
{leap=0;break;}
8 a1 H& R6 B" o6 G0 ~$ @6 Hif(leap) {printf("%-4d",m);h++;
. B' H0 l# K' y2 |9 a1 xif(h%10==0)
+ m z7 Q2 X" I% E& J8 g( a) i0 mprintf("\n");
1 h4 U0 O) H; o; Y1 }) C}
2 a( ]& q# d8 V& xleap=1;
& Q, F( V4 t9 Y! g/ T) l} " }2 |! |! t$ F: R6 V1 ~
printf("\nThe total is %d",h); / a' ]0 r D, ]+ O8 g
}
* H4 x+ w, ]/ W. u==============================================================
9 {: a$ F4 S+ _/ s" r N f' g【程序13】
T( z5 E4 O' D) Y题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
g% d! V( ~- f; n7 E' U u本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
0 a- _" \4 z( D3 C/ ], W% `1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 ' K1 S) z- G4 w$ B
2.程序源代码: & u9 @% r7 k5 n
main()
! p' y: [+ ~' n) }1 N" k0 h{ ?. Q- d) M# X5 I: \( q y: g2 Z- z
int i,j,k,n;
* x( T. H" F* ]! u, Qprintf("'water flower'number is:");
# a/ O7 k: q6 O* p0 v! I9 [" nfor(n=100;n<1000;n++) - }$ N* u" O! X8 \
{ - j0 H9 T2 _) E. ?* R! x
i=n/100;/*分解出百位*/ # g1 @8 O2 V; M! |) C
j=n/10%10;/*分解出十位*/ 7 V( @9 N6 d; l
k=n%10;/*分解出个位*/
6 a! Q9 m2 d$ ~+ J& @if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
% S: [6 n/ k7 Q* c) A{ 6 S8 q, Q( _# c' k& Z
printf("%-5d",n); 6 j$ F/ |( o* A) u$ r3 X% V) m- x
}
: |0 K/ l: U' ~) z}
8 j$ H Y+ ]% K Y# o. w/ zprintf("\n");
l7 c) B: x; D1 _- m0 W8 a( M \}
; M" Z$ t* o' B' A y, D==============================================================
1 q4 D# i. z+ Q& ?3 D. I. E* J9 y【程序14】
* L* V2 U- s- g2 K题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 G6 e7 w I1 G$ z- d
9 D2 f9 z5 U9 g, N5 `2 n
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
5 {; A6 e. }4 u$ N; Z! `: q: ](1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 ! U1 K# \/ {6 I" `5 W9 M) l/ D6 A
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, , Z9 b. G* y* u- B+ w) t! i
重复执行第一步。
0 c, P/ e8 @6 D# y(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
7 ]" b* J1 _% h4 V! B( s( l: ~" v
$ I/ p3 m! | k5 H% D6 S2.程序源代码: / V$ |5 E7 E* X1 R- n
/* zheng int is divided yinshu*/ 0 e, ^8 k) M: a5 C4 f, q
main() 3 Q! d6 e* E, ?9 J1 e
{
& a+ {1 z2 V J. v; l2 Xint n,i; 7 f. M, K$ b% |( ^8 j. J
printf("\nplease input a number:\n"); # S* Z$ O" h7 c+ `
scanf("%d",&n); ) _0 k0 S! C4 I3 h8 \7 _" {
printf("%d=",n);
. I0 D {, q" c3 [0 T1 yfor(i=2;i<=n;i++)
6 y8 P/ x) }! N+ S4 m. l{
. [4 I; m1 H. {+ }7 Z2 `; N* [while(n!=i) ' s, ?, |9 B: o/ u
{ 9 }! t5 f% M+ V5 a
if(n%i==0)
# F# ~6 ^& I0 s$ d2 S, v5 d{ printf("%d*",i); h4 v7 G+ I& G7 {$ P6 X
n=n/i;
$ f x: J6 s1 H} * y" M- l- c2 J
else % s1 v, S- f( r" r" N
break;
) |) u: J0 c+ w}
~; V# v* c8 [7 I( T* T}
; Y( S0 u0 W' jprintf("%d",n);}
3 n) b# p( ~ j& P: E y8 a/ l7 o6 T+ H. ]
|