【程序8】 ) H. u( }5 `; S, _ T- I# C1 x
题目:输出9*9口诀。 9 L6 O2 D: G4 n3 I' U. l ?
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 4 P& \+ X/ n4 v" @/ H$ F: F
2.程序源代码:
+ O- Z3 p- G" A6 b+ o7 Y#include "stdio.h" 2 N& u: I1 i; B. B
main() 0 g2 z! b6 u* H, l* c2 d
{
o$ [, L4 z9 v8 kint i,j,result;
5 l- @6 a8 I* z5 Jprintf("\n");
* L; j7 {) e8 K: Y$ \8 q: [0 ifor (i=1;i<10;i++)
" k$ M! U9 W y, G- X( W6 o{ for(j=1;j<10;j++)
- m. j/ V% S G& B/ p{ - r, d4 E& G, A: l) m, v
result=i*j; 9 ]0 D6 y" U( M* }5 j
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ 5 P1 \8 G7 q6 E4 I1 g# A+ s, s
}
. o4 R9 a5 ? W# V5 b- Nprintf("\n");/*每一行后换行*/ 5 y/ z, [5 t, q- I
} ( c/ z1 U+ a) }$ R. l" h2 |5 g( A
}
* A5 E. ?) x" s' V* a4 V============================================================== N( P" `" K4 D
【程序9】 0 S, p* O0 N( l/ ]9 ^% `; M4 |* r
题目:要求输出国际象棋棋盘。 p5 w; U# v$ ?5 D" Z" h
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
; k. E! c5 m7 A. N9 w- [2.程序源代码:
, ^- ~( H9 k2 k( t#include "stdio.h" % r0 v2 g3 a: M9 B
main() . X. z0 w8 |$ R/ B+ T/ M
{
& P" ^* I4 j4 Q# N! Yint i,j; ; u9 W* i; H% I" V* Z
for(i=0;i<8;i++)
% |9 Z. b/ M0 |3 n{
3 I1 F( P. y) @: f: S: tfor(j=0;j<8;j++)
0 t% B+ R$ q( E# s7 K& Uif((i+j)%2==0) 9 E* Q8 C4 \& C# f* Z# L1 l% x
printf("%c%c",219,219);
7 \* k3 q+ {. l" T1 e# Qelse
1 D; G; j. W- K2 Sprintf(" "); * f( g' ]; V8 V9 l, \. a# l" w
printf("\n"); 7 i: m- t( x& i$ S
} - }1 @" h( u& `+ C% |( f7 G# ~9 ~
}
' C& n7 W5 M: p- R==============================================================
N3 ]+ t: O! R5 ~4 [【程序10】 ' P6 O0 d) u: a+ F( W
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 $ m8 R E8 E0 x8 W0 K2 S4 q
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
0 {$ O. t D* e9 K+ _9 b2.程序源代码: 7 u. [" Z0 W9 q7 S+ J2 a
#include "stdio.h" 9 `0 ]9 q ?7 v' U. E
main()
: F0 o3 O& b z/ t9 m3 s8 L7 T{ 7 F# m! [% i9 W; v7 f
int i,j; & V& N/ \( g n( s ~' @. S* W
printf("\1\1\n");/*输出两个笑脸*/
& R4 \" Z, h+ p/ B" p+ ^for(i=1;i<11;i++) 5 v: y3 X4 U3 Z
{ 9 a' W# k3 O) M/ f( [! u/ N
for(j=1;j<=i;j++)
$ w& ]& L" x" Qprintf("%c%c",219,219);
* @# Y: d, e, mprintf("\n");
; F$ m, b0 o$ L |) Z' H' R} . a1 x7 g2 w# `9 K3 R
} ( C ~( j* f! s# c ^
" D! y4 k8 G' [
- n9 L$ Y; O: B, |& i5 @, @; F$ F9 I8 }
作者: zhlei81 2005-1-22 11:29 回复此发言
1 n" y. V6 N0 D5 @
6 G9 j! R" X* w4 I-------------------------------------------------------------------------------- ! ~, t! |3 }; t" g; |5 N3 P4 H
3 S& b1 R x! x3 回复:经典C源程序100例 ' b( w9 `1 \; U7 r! ~# Z% d- K
【程序11】
9 v3 ^ b6 F$ K% k题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
$ g8 U, w& z3 D9 K- b3 x后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
+ b- y5 S5 R/ z% x3 K Z2 H8 I" t1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... : l4 W: Q+ h* U
2.程序源代码: 4 q3 I& X3 ^# M
main()
' E" D1 u- k" E) `8 J{
) E/ F9 G5 _& J. h( S# h* ?long f1,f2;
; d( r' a7 c* C0 b! T& Nint i;
$ h9 F* p5 d$ x; g; s6 B7 i" J8 j$ e0 qf1=f2=1; . {2 _ Y5 e# M4 ]7 u, V4 \% [
for(i=1;i<=20;i++)
; e" ^1 w5 O& |- g{ printf("%12ld %12ld",f1,f2);
7 n6 }% M- e6 b( P jif(i%2==0) printf("\n");/*控制输出,每行四个*/
( u7 m5 F2 X0 l7 g5 O0 s& pf1=f1+f2; /*前两个月加起来赋值给第三个月*/ ; Z- @% e1 O( w3 @: ~. r
f2=f1+f2; /*前两个月加起来赋值给第三个月*/ . B/ B' `7 M! x& S
}
# D/ K/ `$ G" F% J0 f}
$ M- K' c- ~0 Y1 I, \: q2 d3 i==============================================================
7 I+ E/ w/ m8 J" K7 K4 V【程序12】
1 P- M9 w3 C L8 Q d4 Z# k! d' U题目:判断101-200之间有多少个素数,并输出所有素数。
1 `* `9 R6 ]2 X$ I0 q1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 2 @3 b- ^3 \6 C& E1 b/ m
则表明此数不是素数,反之是素数。 # _5 @3 E6 X/ t/ Y
2.程序源代码:
+ F. R1 @! p( q+ D) S#include "math.h" 5 {: b# C1 ]1 g6 S$ s! a
main()
3 j/ u: A1 _7 i& H' E) N1 C{
7 I* l1 a8 ?9 W8 H Xint m,i,k,h=0,leap=1; & M8 r& Z+ k; l) n
printf("\n");
5 H# |! }! T1 ~% H+ d- x7 _for(m=101;m<=200;m++)
. D3 { d5 x0 O$ F( [{ k=sqrt(m+1); % _* E( f' f" ]8 j
for(i=2;i<=k;i++) 4 t3 h: B* |6 Z# P
if(m%i==0)
( ?% W) H: B* z0 l{leap=0;break;}
7 O6 G, f$ ~0 J3 B" X [6 Mif(leap) {printf("%-4d",m);h++;
: `& V; B$ M0 s8 N. Vif(h%10==0)
* W5 t9 L: @" c- ?" Eprintf("\n");
: d% p1 p, D4 l4 O& f( r$ W' s}
, b/ a+ O# P7 }leap=1; ! u/ i% ^- }, W; R7 W; z* t5 O
}
' A0 K; K6 x( |0 V7 fprintf("\nThe total is %d",h);
E0 ]/ c$ t3 R" P} # G" x, w' f6 `3 d. ^0 @
==============================================================
) S& J3 q8 I$ Y0 w+ T3 e! C4 B【程序13】 & h, C: Z+ p5 J4 Q) g3 X
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 & S+ d) i2 V( R& W7 Q U: H3 T
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
2 t( S: y b9 _. a9 P5 _1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
: g- O5 U2 U5 w2 O T0 B2.程序源代码: , J5 s& l b' }) ?4 Z
main() ; x" o( a0 y, b9 M, ~5 ?: o
{ " C+ G, X2 O. I
int i,j,k,n;
6 S7 A; ?3 ~$ [; gprintf("'water flower'number is:");
0 a4 Q. d7 [2 l4 {/ L: ~) lfor(n=100;n<1000;n++) : }6 @" |" O) o* R+ Z, n
{
( T4 Z9 ?, J( mi=n/100;/*分解出百位*/
% f3 S& K" |6 l! b ij=n/10%10;/*分解出十位*/
6 ]7 Y' q. O+ ]* ck=n%10;/*分解出个位*/
) r& p9 d# O1 q. D* Mif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ) L, n9 Q! i5 `
{ ; r z% v z$ Q1 ]0 l O, j6 ?
printf("%-5d",n);
6 w5 F7 C) e/ \6 k: G1 y}
; y6 J0 g y8 j1 Q1 ^} 6 ?* c ^+ d" X5 }0 P5 Z% [" g
printf("\n");
) ?- ? f- A( b6 i' O6 p} : @1 y; ]& V6 @4 r
==============================================================
& A! R0 L* ^4 }; I! h9 Z& V【程序14】 $ L0 m' [5 f) d/ W0 E: x
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 % q% h# F# j( r' A* P" h b
' {4 j( j7 P! b2 q% _) j [9 j. ]
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: " y( b/ \6 D& n& R$ q* y4 S8 e, D* P# B
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
6 ` U8 g0 V$ n+ r, W(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, ' H1 h0 h, Q+ s+ v! u6 t
重复执行第一步。 # ~8 C; `( n+ }5 Q* \- S
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
1 m" w4 K2 D. i) w7 c7 N3 l, B/ `5 b9 e( A# A
2.程序源代码: 3 W% X: w! a- F2 Y
/* zheng int is divided yinshu*/
- O. [! e9 v P+ P. G; Y! V; }main() 6 ]/ ^$ [4 \% G' s( r- H
{ 3 f2 W6 S! C% F
int n,i;
' j. X2 k, F0 P2 H+ w; j1 H2 eprintf("\nplease input a number:\n"); 5 L% B3 [, p! w+ B
scanf("%d",&n);
4 Z, y8 O$ g( R6 ^; [4 K0 Sprintf("%d=",n); ' y! l: f K* f: N& H
for(i=2;i<=n;i++)
9 D) O) z: x$ U' s% e{ ; v% p7 H; b0 @ w
while(n!=i) 5 ]* \! N4 k6 k( l7 o4 o
{
. ^& V2 N, y: \/ Z' s) nif(n%i==0) - D& R$ E7 r! D! H1 j- F
{ printf("%d*",i);
) }0 i6 f. w0 j: Nn=n/i;
8 A) z; k# Y+ c6 [2 X} ) p1 I: Q4 b) H. A% t* O
else
p8 H' r7 O$ v$ a# t( Ybreak;
[ g& k# p" F2 S}
8 n9 H9 t' N" Z( ^. |5 g. B}
. n' }% q) M$ cprintf("%d",n);}
( ?3 W% a/ i- j4 I( O ?# x; Y % `% o( \7 z2 P; x& J S( g' b# g
|