|
【程序6 】
, d* F0 N9 K" e) h題目:用* 號輸出字母C的圖案。 , K; I- r5 ~" g! z$ `
1. 程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。 1 W4 q3 @' g( l: E% G5 @( h
2. 程序源代碼:
7 `: J: r$ p4 Y2 T8 `5 z$ O9 I( N#include "stdio.h"
% K% v7 `2 g6 r2 M* e0 q4 p, Tmain() {
- q) ?3 q7 Y# ^& E. Wprintf("Hello C-world!\n");
# ~) x$ m7 Y; S( l3 l) V/ e1 f$ kprintf(" ****\n"); & j5 l6 D _+ a, v- f
printf(" *\n");
; n& b2 h$ g; [- Z& T2 tprintf(" * \n");
% `5 ?+ ^) `$ I) Y+ Y+ ~( a3 q& Yprintf(" ****\n"); }
& ~/ ^% o0 L3 m' _7 L==============================================================
: |, x- U K, a2 a8 f% k0 S【程序7 】 0 D% ~* T* X8 }: @# q% ]' x. F8 u, C
題目:輸出特殊圖案,請在c 環境中運行,看一看,Very Beautiful! 4 G( n6 m6 n; N6 H) ] X" Y
1. 程序分析:字符共有256個。不同字符,圖形不一樣。
: Q `3 W- x, r7 [2. 程序源代碼: " T! K ^5 G/ X7 }7 w+ o
#include "stdio.h"
% j0 `9 P+ O2 Q. N$ k' E1 J3 G4 }main()
7 Q+ n5 @8 [! `5 w# b: C{
4 x1 Q: O) u, y- {5 B/ Rchar a=176,b=219;
. ~' ?# s2 K6 Q3 n7 [6 B+ a% Wprintf("%c%c%c%c%c\n",b,a,a,a,b);
* h# |3 Y# q; v+ Mprintf("%c%c%c%c%c\n",a,b,a,b,a);
P+ W5 _7 o* v$ ], d8 H+ y) Iprintf("%c%c%c%c%c\n",a,a,b,a,a);
4 ?0 H! ~9 w# \6 Z# v3 ]printf("%c%c%c%c%c\n",a,b,a,b,a); / @ c: ?- y# T2 `4 k+ Q1 z
printf("%c%c%c%c%c\n",b,a,a,a,b);} + j0 p$ ~4 D1 }5 E. J0 |
==============================================================
. G8 f3 F' l+ |6 H0 d" l/ X【程序8 】 ; c* R4 H5 \5 w% a9 Z: h8 s
題目:輸出9*9 口訣。 ; y; i+ o5 I/ ^
1. 程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
, y i/ T) e/ _) H2 x! i( ?2. 程序源代碼: 0 q; l; B' C6 e# B
#include "stdio.h" # S. g" L# j! o9 k9 e/ j6 ~- |$ p
main() . V: h8 m, x. n* f) C1 K+ B) X
{
% _& O& h* R1 g6 ]- |/ Nint i,j,result;
8 ^, B9 `3 x3 a1 C0 m6 W- Jprintf("\n");
* c$ D8 E0 {, r8 X/ A m7 |9 gfor (i=1;i<10;i++)
6 b7 }" I \0 B9 Q3 L- ?. u{ for(j=1;j<10;j++)
+ Q9 @6 u8 G; s0 `, ]{ - _% p4 S7 X' y1 H
result=i*j;
' u$ ?. G( \" E0 R/ e6 qprintf("%d*%d=%-3d",i,j,result);/*-3d 表示左對齊,占3位*/
- ~. Y' s* Q X- _" g} 4 u+ J. i# r& A! m5 T/ B; Z4 |5 j
printf("\n");/* 每一行后換行*/
& x7 H* C. V$ p% Y- x9 P5 H9 G} ! M& ?% t8 u3 K1 P. g3 a2 x( H
}
" a/ b2 ?9 X: D7 j9 `! A0 ]==============================================================
8 A) Q' P0 D$ q7 v; u【程序9 】
2 U" q* L# r8 @9 A* n題目:要求輸出國際象棋棋盤。 (嵌入式學習企鵝要妖氣嗚嗚吧久零就要)
& T4 d5 x: H) [- y" Q5 ?7 z4 q1. 程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。
" g* J* |! I! f& P5 U7 h2. 程序源代碼:
7 V% m7 X6 u6 ?% s#include "stdio.h"
" B+ B1 e) |1 n* `main() % r5 M5 J2 X" T5 Y
{ 9 z f8 p, f2 \( d) F, S
int i,j; 0 k6 C. N) ^9 U3 s4 j' X
for(i=0;i<8;i++) 4 K4 B) o7 T% t6 I
{
1 C) t3 l M8 V8 D& jfor(j=0;j<8;j++) 9 Y' O r2 C$ z/ o4 I
if((i+j)%2==0) 2 k& k4 o2 Z; Z4 t; Y% c( X w" A& `
printf("%c%c",219,219); " W* r+ y, N9 o# T$ n+ \; }4 Y
else 2 m% g, \# t/ ], h( o1 I
printf(" "); . z; _1 r$ Z* k5 @% A* H# D L
printf("\n");
7 V7 b$ }# i% m1 o( z} 1 L }# U! y l$ ?
} , d+ P. }8 p' m3 F
==============================================================
* H1 B7 f- B! m$ S* `$ K$ M/ Z F【程序10 】 9 q# O7 L/ \$ u( y7 R
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。
6 G8 b! G0 m+ X, p/ j1. 程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。
$ A( c1 |7 S" y; o+ [' y$ ?, J2. 程序源代碼:
+ [! h- h, n2 @+ u3 Z#include "stdio.h"
' A* S( g) q8 K" o1 v* Bmain()
# K& L+ {: r, u. Q! ]% P$ d{ ! P1 o; X" X" `- N; {/ [
int i,j; ! r+ V: b& l" \9 q5 a
printf("\1\1\n");/* 輸出兩個笑臉*/ F! M7 ]& A$ c2 ~$ o+ q
for(i=1;i<11;i++) 2 T6 l% \2 U( N3 x. N
{
' k- Y1 ^- w7 P4 z) b% Cfor(j=1;j<=i;j++)
7 y/ Q$ T# c% ^printf("%c%c",219,219);
' C4 H8 A# \' V* `printf("\n");
* G# K$ Z! c* ^} 4 G0 V; r3 O" N! [ c5 r, h
}
* u- ?& ?0 A0 `. X5 I
6 C8 u% \4 r) ]5 j
/ c; E0 q% r1 V6 ^) E% R
/ D; x" ~5 A* R- `" \( F9 m作者: zhlei81 2005-1-22 11:29 回復此發言 6 K- F# `/ A; O+ V% Q
! s) L9 {+ a2 @6 N- m: }
--------------------------------------------------------------------------------
9 ^1 C3 {* F/ k& g) K7 C# r% ?4 M' O# Z9 F) T
3 回復:經典C源程序100例
4 ~4 Z4 F7 m* U0 [2 ?3 N【程序11 】 6 j) {9 B5 ^3 Z, Q
題目:古典問題:有一對兔子,從出生后第3 個月起每個月都生一對兔子,小兔子長到第三個月 ( C0 G# `. K8 m/ [5 |5 `1 a: S
后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? ) q- H7 V9 j! z2 \/ ?7 L: w
1. 程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21.... 9 \9 z5 S2 z8 I( i) W$ V
2. 程序源代碼:
+ J6 K$ d4 j& s' {main() # i# o" X- O7 o: ~
{ 8 f8 ]$ G) \, H, `& V5 [
long f1,f2; 2 A0 l4 j8 J, }% R' j7 y% h& Q
int i; ) V- [9 V0 G& q: V, }$ @+ w5 Q! u" ]
f1=f2=1; - M3 t; b6 m0 ^/ f. h! j* a
for(i=1;i<=20;i++)
2 z0 |9 r- S, B2 K7 e{ printf("%12ld %12ld",f1,f2);
( D" J" }0 Q& N rif(i%2==0) printf("\n");/* 控制輸出,每行四個*/ & D8 t( s$ E' q4 I: x
f1=f1+f2; /* 前兩個月加起來賦值給第三個月*/ ! n+ t* ^/ I' W r* M% t& h7 `
f2=f1+f2; /* 前兩個月加起來賦值給第三個月*/
$ Y8 s! t4 v6 W}
: n& F5 D- ]0 T F1 N7 C} : P' B4 o& i& i! G' f
============================================================== & t* ]9 N7 S3 I' S. J% e) Z7 V
【程序12 】
2 q5 f' r) Z* n5 b' a題目:判斷101-200 之間有多少個素數,并輸出所有素數。 ! C! H! b8 q% w0 e" N [; z
1. 程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,
: X( v: e4 d% N1 q+ y5 z% {則表明此數不是素數,反之是素數。 k4 W* U5 @, ?4 T* U
2. 程序源代碼:
, O( a8 n; S& ?- ^! l! t#include "math.h" 0 g' v0 \1 A* M& L5 S. a
main()
" `* ~/ j$ V3 }4 G{
5 I6 c, y% D' l) |int m,i,k,h=0,leap=1;
( ?' N2 P0 J4 b/ i& @6 yprintf("\n");
0 p) B' \7 b) \' x; k; wfor(m=101;m<=200;m++)
* `7 z& k% _6 N5 \2 d8 N4 N5 [{ k=sqrt(m+1); , \+ V E% \& Y t4 Z
for(i=2;i<=k;i++)
; Q( p1 f/ S; T0 j; xif(m%i==0) ( j" ?. |1 Q, D/ h: M
{leap=0;break;} * }! |2 b2 h% _# Y' q, c5 O, R$ z
if(leap) {printf("%-4d",m);h++;
S( O3 C/ u: y0 M! K6 L$ sif(h%10==0) / Y5 [/ b' } X
printf("\n");
$ i" m6 ~, H/ V K) p}
+ |9 _* M4 c' R8 ^1 O- Dleap=1; 1 r/ B9 ^* N/ V
} 6 X' v: Y" n( z1 v5 p; D% ~
printf("\nThe total is %d",h);
& [5 O# |9 G! n" {}
5 b! U" F. e0 Y) E: I7 Y==============================================================
) A3 s7 Y& ]' V: o1 S: U【程序13 】 / `- ]% c: E: }: O3 B4 o
題目:打印出所有的“ 水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數
5 x3 k0 \* _8 w本身。例如:153 是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
. ^; W- b% d& S8 w1. 程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
3 k5 i; e2 ?0 K( e0 c( `2. 程序源代碼: 9 p( D0 ]5 \9 d1 J2 X& e
main() & ?+ w. N4 h2 G% J
{ & @) `7 K7 Q6 B( O3 O( a6 u
int i,j,k,n; # d2 R1 o1 z( J6 r
printf("'water flower'number is:"); " ?8 J0 d$ L: l( x& R' t0 t6 a0 ^
for(n=100;n<1000;n++) + o2 O" H; g) n) V( q* q8 E
{
! z9 M V8 V3 b! r& qi=n/100;/* 分解出百位*/
/ T7 x/ D7 D# S* `& Y; i. h7 nj=n/10%10;/* 分解出十位*/ " C; ]% [/ l5 ]* s1 O/ G0 n$ S' u
k=n%10;/* 分解出個位*/
2 `' s. q$ b$ l( P8 I- J7 Xif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
) y+ n. \3 z' y: n{
" l4 X/ M$ t. n& s Gprintf("%-5d",n); 3 |1 p5 n5 Q2 O/ p; A' U( X
} 5 ~% a1 ]# }0 C! R% V
}
: D4 b# U2 }1 t2 r. lprintf("\n");
" Y1 G9 U: @) P% F} 7 r* f% g$ O1 Z& I) q9 T# G4 S+ G
============================================================== 7 v! ^$ K7 x8 L7 @% J( @/ w9 K
【程序14 】 ; P' G \2 E7 x
題目:將一個正整數分解質因數。例如:輸入90, 打印出90=2*3*3*5。
# p; r3 F' h* [ J) d7 _8 N( s
% D. t: ^9 k3 N% R7 g4 n |程序分析:對n 進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
2 ~0 `) ~* o$ b! O s(1) 如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。
) c+ s0 c& ~7 J4 L2 E7 s(2) 如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,
1 z2 T8 h0 \3 R, G4 p重復執行第一步。 1 x$ x! E( Q1 _) r5 D/ C
(3) 如果n不能被k整除,則用k+1作為k的值,重復執行第一步。 & z6 }8 ?' m" `% \1 B t0 R
& p; ]% Z' \% L6 }6 r8 i
2. 程序源代碼: ' |+ D) k* O* M
/* zheng int is divided yinshu*/ ) u8 l- D: f( |$ ]
main()
" ^+ c0 ~4 i9 _ y: {# c1 Z{
( V/ w/ z, b* H+ o K) c/ lint n,i; 4 J7 F( U* l ~7 z
printf("\nplease input a number:\n");
+ h: f3 F* G3 K8 {scanf("%d",&n); - g5 L$ D m4 o( a4 Q
printf("%d=",n); ; M& t A, E9 ]1 Q6 d$ w
for(i=2;i<=n;i++) * O% j; S# `( Z" X7 j) w3 ]
{ # l* o. t+ `1 E4 K& q3 [
while(n!=i)
I* D7 t$ Z2 r( n8 t{ * }4 l4 d% l; l. {. I. K
if(n%i==0) , a5 b9 c) Z1 G, X3 |- [0 w
{ printf("%d*",i); # `* A# C/ t& s
n=n/i; ) m; J3 B6 }' M# `3 ?- k( v
} ' z) \4 F% ]6 Q8 x& g7 R+ v& W
else
* D$ s+ k& M, ?/ @' T- qbreak; % H4 O& |1 z! |) G- o, J
} * c, F: y8 f3 C+ A
}
4 J: R1 @# Y' ~' |3 h8 H! tprintf("%d",n);}
' O2 v. `) g( u% d==============================================================
% ^+ {6 k. i! s- t4 w4 U【程序15 】
4 k6 e& v8 d/ |8 D) T& j題目:利用條件運算符的嵌套來完成此題:學習成績>=90 分的同學用A表示,60-89分之間的用B表示, ' x+ G7 z$ q( T& f# c
60 分以下的用C表示。 % a* U$ R( u' N/ |9 h
1. 程序分析:(a>b)?a:b這是條件運算符的基本例子。
0 _3 e( H5 T+ b$ t* x3 `6 r2. 程序源代碼:
% e4 |% Y% b; Rmain()
3 V$ `6 n1 y" a. N7 S{
6 R6 J5 l% k! k! h+ \) N% r2 i6 rint score;
. w# }7 |$ y$ E! Dchar grade; , a1 d& N, Q& @* e* g% |
printf("please input a score\n"); 2 q+ r; `/ R0 R% G8 _8 a
scanf("%d",&score); ( ~& ]( O$ K& \5 q$ [3 z% ^' _
grade=score>=90?'A'  score>=60?'B':'C'); ' U& U3 _2 m. E/ }1 I
printf("%d belongs to %c",score,grade); 7 |/ q4 ~/ F$ y& I+ g/ f" r
} , U5 B. G: C5 y* c
==============================================================
7 e, g0 o, H6 v2 V
4 h/ W# K0 v% Y3 O |
|