|
【程序6 】 # |0 w4 F- V1 r. z3 a; T3 M% B
題目:用* 號輸出字母C的圖案。 / K) X2 S( \% P* s; Q9 [
1. 程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。 - z- x: l6 s4 m' S
2. 程序源代碼:
* {! O4 O% R; m) D# e: C+ m#include "stdio.h" 0 R' L* Y1 J; R
main() { U _/ o. A$ ^5 s! _7 P4 q. j% @% V
printf("Hello C-world!\n"); ' z$ Y( w# Z8 {1 C% d) d; T
printf(" ****\n");
3 y3 v3 u" P% h5 L5 f& b5 Rprintf(" *\n"); / h* J3 o% _& B. s: P7 K
printf(" * \n"); 4 [: Q2 N+ o* [. e6 D, F2 U
printf(" ****\n"); }
& y7 ?8 [1 I- Q# _* H==============================================================
; V: Q4 J$ n( g【程序7 】 - T$ k( }' h8 ?
題目:輸出特殊圖案,請在c 環境中運行,看一看,Very Beautiful! 0 p- {7 I% A7 I; N
1. 程序分析:字符共有256個。不同字符,圖形不一樣。
; L9 Y G2 F1 N2. 程序源代碼: 9 l7 s5 A% N- t" Q' N* k4 U1 k
#include "stdio.h"
6 r0 N5 l$ X4 Lmain()
& V8 D: R( @1 j4 }{
* W% E( X9 p/ ^* }7 O' Echar a=176,b=219; * }5 F' b2 H) q4 \# S. Z
printf("%c%c%c%c%c\n",b,a,a,a,b);
$ x8 V1 d5 `: n- a9 k- i/ D. sprintf("%c%c%c%c%c\n",a,b,a,b,a); ( Z( y9 ? X- K6 |0 y; j
printf("%c%c%c%c%c\n",a,a,b,a,a);
9 K k: v6 U" S; r3 E4 m1 ]6 zprintf("%c%c%c%c%c\n",a,b,a,b,a);
2 ^5 l, Y) x2 S" L) |2 u4 T4 Wprintf("%c%c%c%c%c\n",b,a,a,a,b);} $ K4 W$ W! O% D* p- ^
==============================================================
4 Z/ U( a! N# P# _$ b4 f0 C3 D【程序8 】
s* j2 s a- I+ W題目:輸出9*9 口訣。
+ f+ j+ j& R) q7 M4 |4 r* ~6 p1. 程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 ! E3 y2 [8 Q: z5 U2 X- `# T" F5 L0 z9 l
2. 程序源代碼: ) T1 O4 U: X$ o
#include "stdio.h" ; F8 q4 [3 z$ B9 n* E2 o
main()
8 G0 {* O% z' g7 D$ c0 p{
/ p8 M8 [ |: c7 |7 r( ]int i,j,result;
7 ? y& B T9 U9 |printf("\n"); " Y; u" q1 s- u2 j
for (i=1;i<10;i++) 5 o! E5 N2 x- ]4 h5 [$ X
{ for(j=1;j<10;j++) 8 ^- L" C" ]. g8 U- q9 A
{ ( y1 [7 Y# p# T6 Z
result=i*j; ( N1 H* c5 S4 w- k7 z' }. Q2 B
printf("%d*%d=%-3d",i,j,result);/*-3d 表示左對齊,占3位*/
; {! ^0 A) M4 _$ m5 l1 Z} % J& n: l0 f0 p+ X' H b. u
printf("\n");/* 每一行后換行*/ 9 u4 N' P) ]; w6 [, ?! H, q3 @4 z
} % k: }/ { Y V% m% V2 P, t* x
}
1 F V1 f; A- `$ E1 z0 V& p5 T==============================================================
/ x2 ]+ f, _* x8 ]- |/ u【程序9 】
; S1 m' s4 Y! L. X$ H, R/ W題目:要求輸出國際象棋棋盤。 (嵌入式學習企鵝要妖氣嗚嗚吧久零就要) ( w9 j% J6 U/ }. a p2 u9 {
1. 程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。 . l2 {, Y* j8 M; K a4 b
2. 程序源代碼:
5 i" d i* v$ M3 X& w#include "stdio.h"
/ W6 D9 g4 s5 _1 vmain() 6 R, R* \; D+ |# [3 L
{ & m3 n: T' P: o1 f7 l
int i,j; $ ^/ [# Y$ L1 F0 \
for(i=0;i<8;i++) 1 e9 ?, Z& ?7 o) s
{
) r* y8 S" S+ Yfor(j=0;j<8;j++) 8 U6 |+ C: M$ ^ }+ }' M# X
if((i+j)%2==0) ) m. R8 p7 D$ v8 g1 ~% `7 y( a
printf("%c%c",219,219);
; ]- v, R6 |# `7 X" j8 i- nelse $ s- g1 r% h5 N5 L
printf(" ");
) u: ^" d# [& ~8 q* J9 Eprintf("\n"); ' G/ | p5 V4 Z3 @3 j0 i
}
; C9 d& i. D5 k9 ~; k: S; h}
3 |6 D. F1 i3 r k0 N2 {' G==============================================================
& u) T# Y& x) \9 S" _【程序10 】 1 s/ s! }8 b1 ~0 L% q2 _
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。 ' Y; D( s0 B& x/ @, n" F' ~
1. 程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。
3 l% l# q) n6 a3 [$ T7 c2. 程序源代碼: # K2 @% m; X* B$ b2 E% P
#include "stdio.h" * r) m. z% N( e# M$ F$ f, z
main() 3 d* c% R( J0 G$ V: u. D S
{
- X3 n& m+ Y% R0 k4 {9 o7 x1 eint i,j; 7 d- g3 t3 w4 H3 o2 G) h
printf("\1\1\n");/* 輸出兩個笑臉*/
0 _1 a7 @4 q$ s8 R* z7 ofor(i=1;i<11;i++) / Z: z2 p) k* s2 B8 _+ D* \# [: A
{
4 E; h$ \8 g6 [2 S2 P( A8 lfor(j=1;j<=i;j++)
; F- R1 ]7 G8 q+ t8 D$ q3 Dprintf("%c%c",219,219);
( u: d1 z& t1 |2 y+ |* d9 nprintf("\n"); 7 T2 {* m9 p. p6 ]
}
9 N% E/ o ]5 W}
: Q7 `# S3 N% p
5 @0 D0 t& e( g7 G, \& j; P* B. a# t5 u& D0 d6 w3 e; }
e- w" c5 c4 A& L2 J作者: zhlei81 2005-1-22 11:29 回復此發言 4 g9 ]0 r" k" B( c. q* d6 R8 H
9 k3 D: G1 g( S1 t0 Y% B5 D--------------------------------------------------------------------------------
; G. x) n: M# M. c# i8 F, Z( @7 _ u1 _ k! n* q! y: {
3 回復:經典C源程序100例
' U& u3 E8 L7 I1 q: h [) a【程序11 】
' {# O1 C4 g: H Z/ q: N題目:古典問題:有一對兔子,從出生后第3 個月起每個月都生一對兔子,小兔子長到第三個月 2 `2 G( o, x# I8 f; W! ~' j0 k
后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? % }; ^8 M, J/ C, a+ Q
1. 程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
$ A- A' p4 f. N2. 程序源代碼:
5 _1 y1 P8 N' Ymain()
. v' p+ v P j: x, ^{
! Y6 U) _7 }3 M. Along f1,f2; & H0 `8 @: U8 r- S4 r
int i;
* y/ {# G0 i R& s' Zf1=f2=1;
0 S2 s. ~1 {! X5 I' S- c" wfor(i=1;i<=20;i++)
. ^: K. y& r9 W. ?' m/ u{ printf("%12ld %12ld",f1,f2); , X3 d# K7 r) [$ ^7 B& z0 ~' m
if(i%2==0) printf("\n");/* 控制輸出,每行四個*/
8 a9 d; }# R2 q2 a8 W: U- t4 Lf1=f1+f2; /* 前兩個月加起來賦值給第三個月*/ ! g0 @; o7 _3 \; A' P# f
f2=f1+f2; /* 前兩個月加起來賦值給第三個月*/
8 G2 @' r8 [/ V/ V* l} 9 @0 W: |. W! e. Q {+ y
}
& W( T X9 R, W8 X" P: @' }! ^! i==============================================================
6 Z' q2 Q: ^; U+ f/ b3 t8 G' r【程序12 】
; W# L& |' `1 G( M: ^& {/ t題目:判斷101-200 之間有多少個素數,并輸出所有素數。 j, { f3 Q8 D
1. 程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, 8 P4 |. L9 ^0 [
則表明此數不是素數,反之是素數。 " s' d; w/ f8 ?0 X0 ]' R+ p
2. 程序源代碼: * n6 c e) I: O# C2 E$ `
#include "math.h" 6 U- h% \( F& T; U
main()
9 ~4 K8 y6 V2 N7 e' _{ 9 H* H, U8 O( Q0 g: n4 y
int m,i,k,h=0,leap=1;
. F3 z; j' s1 w- c2 Vprintf("\n");
, c! m2 h1 m2 a A( I: p/ T$ W0 qfor(m=101;m<=200;m++)
$ l& a* ~6 E5 n. P5 {# B{ k=sqrt(m+1);
% v* }9 i& W3 o1 Z! ^' ofor(i=2;i<=k;i++) . J( v& `6 _% {) u b
if(m%i==0) 1 a. G/ ]# e$ _& Q
{leap=0;break;}
. n2 a4 z0 R) M0 o! L6 j9 z% ~if(leap) {printf("%-4d",m);h++; 8 A0 t W! v( s
if(h%10==0)
# H4 ? `3 |6 p. ?6 Z# r* g- Hprintf("\n");
# }9 U# i; _2 x$ |; a( J" v} & \2 l ?1 a% ?; }; i. z6 n
leap=1; 8 L! f$ A3 T# f: H% C
}
7 i& v1 y. F R y- x9 a0 j2 `5 fprintf("\nThe total is %d",h);
3 V$ l" H5 L6 U- a2 S6 \; r} ! Y( E0 Z) F' T% W, G) Q
============================================================== $ u+ V( ^) b7 |+ @4 s9 L4 j
【程序13 】
3 a: _0 z* y' G6 v4 A/ c3 a7 I題目:打印出所有的“ 水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數 6 |7 Z# _3 j1 P- F- J; x6 G6 _3 K& |
本身。例如:153 是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
: A9 M1 K7 P2 u1. 程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。 $ R' t- D6 d5 q% K
2. 程序源代碼:
: P F' t# D$ X/ S/ gmain()
5 c* Z1 [9 H, P% v0 G. e{ 9 {" L" w7 W; Z3 i( [: k9 X
int i,j,k,n; $ X4 }" d6 {* _
printf("'water flower'number is:");
( G, h6 O) v8 Q3 t) P N- Gfor(n=100;n<1000;n++) & A( d, V5 {2 u8 s( }& R
{ % `1 R; \# i4 Q# {, j
i=n/100;/* 分解出百位*/ . C- _: U3 _- g0 | h9 ]# ^; L/ R9 e
j=n/10%10;/* 分解出十位*/ % R4 r& q q8 X/ c+ Q, |: k1 X
k=n%10;/* 分解出個位*/ . Z: q* r- D* }6 n# P
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
* {/ w# l( h B{ & }$ `2 [( N" Y/ ~
printf("%-5d",n);
- v( a/ q* i) i' l* D1 `8 \} 1 J4 S- e6 @9 L+ f, o X! u
} / y; f' j8 b# W+ Y+ S8 z
printf("\n");
; S5 X2 M7 O# m# M( r9 H' A* P} + \' K$ H6 P6 n
==============================================================
/ }& C; }4 b- r) u! y. g【程序14 】
6 B* I, J' `2 K3 C題目:將一個正整數分解質因數。例如:輸入90, 打印出90=2*3*3*5。 1 }3 u7 w! i% Q# n
7 q; q; q. F: c8 P/ k5 ?
程序分析:對n 進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
) x1 _; ^+ a5 r6 e6 Y# Y/ K(1) 如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。 3 B; l/ ]( _1 B$ l% V# S
(2) 如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,
4 ]* q) @. @4 [5 Z% u重復執行第一步。
3 Z `8 P( n, _8 ?7 p% j(3) 如果n不能被k整除,則用k+1作為k的值,重復執行第一步。 3 H9 x$ n6 d h
! X( O$ g2 g7 y% E- Y+ o5 k5 S
2. 程序源代碼:
. E3 Y1 n/ S/ e) _2 s ]" E3 Z+ C/* zheng int is divided yinshu*/ / }# ]3 C3 J7 `# x' G1 |* }( K5 _
main()
% _, I4 D8 F% \{
7 Y1 y9 F1 H. P* i0 L* n( m/ Rint n,i; 6 l- M2 r( c) T0 _4 E! F
printf("\nplease input a number:\n");
. J2 { h9 C8 kscanf("%d",&n);
; l9 H- O$ g( P$ Bprintf("%d=",n);
8 G D& t" }) w g- b+ kfor(i=2;i<=n;i++) 4 P: Q( j: a* t$ E
{
+ P/ s/ ?/ n X; uwhile(n!=i)
: P1 g# q6 D. s: f{
0 a0 {8 l# t* @. g5 {# d# W, Hif(n%i==0) - b. A3 z$ u: T2 a
{ printf("%d*",i); M( |$ Y6 n! u9 }, i0 L5 Z6 r
n=n/i;
* d0 ~) A$ K# w} 8 L# t* V) k2 {- K( j6 `. J
else 4 v( P7 B& i# ?; D$ ]1 l
break;
5 S' o9 Q: Y3 b' j} ! V- _' [; @7 k4 C
} _/ E. K3 y1 k; c
printf("%d",n);} . i- d4 Q( r8 v6 Q( w, ]+ R; @; M/ ]
==============================================================
# ^4 x7 l& |# S0 d" P: `【程序15 】 , N" q$ p& Q0 D. U
題目:利用條件運算符的嵌套來完成此題:學習成績>=90 分的同學用A表示,60-89分之間的用B表示, # Z: V- {! u/ _4 M1 m! g- Q! c
60 分以下的用C表示。
, a$ w+ A5 [( P4 y* j" F1. 程序分析:(a>b)?a:b這是條件運算符的基本例子。
/ `4 X E- y5 C* H& a c) o2. 程序源代碼: ; L2 g$ s- x6 ]2 D) s5 ~3 |
main()
2 ^( i) l% C' ?4 h- M% ]{
- ]# m: z: [, C' h2 Sint score; % [& m0 }: B8 f
char grade;
0 a* x4 b. ^# b: `8 Eprintf("please input a score\n"); 4 Q% x, m3 L9 f% m- |
scanf("%d",&score);
1 a6 M S5 c( T2 O8 T2 t$ rgrade=score>=90?'A'  score>=60?'B':'C'); ( v. F" l1 m; q A
printf("%d belongs to %c",score,grade); / z0 L# R, B( h/ F# D. t' z9 _
}
+ o/ I# B9 x9 |- R% q6 k3 b============================================================== 9 J+ M/ I" |% v0 a- r1 ?) q
1 ~) f3 X' c' ^/ F1 q# O. i# z P |
|