|
【程序6 】
, G$ p$ X% s6 r6 I& C+ `# l" h4 j9 D+ \- x題目:用* 號輸出字母C的圖案。
5 a( B+ K! I( [, r- b6 ^% X B1. 程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。
, T) s. }3 k* o3 l: }, ^3 Y+ k# r# {- e! x' N2. 程序源代碼:
! d2 C& J% I+ p$ ]) J7 n#include "stdio.h"
1 j/ z7 z% ?: s/ G0 @main() { 2 ?9 b4 m3 [' B, M( h( F& A
printf("Hello C-world!\n"); & u* I7 N/ w4 n$ n1 B
printf(" ****\n"); ( V' T- x8 l3 A% I# I
printf(" *\n");
& K- k, z: }+ t2 S* }/ A5 p" P4 s( Fprintf(" * \n"); 9 N/ H# S: v, G) D$ ?( O
printf(" ****\n"); } # V1 K% c: W' Q! H
==============================================================
% l4 X/ r$ j' p; r) V【程序7 】 * e$ A* S. `7 n- M
題目:輸出特殊圖案,請在c 環境中運行,看一看,Very Beautiful!
# h% H) F3 \+ P+ T A0 Y* j1. 程序分析:字符共有256個。不同字符,圖形不一樣。 ; D1 p/ u( T" t' p! Y5 l# K& }
2. 程序源代碼:
7 Y& t7 x! R) v3 W2 Z" z#include "stdio.h" $ X/ z) M; N6 Z; o: B8 j
main() * M; v) r* e! }1 J5 E
{
9 i l) l6 H1 b3 ~& g2 ]! r" Mchar a=176,b=219;
6 ~' d! x8 _* A6 g* A3 o4 X1 uprintf("%c%c%c%c%c\n",b,a,a,a,b); . t/ [* `) g6 J- q, Q! O9 d$ P; o w
printf("%c%c%c%c%c\n",a,b,a,b,a);
; \% T; t0 |* R4 h0 n8 D, mprintf("%c%c%c%c%c\n",a,a,b,a,a);
/ T8 ?1 o* u/ W( ^0 N* \. w+ Z0 @, L1 eprintf("%c%c%c%c%c\n",a,b,a,b,a);
% \2 N: Z2 {2 m4 q1 r1 Cprintf("%c%c%c%c%c\n",b,a,a,a,b);}
/ `3 O9 O" B1 _============================================================== & S1 r1 z" `. |
【程序8 】
& w/ V T9 |4 }7 I. B' z9 |題目:輸出9*9 口訣。 + [" K8 A2 a- p8 H
1. 程序分析:分行與列考慮,共9行9列,i控制行,j控制列。 ( j2 C- M7 N! S1 ~
2. 程序源代碼:
7 v* h5 T/ Q" d) U Y#include "stdio.h"
+ U8 x. ^# \2 R: m4 D: `4 s7 @main() 9 A' R. X/ Y, \
{ ; v1 z& O) _( k2 p) r
int i,j,result; 9 b! o0 i0 t E0 N" ]+ G
printf("\n");
) Q' ]4 w: m4 Bfor (i=1;i<10;i++)
( s) x+ O* Q2 t6 x6 ^{ for(j=1;j<10;j++) & g1 v, d: L T: i- V0 C
{ 2 Y, ^% \' }; h
result=i*j; + `% X5 ~" t4 o' k9 ^. X
printf("%d*%d=%-3d",i,j,result);/*-3d 表示左對齊,占3位*/
1 H: Z, R$ {9 {( `) V6 m6 x}
5 S9 b4 m" u! x; w/ Wprintf("\n");/* 每一行后換行*/
. w, ~ B" A2 c, \* j4 ]0 c}
7 F9 K3 Z$ W5 P7 N0 F6 [* h2 C! T8 g" S} . F' {& U+ Z, W
============================================================== - F1 Z0 d; ^9 @% M; A7 x) ?/ I
【程序9 】 5 W; p. U8 @( K9 Y+ ?; U; l; ?& G+ o
題目:要求輸出國際象棋棋盤。 (嵌入式學習企鵝要妖氣嗚嗚吧久零就要) / ^1 l6 \/ Z" b' s3 D1 ^
1. 程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
. Z, y; [3 s. F% M H2. 程序源代碼:
- Y' R$ E6 a8 E#include "stdio.h" . c6 T" W: V. R2 N
main()
U) O' }" e) P. K$ R0 d' p7 V4 Y{
+ F& z, D! I5 B, Zint i,j;
0 z9 x' t" D3 F/ a. @5 lfor(i=0;i<8;i++) , ?( H& _2 y9 z# H5 e
{ , Z9 R) K: i5 r; z
for(j=0;j<8;j++) ) z+ Y$ Q- ^% {+ u6 H7 n ^0 L: t
if((i+j)%2==0) ' N1 c3 A l* V; d9 A$ Z, B3 P
printf("%c%c",219,219); + ^ D6 J$ b3 j) E% V
else ( }2 A5 w; n! T4 i) k, L# C. }
printf(" "); 7 J$ E; a" G% n* ]1 j
printf("\n"); 6 C! s } u+ Y1 d- o
}
, S6 d3 h* j9 Y" `} ' @* |; g8 S5 S. A" O
==============================================================
- p1 O7 `1 Q+ y, T4 [【程序10 】 + N1 v; Z5 Y- {) S. U7 x
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。
: H* Z3 U' a5 a# M9 K1. 程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。 ) ^4 ^+ H+ x! S$ w( a0 L* ~( O/ ^
2. 程序源代碼:
9 o) t% S5 ~1 V- X1 b#include "stdio.h" ; a" t5 R" w: N- q
main()
8 X" b$ Z# b0 J0 D& u/ S{
6 y) Q' r i2 xint i,j;
1 {% s0 |+ M& F9 V9 Kprintf("\1\1\n");/* 輸出兩個笑臉*/
0 F% _# T( j* P+ {. Y5 Bfor(i=1;i<11;i++)
. E' x& v/ ?5 Y7 T; p% {+ C3 M{ " R e; m8 e8 p1 |( \; R( |
for(j=1;j<=i;j++) 9 [: n. h% `6 i3 W+ `6 H
printf("%c%c",219,219); * c* H! F- n% i: u: S4 U
printf("\n");
. C: D Z& x" R# L8 v}
* Q: z* v, _2 j} + z3 \6 Z. Z$ C! H( j8 l/ T
" \/ _# G# S: [' n' V" Y/ q$ i
. x1 y* T3 \( O, Z5 v
4 r1 S8 r0 h9 z8 N8 q作者: zhlei81 2005-1-22 11:29 回復此發言 - j/ z$ R- ?; p# \, b+ S- {
8 I7 {! B5 [( a8 i* w
-------------------------------------------------------------------------------- 9 ?' Q' L2 v3 Y) R! a
+ V- W8 b7 p. u8 R! \5 B3 回復:經典C源程序100例
* ?: [& e8 F2 q- ?8 [, q【程序11 】
7 [. \' @+ g" M題目:古典問題:有一對兔子,從出生后第3 個月起每個月都生一對兔子,小兔子長到第三個月
/ w9 F1 J5 `% L: x9 H3 @后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? - j" X4 N- f; P# r
1. 程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... ; u& H: z' G$ B# c
2. 程序源代碼: 0 ^7 Q# Q) K1 C2 _
main()
; M- e$ s6 Z4 Y5 K9 o7 _9 ]{
6 |: Q5 K0 j$ U; Blong f1,f2; ' N% j) W' ^: q# A
int i;
! { p" f+ w" E) T! hf1=f2=1; 2 E5 _0 k7 T( o: u3 {- |
for(i=1;i<=20;i++)
2 a2 D% N5 u# B3 b4 y7 k; F{ printf("%12ld %12ld",f1,f2);
: M2 A% ] R- M7 R9 gif(i%2==0) printf("\n");/* 控制輸出,每行四個*/
& _+ J) F" L4 W% a5 d7 ~1 |, ^f1=f1+f2; /* 前兩個月加起來賦值給第三個月*/
+ d( n6 C4 W! U( K4 q7 Qf2=f1+f2; /* 前兩個月加起來賦值給第三個月*/ ; j' P! t% C+ s! r5 F. G" K9 M
} , n2 R1 `+ y/ |9 B; N3 ]; D( O( S
} ' u: k. x- R1 A/ S/ v- Z' T
==============================================================
5 \$ L& }! [$ Z8 L+ S【程序12 】
+ V# y4 [& j4 H) w9 p$ J! r題目:判斷101-200 之間有多少個素數,并輸出所有素數。
6 H0 B" x, U- |/ r3 |3 {1. 程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, [0 ~% N! W& Z% v( r3 @, t
則表明此數不是素數,反之是素數。 0 g% O' D! C$ a; c3 u0 S
2. 程序源代碼:
7 j+ M& p" p" B; b: ?* _#include "math.h" 1 q$ F! |: R, M1 b0 v" d; c
main()
0 f' N4 O7 a% E" Y* w1 z! e& G/ r{ * u p1 A) ]4 A- E
int m,i,k,h=0,leap=1; 2 J _4 M( q7 M) [
printf("\n"); & @! o: `2 G' g# r1 P
for(m=101;m<=200;m++)
5 M$ q1 k. [& P0 d Q- |{ k=sqrt(m+1);
6 ^7 U2 Z# l& w/ q/ o$ M! }; [for(i=2;i<=k;i++) 4 E' I1 X' r% A2 q$ i
if(m%i==0) " F5 I( k# y& x7 M8 w# x4 f
{leap=0;break;} ! Z9 a& M+ w) h, S. J/ S1 x
if(leap) {printf("%-4d",m);h++;
; E( @5 }- b' e! Hif(h%10==0) $ F$ h0 _# Q- v! A9 a4 b8 O i" {
printf("\n"); 0 a; D* y( ]2 M$ O* F
}
) H6 p# F' w1 r! w7 lleap=1;
+ {4 P+ o: h! }3 g+ o, ~+ g/ l! [# }% Y} + Z9 p; g& N+ Y( l9 a6 U: Z
printf("\nThe total is %d",h);
. T$ V5 ` h, C% ]} 4 z4 m& M6 ^8 D9 T- h* x
============================================================== $ v$ F" \$ l5 \; v1 ]" M. |5 Y
【程序13 】 . R& |, q, {. I% ]9 W8 D2 |
題目:打印出所有的“ 水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數
& p+ _8 e' L: l$ b% k. o: W本身。例如:153 是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。 & S) N [7 ?) y9 }" |
1. 程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。 : v3 {1 s3 e8 Q5 h* G% i+ s3 S
2. 程序源代碼: 1 }% o6 q( F5 {; R( @( R
main()
5 Z/ m3 U; @* v" _{ " |. F9 e$ \5 C4 v- A4 u1 D
int i,j,k,n;
. _1 B" G! V$ A2 Aprintf("'water flower'number is:");
8 [1 E, _ G$ U5 |for(n=100;n<1000;n++)
/ I) C( M; J9 C' g{
: g- @' v- j5 O9 g* d: Y* N9 S. L+ wi=n/100;/* 分解出百位*/ # c! y# L# ?) t* K' B
j=n/10%10;/* 分解出十位*/ 9 z/ W0 |8 ^7 h5 i p- b' b
k=n%10;/* 分解出個位*/
m4 ]+ q# l( z) a8 R$ yif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
3 ^6 n& b5 C& U* A% p3 t5 {9 }{
( _: Q" o" _$ z% s! jprintf("%-5d",n);
7 e% l8 Z' b& M} 7 e: Z2 o, b0 o: G
}
3 ~8 @, g8 Y1 q( L+ {1 P. z8 hprintf("\n");
9 I; x* {7 q6 A} 2 @7 G0 s5 o% x
==============================================================
; C8 U. Q/ T3 d, O【程序14 】
% Y4 t ]+ B9 A, a S題目:將一個正整數分解質因數。例如:輸入90, 打印出90=2*3*3*5。 6 w, T# v" h: N( L" g# U0 ^2 G4 m- b
3 U7 I$ g( G7 \& i; {! k: D9 ?程序分析:對n 進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成: " s; E6 [3 O! N
(1) 如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。 , T6 \4 D* A! Z. k" A$ v- Y1 c
(2) 如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,
) k) h- p- {/ [; `重復執行第一步。
/ v6 N" Y8 w4 F" Q& `(3) 如果n不能被k整除,則用k+1作為k的值,重復執行第一步。 0 u' ^1 A* {: u/ }# M4 I, j
9 }4 D7 S) [: F( _2. 程序源代碼:
# Z& G" H( e m0 s/ V$ X( E) ~% G/* zheng int is divided yinshu*/ ' w0 k8 ^3 K3 J7 v/ W
main() ! r/ }+ S2 u) z9 t- I- D
{
: Y- M" r6 r: Iint n,i; . Y( G2 M7 V$ r9 @* V' l* g2 i) N+ f
printf("\nplease input a number:\n"); 9 t' O' A5 b2 [ b' n% ]& o
scanf("%d",&n);
5 P2 M1 F# S* B9 k, e) ^/ [! Uprintf("%d=",n); 5 p: I% a4 _8 r: T+ D
for(i=2;i<=n;i++) 3 V6 P7 W e) [
{ 8 T0 A$ g' b; }" Q J
while(n!=i) ( U c: m" t# \: @( k
{
5 r3 W4 R( l: U8 b! U/ p$ B: lif(n%i==0)
( G# K/ Q9 m: F, R+ D{ printf("%d*",i);
- t. n1 P5 u2 T a# `3 F/ Dn=n/i;
" G t! E6 P, U4 F}
3 ^% }% ?" T3 X; q; p/ pelse
) a0 Z: K$ G- v1 M' g* `3 Qbreak;
6 T' w/ r6 Z0 _7 ^! r( V} 6 T& V5 ?# s9 c# r; i6 x r; X
}
5 q" |: {. J4 w n; `printf("%d",n);} 0 P F' B. }% p/ |% y% M' u
==============================================================
3 e! C! t. b1 A, k1 C0 H【程序15 】 / z& D1 w3 J- w b) w
題目:利用條件運算符的嵌套來完成此題:學習成績>=90 分的同學用A表示,60-89分之間的用B表示,
2 p1 E( e: \1 }0 Y/ V' w60 分以下的用C表示。 . v. W. l2 t$ i
1. 程序分析:(a>b)?a:b這是條件運算符的基本例子。 , U5 b* R: G- O: {& J D
2. 程序源代碼: o3 n: r2 j9 ?7 m& y% v
main() 0 _4 t6 w2 b: W$ u3 K. x
{
! d; G% t i; m( M+ P% l9 Hint score;
2 Z" y. R/ k B# ochar grade; 7 |+ h& K) @8 T' z' V1 z4 H
printf("please input a score\n"); ! f( @6 [% u& `; s7 r
scanf("%d",&score);
. y) w: D, K0 H6 a4 T$ pgrade=score>=90?'A'  score>=60?'B':'C');
9 C- \: @7 B4 P nprintf("%d belongs to %c",score,grade); 9 |/ R$ D8 [5 N4 u$ s& ?
} : k7 l1 e* W2 R) ?# E. t A# l
==============================================================
+ i( F" t: b% \: p# ^ , J' N& y- V: k% Q- P% y ~( X# k
|
|