【程序8】 : h3 `% i- B; F0 M
题目:输出9*9口诀。 - p& F1 B: S3 A$ A: Y
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 5 [8 N4 ]4 \6 k6 y4 x3 e
2.程序源代码: - o8 x: S+ q4 w) F
#include "stdio.h"
* I* J% N" H; V! c# f5 Dmain()
& ]% h3 @$ ^8 L/ n# }{ ) x" l1 `, l' x+ X; f
int i,j,result; 3 U+ P# y+ _! }9 r1 \+ V' X. C' L
printf("\n"); 6 o7 ~9 k7 L8 I; M, J
for (i=1;i<10;i++)
. d& T; l" \% f6 Y{ for(j=1;j<10;j++)
/ q8 Y& a) {' G& u6 g, H C{ * A2 h" P7 K4 i2 |0 l9 W
result=i*j;
" ^& H; C& r+ o0 N5 wprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ / n3 O# h8 z. J9 g+ N% t, W
} ! z, K! B5 M! Q
printf("\n");/*每一行后换行*/ + j# g0 X& P7 c) F0 h* n
}
/ ^9 V8 Q7 }$ d& H" z9 \} ! X V3 ?6 `' p( \8 {1 s. v0 i1 ~$ f
==============================================================
/ z5 ~5 u8 e3 V, [【程序9】 7 r- C, H7 U9 K. L
题目:要求输出国际象棋棋盘。 " N% \8 y7 y: N! y% f+ a) O" }) X
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
# T! f# ~' _1 p; u- {9 v O! `- g2.程序源代码: . o$ M3 L j7 Q* y
#include "stdio.h" 8 L+ a( ]5 k2 Q8 }0 m! X
main()
3 S: P; ?2 a2 N9 O: [# @4 J{
) j0 L+ n, [3 P1 E4 n" w& Cint i,j;
, D" d+ L: J" S2 R* Q7 U" I, vfor(i=0;i<8;i++) / P% P: q) E* |* j0 P7 X, H/ [1 w
{
`/ Z" L/ E* u$ q: c& `for(j=0;j<8;j++)
1 x3 ]$ c4 _% ]9 Uif((i+j)%2==0) 2 b9 o M3 W/ C$ @* [2 [
printf("%c%c",219,219);
2 C( F' b# {4 Belse
) D8 a% S) B; D7 V+ qprintf(" "); ' d9 o" W3 Z/ Z
printf("\n"); ; M+ G9 k* f$ I. O; B) |" }
} 2 \, T' `+ t2 S' W; k
}
3 Z5 [* O, N5 {/ Y( g==============================================================
! p3 i: z0 D" l; E5 d$ z, v【程序10】 8 G/ M+ k9 S0 n& q; z9 \# B
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
9 ^5 z0 B; O! D8 m' c1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
% S, i7 r7 {6 N. l+ E2.程序源代码:
; j* v8 Q ~" ^- \+ c4 T+ M#include "stdio.h" 5 [9 h. i, G$ H$ H: R. z9 J4 b
main()
S2 d7 P2 t. p2 _' L{
1 G0 i8 I% j5 l; i( ?. M: u" x( _7 aint i,j;
6 Q$ ?% A1 i5 ^" Z1 h9 t& ?printf("\1\1\n");/*输出两个笑脸*/ * p2 Z- u+ [: u, G6 C
for(i=1;i<11;i++) 8 H2 Q7 [3 z. a
{
. \4 ~# K+ `, H" D% C" u) P7 Bfor(j=1;j<=i;j++)
# k) X4 x7 F4 ]7 o# L6 G: M+ Mprintf("%c%c",219,219);
( r4 j! Q6 J8 Rprintf("\n"); # X+ r. a3 Y- N2 o% ~6 M
}
2 h M6 i0 l0 ^( m} 3 q3 t K; s4 j% _( L2 {
{% z& x( r) _8 Z0 L+ r
7 Q* {3 ?! Y$ I. H4 U/ D1 v
$ n+ [8 k9 m: J2 [作者: zhlei81 2005-1-22 11:29 回复此发言 4 P! l1 J' B q ?5 a$ l4 G- X' y
# x9 H% a P- u% A( O4 ~-------------------------------------------------------------------------------- 5 B, F9 i, }$ ?
5 J- \5 Z( s8 V8 i, m
3 回复:经典C源程序100例
( I' c2 M1 ?3 M, K9 g ]1 w% c& V& {【程序11】
# T R/ z: a4 J+ i1 w4 `) j题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 Q+ h2 ~2 ?/ D6 o, r( K6 N
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
4 x4 ^& P4 g& e1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
, ^' X& e4 V1 _) N2.程序源代码: / i, z- X5 l5 c: S
main() : r5 Z) K6 ]# e6 i. n S. Z! f3 w
{ # p$ K' F/ t' F: g! r* |: `
long f1,f2; " j2 S6 A- b7 V% Y
int i; 0 r& n. C, E! p6 l+ Q4 f
f1=f2=1;
( t: a ^2 X! o9 Bfor(i=1;i<=20;i++)
0 S* F `8 t' q- `% P5 ?{ printf("%12ld %12ld",f1,f2); " Q# h6 C9 _& P
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 5 _1 s6 d$ w7 S- V. |
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
1 L/ T- w( _0 b* T, cf2=f1+f2; /*前两个月加起来赋值给第三个月*/
2 E: Q$ h; I1 K$ r; V} 4 c. T3 t$ n H8 R
} 7 t, N x" f. a7 g+ n
==============================================================
/ ?% k" O$ t) h& ]3 P【程序12】
5 ~, U- g; v: ?4 d$ s `& Q& M题目:判断101-200之间有多少个素数,并输出所有素数。
- t5 [6 j5 g+ W0 i! L4 H* T1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
* | a% q! @$ C: H# B/ s则表明此数不是素数,反之是素数。
# M5 f. f& Y4 Y; h. B: D" W4 @2.程序源代码:
) q2 c: Q |5 g$ E/ X* L4 o#include "math.h" 2 c5 T7 E2 w t- P: H- K
main()
. R, E0 ?+ s: k1 G5 {& o$ }{ ' Q: @* X1 `" A& j# R7 A
int m,i,k,h=0,leap=1; 3 \$ Y* z! a# P, E
printf("\n");
X4 h+ j; n+ @1 ~. `6 _6 K! I& tfor(m=101;m<=200;m++)
1 }, J6 W1 \1 e* ?8 l( b" i4 I{ k=sqrt(m+1); % l$ b$ ~; R" V0 J% i. H6 W
for(i=2;i<=k;i++)
/ Z% e E. r$ B+ F+ N1 C; ]; wif(m%i==0)
& }) t l H: x# L0 s{leap=0;break;}
" w& {! \/ C0 P8 @if(leap) {printf("%-4d",m);h++; - R" B) _$ d# K7 B( _/ c" ]# U
if(h%10==0)
/ Y, o# L' k+ F! O7 `2 r+ Xprintf("\n"); 3 _6 }, U5 B, Z* Q; T3 }7 d0 p
}
0 g' b) {3 x! B, `8 @8 Aleap=1; . a" `9 }+ H9 y& n# D% _
}
; M( Z' ~8 b' i, i ~& P: B& jprintf("\nThe total is %d",h);
5 |- w9 Z, n9 z6 M2 q}
, ]0 }6 @/ V. V& y==============================================================
. r) t4 m3 k/ S) [6 X$ ?/ r【程序13】
+ J: S; l# B) B- g1 ^9 n题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
4 ]1 @( w/ `. g& l8 j7 T5 w本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 $ V2 t* P. A; X* U8 @8 V$ e
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 9 j/ @% F: x7 X. Y' i- g
2.程序源代码:
. U/ \+ O0 D& q% ]main()
! {1 d r+ `! \4 y{
1 v6 E+ _- f: f+ d( L, g+ jint i,j,k,n; 9 I0 ^- o- |& x: J6 a# Q B0 N1 p
printf("'water flower'number is:"); : y$ j. k6 \5 o
for(n=100;n<1000;n++)
% c: ?2 q, F, D% D{ 8 o: M/ Y: b) s5 h! G
i=n/100;/*分解出百位*/
0 q+ x5 W( D K. F! Sj=n/10%10;/*分解出十位*/ & G$ }2 l4 A! Q% b# u2 s/ n
k=n%10;/*分解出个位*/
+ r1 r7 n4 A! o, Mif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 0 X; T; ]9 {" @$ j
{
) A& a& ]% B: Q8 N' r0 wprintf("%-5d",n); + u- M. h% O9 [( ^
} - N0 K: q* y' l
}
* O6 S: x3 |2 V1 \' Iprintf("\n"); 3 l# _7 Q' i/ U! |' y. ?
}
: A, j8 Z3 ?/ X2 k) P============================================================== , d. D0 t8 h$ W+ l2 t
【程序14】 & d" H( f7 X6 B- B0 u1 t
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 3 q% O: b9 [! l8 a; Q, m; g5 ]
# W$ g) ]- I$ @/ N+ b程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
( K* r3 |) M2 q(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 6 D5 m6 \0 q+ E9 @ [2 Q( q9 c$ d, [
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
; V9 W% d9 y/ u$ u/ @9 h& X重复执行第一步。 2 `7 \2 X( A6 B
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
1 O* r+ D) C! T/ g2 a' G- \9 E2 E1 y ~; [! u
2.程序源代码: 1 Q5 q$ e& T, ]; T' g
/* zheng int is divided yinshu*/
2 I- y i/ a ]2 Y$ y2 xmain() ; {, w4 u' x0 y
{
6 E2 ~# y& b. t, P: hint n,i; ; a8 q5 ~ I4 y
printf("\nplease input a number:\n"); $ J$ @. w9 Z5 g: w. ?
scanf("%d",&n); , z) O; Z' O& x9 n, C' ^
printf("%d=",n); 4 H, c8 _( M: \4 i1 l
for(i=2;i<=n;i++) 3 \" W8 b! s" |% G8 Q6 C7 |6 @
{ # A: E j3 s% L# T( o
while(n!=i) ' ]$ G* L. `: g
{ ) D6 |& R! g" e
if(n%i==0)
8 v; f, k$ e# L* O9 U8 G: K{ printf("%d*",i); 5 {/ c, [6 {, q! I2 `, q/ L' [- N
n=n/i;
% E/ S7 c- X! a ~/ Q9 x}
$ j# n2 v/ [2 o6 H/ d$ j/ Belse
( k! J4 Y+ c3 h2 f/ ^& ^8 B G6 p9 ibreak; ) b4 ^8 L, B: w9 ~' s' q
} 6 _4 v7 V* s" t6 s
} 6 P' Q# ~. j6 D+ D2 h$ E! p
printf("%d",n);} " j# i7 D. n4 o4 h0 @* W& Y1 y
- S, j0 H3 x- B8 h& V
|