【程序8】
1 J6 ?5 p# U7 V: D8 ^题目:输出9*9口诀。 ( F8 Y. I2 j2 H( z9 D
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 5 _* J( w5 x. P8 a
2.程序源代码: 6 L- D' N# I4 R. J" H; u6 U# e
#include "stdio.h"
% T( F& p8 H$ e/ Y9 gmain() / m) M0 U$ U3 R3 ~ u) s
{
! [# h. D; p, Fint i,j,result;
' l; n/ a, j& z5 x, v* c7 dprintf("\n"); - I% w- q. f( L9 X& b L
for (i=1;i<10;i++) 5 }* j8 U% B+ j$ G0 `! Z
{ for(j=1;j<10;j++) # c5 @/ U1 O E5 _( n- v
{
3 @2 N" Z1 P0 _result=i*j; ( S( [6 f4 g+ [" d3 o* r4 x
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ 9 u) J% ?& U C$ q- u/ s) {
}
& X6 H k' Z, I# ~1 O! V- D0 tprintf("\n");/*每一行后换行*/ 9 y2 r7 m& ?/ B, J$ T7 Y6 s( v# m
}
5 `: G6 O# R7 T* G0 m& d' A} . {& x) V6 D! c0 _
============================================================== 2 K. M1 f& ^% m9 m" o) [: v
【程序9】 ! C$ @8 d9 A& u* i
题目:要求输出国际象棋棋盘。
4 r( F$ x& ^+ k. ^0 m' T% M1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
0 I) F! u+ Y0 T, X% S2.程序源代码:
! S2 ?# |, Y4 ?! ^- L+ ?#include "stdio.h" $ }- i+ a; O& T
main() : I1 G, d Z J e
{ % _3 d Q& _/ C
int i,j;
$ w- r# M/ u* zfor(i=0;i<8;i++) 9 K' s# M) {: t1 r
{
' V+ k3 ?: L6 d$ ^for(j=0;j<8;j++)
0 I2 D: y* B4 L/ C& `/ y# Mif((i+j)%2==0)
. |: Q+ \& r4 h) L- l8 Pprintf("%c%c",219,219);
0 G, \7 R, n: _! Felse
2 b! t: o. Q( n( ~# pprintf(" ");
. ]7 h0 R- I* h: F+ m) ]printf("\n");
2 Q" Q% n+ U! c8 X; Q3 ?}
1 f3 w, C4 S2 b x}
, g; b, U# }( _! f) z8 y============================================================== 0 L, p0 B9 l2 [, _. ]
【程序10】
2 ]$ W* \* G+ d5 m- L E" _0 j题目:打印楼梯,同时在楼梯上方打印两个笑脸。
* m9 S2 D6 I( F, d1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 6 |" F" S) F) F* K, e
2.程序源代码:
r4 w9 Y% m9 }% z#include "stdio.h" ) B- w- J3 T" Q+ Q- S7 a
main()
2 q- p' k& |) I& G" c{ ) X' G$ C6 v5 C6 q
int i,j;
1 f& }+ v- X, O7 D" u l( vprintf("\1\1\n");/*输出两个笑脸*/ . H( c( ]- K8 p9 y0 ]
for(i=1;i<11;i++) ; Z5 }% T0 ?' k3 K/ @& i
{ , b% P: z! A4 s1 j+ f( Y4 Z) Q
for(j=1;j<=i;j++) ! G g! Y j x; D
printf("%c%c",219,219); 8 w( \( h3 `3 J
printf("\n"); $ N5 o( V3 v0 ~; H6 K
}
, L$ `9 w' b- p4 h2 d( a} 5 }" o0 Y. [3 U4 s* w9 x
% U6 a Q, I. A, t- }
( U8 D+ S- M7 d& j; U" \
; ?' V' ^" }: j" Y作者: zhlei81 2005-1-22 11:29 回复此发言
; ?0 e0 r* c2 n1 k. a; J G+ [1 V% u3 L% w
--------------------------------------------------------------------------------
. o) G6 A% }% V1 ]% c/ l
+ k% k g; {4 l7 e4 Z: f5 F8 M" ~3 回复:经典C源程序100例 \1 }: q: @% r5 C
【程序11】
& R) d' c' H/ Q$ o" \; U题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
( q7 p+ B O% b |1 ^9 i后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? ' M$ K; H* ~3 f; m( Y* G
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 5 ~4 n8 a5 l( f: N4 Z
2.程序源代码: & j* P2 e- u0 J) [
main() + z* D C; l* a2 Z
{
' N O9 l7 c, a4 ~% Blong f1,f2;
* j& h, |( y8 u5 I# A0 A5 @4 `int i; 6 c) T0 b$ V; U! u& f
f1=f2=1; / n- `1 T; p' J0 E5 |
for(i=1;i<=20;i++)
, K# z( S3 D/ A0 P5 {{ printf("%12ld %12ld",f1,f2);
+ A+ q$ k7 \; V" {if(i%2==0) printf("\n");/*控制输出,每行四个*/
# L* Z Q6 u& X* Ef1=f1+f2; /*前两个月加起来赋值给第三个月*/ , I: R9 v* D8 G7 i& [) o; C0 q
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
% j' D3 w8 e1 V6 p& Q0 p# [}
4 e& r$ v* s0 z% c) Q8 Q1 {0 n: O}
$ E. R1 c/ b. `( H3 U; ~/ J5 C==============================================================
, g% ~3 o- o8 u8 i【程序12】 9 B/ _$ l- U9 v( h% |0 K
题目:判断101-200之间有多少个素数,并输出所有素数。 # g& V# q$ [' Y7 h% u) r, ]& G
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
. T0 b7 M! V# ?- C. |3 w( I( P7 S则表明此数不是素数,反之是素数。
' g# F* E2 j7 J" \7 m2.程序源代码: 4 e% {& l) u% v- F* u# {
#include "math.h"
0 e# {3 e5 I+ }3 H7 P& i2 a0 d% ^main()
+ N+ N( A: l4 D$ j) M{ ( m! q- f+ q" q* X; F
int m,i,k,h=0,leap=1; + z. j U3 h+ a7 j9 y$ u4 w
printf("\n");
% d, Q" h) V. J. ~2 ?for(m=101;m<=200;m++)
% p/ O2 }6 L- Q, ^{ k=sqrt(m+1);
A% z" q0 y* s* e, |5 vfor(i=2;i<=k;i++)
5 ^6 H% ]0 X0 n( pif(m%i==0) 1 ~& \' G2 R1 Z! U& i- B2 @- K- {1 s
{leap=0;break;} + K+ L. f6 f% p$ M* }# [. r! v4 W
if(leap) {printf("%-4d",m);h++;
9 k+ g# l% o0 ^7 C" }9 Z0 p8 k# }if(h%10==0) , X: x V' W! s8 @4 ]' Y
printf("\n"); 1 _5 m# \- s. b3 `9 X
} 9 s1 O' S/ {7 p# p; }" n1 @' W. N1 C
leap=1; * k+ I/ p! F' Z, [9 T
}
! E/ q) \' f# k0 U" Vprintf("\nThe total is %d",h);
! M; v4 o# p3 l3 s' s, P# r2 ^} h! h3 T, v" j0 ]9 d
============================================================== ' u3 j8 ^7 e6 T" X8 x2 j* E
【程序13】
U5 Y/ s& [4 d2 L题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 , o+ @9 s+ D* r/ e- f( r
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 # \3 l) Y; N% }3 U' F$ t* |' n
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
8 P0 F k0 r4 ]- ~( Q1 \% _8 |' W4 N2.程序源代码: 4 j& w$ v: F8 U( N
main() : g! ]: }2 G: U( L! m
{ 3 Q! A% {7 o) t/ r( u: s+ ~: m+ C8 Y4 _
int i,j,k,n; 4 l5 x1 E+ N0 s" L
printf("'water flower'number is:"); ! e0 T: J5 W+ d' O3 c
for(n=100;n<1000;n++) . E* o5 h8 _8 g& t& N$ n; N: y
{
, y, {1 F2 _, q7 ~! Qi=n/100;/*分解出百位*/
/ Q/ ^$ U) n) cj=n/10%10;/*分解出十位*/
4 X( `5 s1 Q i5 r% N1 g: j Tk=n%10;/*分解出个位*/
+ a0 |: Q' o f* ^# `4 bif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
8 p6 b6 `* W5 N& W{ # Z, U( _/ d+ H. q
printf("%-5d",n);
; S. u3 r6 ]4 O$ R} % T) y+ J0 u# i# W0 _3 D/ q
}
7 d1 k' J G$ a& k" r, Zprintf("\n");
: e. G- U9 E5 c' @1 [} ! S1 L4 n1 [! x% U2 M) d
============================================================== $ Y4 y: r4 L0 ~0 P$ Q( g0 M
【程序14】 8 u" N# n _! s# o7 x/ R6 h
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 # k# P- g# `4 }
X }. t7 b5 \: V* T2 H5 e; m
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 4 w+ t( x( `9 j
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 9 ` t: t* l: J0 T1 I+ O
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
5 A9 t; j6 b/ j2 M* d" P) f重复执行第一步。 % i# F& B, l# G5 Z; @7 r/ J
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
) c- k4 j0 B, b" o2 N, K9 H: J4 e; V. k( {
2.程序源代码: 5 t1 n- h8 o4 f& a: H2 F
/* zheng int is divided yinshu*/ 7 Y- {; J0 a5 V1 N0 {
main()
4 O+ j5 i4 w2 u# n X% ~{ 6 j" M& @( O4 L$ v7 y* ^3 W( P
int n,i;
) U% H3 I, w+ _printf("\nplease input a number:\n");
' L( X2 {# f \. {6 G8 F8 V/ Nscanf("%d",&n);
% ]- l" X" ~: Y% Yprintf("%d=",n);
$ e! ^) {, C' u1 L: b9 ~for(i=2;i<=n;i++)
( E; G: } M8 `{ 7 ], N$ U4 n4 A# S6 E
while(n!=i)
- O$ _. B9 p/ w. K1 w+ c) U. F$ z% g{ & |$ b$ U2 S r: w8 p; B
if(n%i==0)
) ~" D4 i i$ h3 Z) p! G( i1 B. [{ printf("%d*",i);
+ N( }: K" p- G- i: X8 H( bn=n/i;
8 \3 Z+ } r2 o' J8 y! Y! k2 J" @} ) P9 K' ^: l& ]
else % I) N1 b" j+ @ [
break;
3 a1 X' v9 `4 k, B7 v}
' v$ d F: M' F1 j0 |}
2 Y& X+ [! x0 S, e! sprintf("%d",n);}
/ a0 G, g& V" k" I+ _$ \- A0 S * M$ f- B8 B# n" g5 y
|