|
【程序6 】
' w0 Z" t# Z: b" y" U# q- s題目:用* 號輸出字母C的圖案。
& Z) L+ `5 V+ A1. 程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。 " F6 W0 [2 T0 }% f" u' s
2. 程序源代碼: , t! t! C0 c3 ~% C0 K
#include "stdio.h"
" w+ o1 n1 i5 G8 y$ b1 [: bmain() { : D( R3 M1 a7 A9 O8 e7 K
printf("Hello C-world!\n"); - s6 ]/ k1 ?/ H; E( R% i
printf(" ****\n"); 3 L0 f0 s i" w' A! p
printf(" *\n"); . e1 O7 ?5 o' K, {2 E8 h7 d
printf(" * \n"); 4 B9 T" e( c/ j, g9 z7 w" }& r
printf(" ****\n"); } ' h7 v: Z2 r8 \+ M9 e; a" z2 }) e' ~
==============================================================
& _5 p% f5 K# O( \, R6 l【程序7 】 1 \3 W, w* N. z1 [/ G) t* d( w
題目:輸出特殊圖案,請在c 環境中運行,看一看,Very Beautiful! # F6 F7 u: F9 J9 w
1. 程序分析:字符共有256個。不同字符,圖形不一樣。 : h; `4 v! B" D; y( w; H$ ^4 [
2. 程序源代碼: . t4 ]' M# o# {3 R" Z7 \
#include "stdio.h" 5 ^& N2 c: L4 b/ u* G8 {
main()
9 i; A# Z4 j8 \{ " J+ x) \& i( m" G" c1 G% P
char a=176,b=219;
& S- c ]: t$ L: c/ Nprintf("%c%c%c%c%c\n",b,a,a,a,b); ) t5 d" Z; Z1 x( U3 W# [
printf("%c%c%c%c%c\n",a,b,a,b,a); ! @# d! R" g' N, F; i
printf("%c%c%c%c%c\n",a,a,b,a,a);
/ M. B1 I0 w$ t. [) Z- lprintf("%c%c%c%c%c\n",a,b,a,b,a);
/ n6 f N9 ` T3 `) Tprintf("%c%c%c%c%c\n",b,a,a,a,b);} 4 K& _" r% G6 s7 X" o
==============================================================
' A! e% K% \5 x8 ~3 c4 J【程序8 】
& i) P& L2 J) ]( _題目:輸出9*9 口訣。 / d4 _& P/ j y# v2 I3 M
1. 程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
' [: A: c; T. A5 _7 ]1 \2. 程序源代碼:
0 b* e% N9 f& @2 O% ?; X: Y' X#include "stdio.h"
( P- J- U8 R( N4 s4 ymain() $ d& @% b6 b3 [# U6 j4 X4 O; d4 h- w
{ ; ? q) p3 e% t. N
int i,j,result; + R( l, }& w1 O( O
printf("\n"); 7 {1 x4 H) m7 _0 C! j
for (i=1;i<10;i++)
9 c7 R% H E- ~/ r, b* l- \{ for(j=1;j<10;j++)
' o' ]! _, `# R& {- S3 {5 g& Y& @{
+ E$ U1 ~: v( Z hresult=i*j;
* g8 n# n8 C* s( z9 S& b( A! Q; Aprintf("%d*%d=%-3d",i,j,result);/*-3d 表示左對齊,占3位*/
4 Q7 i: I. m5 I! O0 Y}
9 v w4 M$ u" lprintf("\n");/* 每一行后換行*/
7 d* j* R! m7 k/ E$ w9 y0 M} 2 G- @% e. h( R
} 4 L9 |0 `; r5 ^8 f' F# Q
==============================================================
6 S! c& i8 Q: U+ \3 T+ q. E【程序9 】 ; }7 S @. ], ~5 B/ }7 i. z
題目:要求輸出國際象棋棋盤。 (嵌入式學習企鵝要妖氣嗚嗚吧久零就要)
8 ]4 h) p4 Q; l; D4 c1. 程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。 8 h: g2 b5 I/ t$ ?/ ~" }# `
2. 程序源代碼: # `, z0 c1 ~# z- n: w2 U, w
#include "stdio.h"
% I. C C7 g8 q9 N% V( |main()
+ d& f& [, U4 p( J6 O{
1 L( }. ^8 q, Eint i,j; / f4 G; D! O, s
for(i=0;i<8;i++) $ U, a1 V: C5 C0 X7 l& H* ~
{
# s. Z( w7 K2 L4 L0 D$ p& ufor(j=0;j<8;j++)
/ S& m5 K' T c) f8 jif((i+j)%2==0) * f6 z) u# y+ z$ e) M5 J
printf("%c%c",219,219);
, x, G% T6 j* V$ |4 u L8 delse
" v9 t2 N% g( Y2 U* wprintf(" "); 0 y% i8 ]; T2 d7 c' i; `5 e
printf("\n");
, ^0 y2 \; ?! b' T; s# j0 B}
+ T# a7 G4 l, i6 k. Y Z8 Q} ) x9 `7 h H4 V' [( d
==============================================================
; r! C6 Z2 M( r$ K5 x. O7 k【程序10 】 0 i) p; N3 u: k5 T! P8 e
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。 + U0 \6 H+ k0 R2 e4 T) H: M
1. 程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。 - Y2 C1 }( R) ]2 Y; I2 b8 r
2. 程序源代碼:
8 B1 T2 Z2 d7 c: }, R- r#include "stdio.h" ; F8 x' C, e+ k' p5 Y' ~9 d
main() % l) k8 r9 G5 q6 m; I% a
{
: `% W% U' i" u7 A0 k% u6 v) Oint i,j;
9 ]2 J/ u! g' I+ sprintf("\1\1\n");/* 輸出兩個笑臉*/
6 A0 \3 v" L4 j2 b3 ofor(i=1;i<11;i++)
7 Q; T! P+ x7 a$ l0 T{ 3 a7 O) g g3 t! Y3 e; b: X
for(j=1;j<=i;j++) , |/ t' [% E1 X
printf("%c%c",219,219); : l, }) I/ @$ \& K" r
printf("\n");
9 Q) g2 |! O0 j} 5 g0 D& }7 M# t# z N" t5 O/ L# e: R
}
* h" O. Q5 g$ h' }5 i9 J* B0 }/ u2 R" |/ T4 D8 \
8 W7 X) W+ i. e O5 O
, i9 m( O( P8 n- p' f: F J; O作者: zhlei81 2005-1-22 11:29 回復此發言
' w3 ~, H9 b8 H8 G& l* V0 I4 A8 O6 j- {0 r+ X% B
--------------------------------------------------------------------------------
; _: W0 }: U. v8 U
. l8 r% F2 d @$ m0 T: z! e3 i3 回復:經典C源程序100例
6 Q" W9 c" u7 l7 z v* _( M【程序11 】
5 i6 u* V2 ?. p6 y' S) C8 S題目:古典問題:有一對兔子,從出生后第3 個月起每個月都生一對兔子,小兔子長到第三個月 & \# p- ^2 p. B; Q, m9 K
后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
% t4 {4 Q6 N# E0 A, ]) _1. 程序分析: 兔子的規律為數列1,1,2,3,5,8,13,21....
$ `! k' r C$ l, V# ?2. 程序源代碼:
) u- n2 U: ]7 l, G8 B; T% A4 Bmain()
+ n+ x7 F. P2 f{ ( E: [7 p/ r) L, [2 w3 U Y# b. ~
long f1,f2; . P V9 c, [) d/ ]8 D3 f) D9 x" {# n! V
int i;
& t# t( v' E" Y4 {0 _( H6 _f1=f2=1;
. G$ Z# S* Z. J( D$ [for(i=1;i<=20;i++)
3 w8 X- ~( `0 } R$ k3 I{ printf("%12ld %12ld",f1,f2);
/ [. q9 Y3 H$ B6 c" G! wif(i%2==0) printf("\n");/* 控制輸出,每行四個*/ ; v# i" C: x# O
f1=f1+f2; /* 前兩個月加起來賦值給第三個月*/
! E2 t" u( v) L6 O! a' N) |f2=f1+f2; /* 前兩個月加起來賦值給第三個月*/ 3 f0 r7 }, R6 ]9 l1 {5 Z& w" v; B
} ' M/ {) A6 [( q: Y) S. g
}
; O- I: r- r; ?4 m, I==============================================================
+ F, l* s% I N! X5 P/ B7 N& V【程序12 】 6 z. ?3 S( c5 P0 i3 H
題目:判斷101-200 之間有多少個素數,并輸出所有素數。
$ ^! Q# W6 X G# F k6 v5 Y1. 程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, % p6 N- ?3 [1 A. l; E5 d! p
則表明此數不是素數,反之是素數。
; o8 T- m* C) N& w: ]2. 程序源代碼: ; b9 \" U! b3 v; F
#include "math.h"
+ x% l) |% s9 n: Xmain()
/ K5 v& u4 {. ^$ m t{ . o) u0 l6 G( u
int m,i,k,h=0,leap=1;
, d- C7 s! G% oprintf("\n"); - a/ V7 K b+ r3 N
for(m=101;m<=200;m++)
% K5 y! H8 S" D0 S4 ?6 A: I{ k=sqrt(m+1);
. Z. p3 |. k2 f( l8 I; w( efor(i=2;i<=k;i++) 4 n- s, n, g7 N
if(m%i==0)
/ B( E' F9 m }! s' j6 ?& J4 ~ t{leap=0;break;}
# u7 M8 J( u2 x' S/ K9 Lif(leap) {printf("%-4d",m);h++; 5 r% `, y! }& w: }- ~2 K( c
if(h%10==0) ! o! ] t9 F3 h/ s6 }
printf("\n"); $ U' `& ^, L: U# F3 o' `
} : A) y* z% Z" ]& s6 \
leap=1; % _+ T% p; a7 V$ i
} 0 y& o& B8 j. M4 k+ z/ V6 O
printf("\nThe total is %d",h); + v, ^" m% \2 i- c' d! U
}
; ]1 ]! {! b; g% N4 X==============================================================
7 j4 Y7 ~7 J$ p/ @【程序13 】 7 h% N" P4 t4 n/ E6 z, r2 z9 T
題目:打印出所有的“ 水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等于該數
# T% N; H/ {0 a- K本身。例如:153 是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
' ?5 @' @0 u( \, s1. 程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
r3 u5 D1 ?2 }. r2. 程序源代碼: ) t, r- X; @7 P' A1 U7 s& M
main()
% D* g8 U: N; @& j; R. K5 d{
3 u. V9 F5 t% v8 ?( pint i,j,k,n; # D! j) s4 E- v5 e u
printf("'water flower'number is:"); ; g5 H" M5 r( A% b
for(n=100;n<1000;n++)
' I, O! |: n7 D* m( n{ ( H% v8 B: M. ~
i=n/100;/* 分解出百位*/ 5 i! p& N, _4 `/ C9 Z* B) n2 B) \+ ~
j=n/10%10;/* 分解出十位*/
% U- E I% `2 ~4 b4 X9 Y* ], Ik=n%10;/* 分解出個位*/ ' M9 g; A" F+ t( y
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
4 r* V* `. @9 X ^* X{
2 P% n6 l/ W* dprintf("%-5d",n);
* Q. D9 G$ \" b} ' U7 r* h" X( k* {, a; P; Z& z4 p
} $ U5 A1 r$ b5 _+ S
printf("\n");
& k9 n# |0 W. S$ h* K! p} ( f0 i( n, W! s }3 u
==============================================================
7 y* b. K( w- {1 ^+ R& f& I7 }* ^【程序14 】 0 }7 [- O% `- K8 s3 M
題目:將一個正整數分解質因數。例如:輸入90, 打印出90=2*3*3*5。
& I9 z h( c+ N* J( D. h
4 g" A, P0 H; e3 s0 j2 x5 ~程序分析:對n 進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
( Q8 X' H& P! b( N8 [9 c9 E" U(1) 如果這個質數恰等于n,則說明分解質因數的過程已經結束,打印出即可。 : B6 b" U6 Z- ]: t+ m
(2) 如果n<>k,但n能被k整除,則應打印出k的值,并用n除以k的商,作為新的正整數你n,
8 ?6 T* Y }* j9 k重復執行第一步。
; ~, x7 V8 b, m1 X3 y(3) 如果n不能被k整除,則用k+1作為k的值,重復執行第一步。
% b D2 V4 K6 _( R- x) {2 V0 F9 L) u
2 w9 ]% ]9 }% H5 ?2. 程序源代碼: % V3 Q" M' }' O: }# U% Y3 n
/* zheng int is divided yinshu*/ $ D; @0 S5 W) \7 g' E
main() ; ^0 S. m- N3 x) X2 s* G2 j
{
* h9 A$ M( ~8 N, {0 `( S7 vint n,i; 8 V1 C1 \$ L+ o- E8 \) V" y
printf("\nplease input a number:\n");
" S9 D4 A$ |& G4 | n) n5 h. b, ?scanf("%d",&n); 2 D, F( v$ ~6 @- N/ {% Y
printf("%d=",n); / r2 }/ e- t" M0 l! E
for(i=2;i<=n;i++) . B3 O2 K0 ?9 Q- B7 f% u. F( M8 p- Q
{ ' q& n0 i) ^1 Z+ a& ?# H" z' b. H
while(n!=i) / k7 \* I* a3 z6 [# z+ U6 `; L( g8 D
{
8 J$ p8 |- G" e1 ~& X0 Aif(n%i==0)
9 d/ ^( X* `# S! H7 B{ printf("%d*",i); $ J$ s, v _3 v8 o
n=n/i;
, n6 X Z4 t/ Z8 G. v( O I}
. [5 Z7 d- f& F5 O5 z( yelse ; L: m) \3 ~7 ]
break;
" S1 T# J/ n, E0 Z! `}
7 \& y' C! ?5 j- _} # d0 r; H: D- `2 N
printf("%d",n);}
3 U( d8 |8 v4 n6 q6 V==============================================================
4 }# K- N) z/ Z8 g- x% R3 U【程序15 】 + M+ F/ m* ^! w* L) h" ]
題目:利用條件運算符的嵌套來完成此題:學習成績>=90 分的同學用A表示,60-89分之間的用B表示,
2 ?9 ~6 N+ W2 E4 q8 v; ?7 x5 ~8 t60 分以下的用C表示。
. d; d- i: h4 p0 G$ C1. 程序分析:(a>b)?a:b這是條件運算符的基本例子。
7 P3 q! L) {# S4 L% F$ _! ~2. 程序源代碼:
8 g) { X9 x* r+ c4 s9 r8 m, X& ymain()
5 Y# V0 g# O, Z9 \" g. C{
( p H1 s$ W1 Y: C( D5 g" lint score; # H/ J: V4 D* Z n8 t
char grade;
3 ^2 w" V& A1 q0 P- V w3 wprintf("please input a score\n");
' P R, g' p" p, |6 e. Bscanf("%d",&score); ; y8 S) z z. C& t
grade=score>=90?'A'  score>=60?'B':'C'); , Y) _: S) i( ?
printf("%d belongs to %c",score,grade);
3 X- F, H2 J. r# K- Y5 ?} 6 L7 @. A# b# `5 @- n3 ]6 s( J" _/ i
============================================================== ( v. P* p. I, n3 P
$ o0 R% M1 g' p" V! k r w* ~7 a |
|