【程序38】
. V' Y+ K& x- A5 }' k3 R) T題目:求一個3*3矩陣對角線元素之和 + }9 }9 K+ Y9 Q- x0 q0 C
1.程序分析:利用雙重for循環控制輸入二維數組,再將a累加后輸出。* L$ t" n2 z% O. [, ^
2.程序源代碼: `& s! S+ f5 l6 O
main(). M9 b6 f1 ~% r m& i; r
{
- K5 u& p1 K& @) Y. P4 j! B- m0 Gfloat a[3][3],sum=0;
* K+ z! M$ P5 p- aint i,j;+ N& }) Y6 x6 g. l6 g. o
printf("please input rectangle element:\n");
6 p# d. t# W' h. @3 f3 k% o3 Ffor(i=0;i<3;i++)7 P( s7 Q" Y3 l4 B1 ^
for(j=0;j<3;j++)/ V R" m( U' E
scanf("%f",&a[j]);
6 ^& l8 p$ [$ r+ @8 Gfor(i=0;i<3;i++)& C5 _4 \* ^* H, v! r" S
sum=sum+a;
! [. g: B4 ^' ]3 Xprintf("duijiaoxian he is %6.2f",sum);
b0 n7 [, k; ]( d N- u! w4 l; J}
/ D+ @: d! E$ {+ ^==============================================================% n: M* u9 v! n9 F* i
【程序39】6 Y! m0 ]) ^, ?- p$ G% P: I' Y3 _6 ~
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
, _9 u/ u: U" w+ J1 }" z1. 程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后
p9 A6 |* v9 g 此元素之后的數,依次后移一個位置。
' b; B. \+ S4 d. ]' o2.程序源代碼:
$ y; s8 u& X" z6 x! e% J- l2 Nmain()# U* d& H1 e) s1 s4 w- `
{
" R/ _- F1 v. @, o9 W. D3 Cint a[11]={1,4,6,9,13,16,19,28,40,100};
" O u d5 x. Y1 }int temp1,temp2,number,end,i,j;
+ }% l+ \ D) z( Lprintf("original array is:\n");
" I- y, A) T. g: q/ y( j2 ?" Cfor(i=0;i<10;i++)% g& ?- I& m+ S }2 d1 b; O' t8 }3 n
printf("%5d",a);3 Y/ P: x( B% e& s: a
printf("\n");3 v( s, f" r. u; R9 H
printf("insert a new number:");) L9 b- C$ \" b: y$ a0 J% G
scanf("%d",&number);0 W& j: T5 X4 d3 {( G8 B
end=a[9];1 o6 n. S+ u$ c7 E3 y8 R* q! J* s# `
if(number>end)
y7 J3 R) F. ~) t1 v& W6 I. |0 k; I a[10]=number;
D. y8 K: \: m. `* Y, celse
8 u2 ]! _/ @, @" {7 v {for(i=0;i<10;i++), s- `( t6 f8 v2 K& j, V
{ if(a>number)
! X" u1 r1 M* O0 [* r% I; F1 P {temp1=a;
7 I) ^. m S$ o# O' |0 S! W a=number;
6 k% r8 w9 `& c+ w, t for(j=i+1;j<11;j++)1 G: g* K' z' i7 O9 Z+ `
{temp2=a[j];
7 H$ N: i, O/ j" @% E; c a[j]=temp1;' O' h! C2 d/ R7 H; u& H6 J' s) g* o
temp1=temp2;
) y# {- P. ^( A; ]# Q0 E/ \ }+ k( s! u1 o2 O% f9 O" d( w/ C
break;8 e1 O% k; ]0 p, m9 o: M6 I
}
! n( C3 m. b2 x# V6 p5 P: a }
# L3 z% S, w8 m}: v" A8 f+ f# O5 c9 o ]8 f
for(i=0;i<11;i++)8 n! V: p* @$ G7 W; Q
printf("%6d",a);2 C5 N6 l1 p9 ]% C ?6 B8 u
}
2 a8 y& O! k2 w# H7 o# h0 k0 u8 U==============================================================, h# |& [: i0 l
【程序40】& y) {$ G/ C7 p: I+ m- @6 G7 W
題目:將一個數組逆序輸出。
3 O, x. @6 y9 }/ Y) c1.程序分析:用第一個與最后一個交換。( U0 M X, T! ~* j- D7 C
2.程序源代碼:8 E3 d. d6 |9 p& S" Q6 j4 V% K" ~
#define N 5
" I) Z' o/ A* a! Vmain()
* n7 T R. g) Y% V, k3 F) i6 P{ int a[N]={9,6,5,4,1},i,temp;
6 m) D# t2 \# {& w printf("\n original array:\n");% ]0 H1 W: t8 J" D1 C
for(i=0;i printf("%4d",a);
) m9 Z7 D; Z+ k7 O for(i=0;i {temp=a;
3 M' \* }- J$ K7 ~8 Q% i; n/ ? g a=a[N-i-1];
8 P; t! O7 B6 n9 l0 q a[N-i-1]=temp;1 C ^$ `9 J1 f) @; u6 |6 B
}
- r. e; o5 O& }$ vprintf("\n sorted array:\n");% V" D6 |- m! A
for(i=0;i printf("%4d",a);
! M5 _& I& s! f% ^" H; q" m} 【程序41信盈達嵌入式企鵝一一起嗚嗚吧久零紀要 】
1 c$ m( q' B( u/ G1 L( D! B題目:學習static 定義靜態變量的用法
9 [# T; s/ g! o0 L1. 程序分析:
0 ~+ J6 A1 z [4 u1 i1 m! ?6 P! W2. 程序源代碼: 6 R3 r* {0 b8 T, a
#include "stdio.h"
3 r% r W5 M4 D0 j, n1 dvarfunc() ! {) Z. _) {9 k" F4 W' _
{ & Y: i$ _6 C! H$ m) F- u
int var=0;
7 Q9 s! U& M6 h, l3 O" estatic int static_var=0; 1 c8 P( X: i$ O- T7 n7 z% L7 Y9 ~
printf("\40:var equal %d \n",var); 3 a" P- U' n( {) ~
printf("\40:static var equal %d \n",static_var); ' F5 `: w1 ]6 l) z
printf("\n");
* Y2 w |0 ]. P- O! K5 b) \* {var++; - h0 [: ~0 }# K4 @# d
static_var++;
" G! o. o, j/ K6 V# S0 e6 @6 W2 o} 6 o+ v* p t) Q7 u, N& o- ?
void main() / E9 c, ]6 |3 Q; |, |' }0 C
{int i; 4 L4 {( R3 \- o
for(i=0;i<3;i++)
3 p# h. q3 j4 L& \3 T' R# ~- kvarfunc();
$ k' A" V5 A- W/ b6 g}
# z. \% o' E) W( h: ^==============================================================
6 w, }8 L, ] `( ^0 E) a【程序42 】 & l2 d- \2 [+ O& J6 ] ?, @+ A
題目:學習使用auto 定義變量的用法 3 }/ L- d6 W* J4 s7 J5 _$ O8 m
1. 程序分析: + i; s% D9 t" ^; ?$ Z1 F
2. 程序源代碼:
& ~: @8 o8 H& x#include "stdio.h" # A0 p. k$ }4 ^$ a! c
main()
2 c! H4 L. H- U' P% ^. |4 Z" I! Z) b{int i,num; * S2 n4 K0 _7 V8 u6 Y& i
num=2;
# E! \* F8 J% r# x* afor (i=0;i<3;i++) 7 v$ ~) V$ l5 d# Y
{ printf("\40: The num equal %d \n",num); 3 v1 M, i2 Q% E3 n8 _* W( Y7 e4 P! J
num++; 5 ~3 O" l i+ f7 R8 G
{ , _* |9 R8 Y2 Z5 D8 K
auto int num=1;
r, U* G# k( w x1 Tprintf("\40: The internal block num equal %d \n",num);
' k' K+ ~7 q U4 r$ fnum++;
) J2 k5 @! G, M. l* c7 N} $ ~0 w6 K l% V/ T! L: L3 A
}
8 l1 `& G- i, L" H! F' `" x' u8 O: t Y}
, ?% s% v# P- z& z5 H6 c9 o1 l============================================================== # E0 D: Y! V; n% `: B
【程序43 】
3 t. w6 l2 E( Z4 g題目:學習使用static 的另一用法。
0 o1 q( C* G6 A3 ]% N! p4 K! V1. 程序分析: 5 h* b. o! w7 a6 m# n
2. 程序源代碼:
' e5 G% J- x9 p c, d$ q#include "stdio.h" ( Z: z5 p c; O) x6 ~
main()
. R1 z( r* X# @{
9 j8 |+ R8 N( ]) S2 }) uint i,num;
+ y0 Y: ]6 f4 n6 \. n/ t& B; S8 w. gnum=2; & Z n- t6 z$ b9 H& M: j, _. d7 \
for(i=0;i<3;i++) # n& R" M- l. o0 M
{ ' T: g0 X7 J& O3 z
printf("\40: The num equal %d \n",num); ( |) b( c( |/ N: ^2 J& M G
num++; ; u* F y% @( N1 J3 e6 T/ p
{ 0 `% E& k. Y. g: M
static int num=1; 5 O7 W6 X0 a. F- |' s' @
printf("\40:The internal block num equal %d\n",num);
$ f% ]6 h& C. O0 {num++; ; g! Y/ h f" x" T4 K) |; P
}
& e# {+ L. l) r& F; g2 A} 0 D1 g# B& Z9 c' h
}
3 N6 L' P* B; M1 {! r==============================================================
8 \$ q- W2 y# s, C4 P0 \, N! Y【程序44 】 * y e1 [3 G0 U& ]9 |3 p# F a
題目:學習使用external 的用法。 " l; A- C; _& b6 l- p
1. 程序分析: 5 p1 ~8 @' P4 K" \' H
2. 程序源代碼: 6 I* j8 f1 S5 k
#include "stdio.h"
n- E" u" q6 kint a,b,c; 6 y @4 {5 y$ e
void add() ; A! R' o3 r, S9 k: C* ]
{ int a; - Q( z' a7 r2 F1 Q
a=3; . I* |: m5 v, ?* ?0 ^: z% D% O! T
c=a+b;
8 m2 K' G: F: p) [, P7 W9 V) N} 5 {6 \$ x# i9 `) v/ c3 y0 r
void main() 5 c" V* _) j R7 `- Z) `
{ a=b=4;
7 }$ r- c3 T% y, r2 b: v* E6 yadd(); ! G. ^3 C% a, G" A. k& ~
printf("The value of c is equal to %d\n",c);
3 Z9 Z" t) O$ U0 Y! _}
% Q$ F, k1 w9 {. W" M==============================================================
, s" q* ^( |5 A$ L【程序45 】 g- ]( w4 _ I/ u4 g
題目:學習使用register 定義變量的方法。
4 C8 ^: l+ J& s+ Y' ~1. 程序分析: # ~; r$ }: W6 Z3 N$ g% ~( I0 G
2. 程序源代碼: $ P2 _( a5 f# G. D7 a4 `
void main() 0 h. }7 O/ q0 U# t: V3 N
{ - \4 F8 l+ z6 h- P5 i4 U
register int i; 7 w( f+ K: V, R& e4 g" C
int tmp=0; 0 m! r! I% _+ l' i, w; E/ D* E9 s
for(i=1;i<=100;i++)
0 B( ~" \2 w$ X6 T! j" \tmp+=i;
& \& \) r4 k) F3 R' dprintf("The sum is %d\n",tmp);
! V$ j! b a% _( Q% s* w# \, V} - m5 z/ M2 n0 _7 O: E' k. \
============================================================== 4 p, g* {* I- `; P! t. {
【程序46 】
' u6 D$ h1 A) O題目:宏#define 命令練習(1)
8 p6 H0 ?! g5 m, f1. 程序分析: * {; q* C$ L. |, E! j/ O! b3 i4 F
2. 程序源代碼:
) D8 a0 |1 e" ~& t( g#include "stdio.h" , w$ f; Q2 T1 {7 m8 K# ? Q" x1 s
#define TRUE 1
; ^' b2 R) i9 E) b& o' P#define FALSE 0
C# M: [! p% Y i5 q* A#define SQ(x) (x)*(x)
9 R& w' k) f( z- t- F5 e* @, gvoid main() ' ^; U; b- J, ^% |) ?4 }
{
1 d/ P7 d* R# |int num; # a9 s+ x, j# z& Y3 u/ G
int again=1;
; {" I8 P/ Q: a- h; Tprintf("\40: Program will stop if input value less than 50.\n"); ( F5 }6 r) d4 ^: y! x. L9 b
while(again)
D. V; C) c& c3 ~{
& }6 K$ F0 K3 I% a T- X' R, Rprintf("\40  lease input number==>"); 5 P5 ^) G' X/ B+ B
scanf("%d",&num);
4 c4 f8 b* `; n" `3 T; ~printf("\40:The square for this number is %d \n",SQ(num)); / v- V4 j* g3 {* X! L4 F$ X
if(num>=50) # t" y8 Y# V. |
again=TRUE; 4 p7 C }7 q* W) L$ C. `/ @
else / T! T: P& w d* s* D% l) o5 i* a$ S
again=FALSE; . h* G+ A8 ^! i; k! R4 V A
} # o# }2 S0 K" F3 Q' v4 f
}
2 k( A+ N: u3 w" v============================================================== Z1 W' M0 Z1 F% c n+ @
【程序47 】 2 Z; r- K" a) E+ I
題目:宏#define 命令練習(2) " t" O$ H; }. T( d7 y' b
1. 程序分析:
7 O2 d* J# ?" r; e6 d2. 程序源代碼: 8 T9 Y2 \: f& r8 ?
#include "stdio.h"
: ?" W, P0 s- {3 h/ }7 D6 u#define exchange(a,b) { \ /* 宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/
6 Q4 L* u1 z f# x) q! p. Rint t;\ / i1 G' H: U' }6 |+ d
t=a;\ ( z5 U2 J2 h5 q; w" t* \/ Q/ T
a=b;\
2 l& c# h7 o1 f5 y0 @: ib=t;\ 0 ~/ P1 r- U" y! b r" d
}
6 o! K" g# C' R2 L f/ L4 i8 pvoid main(void) 7 I$ }; x) U6 e
{ ; W: |) P3 S+ }0 l# D
int x=10;
' M" z. k/ U) X5 K; Bint y=20; + P! s8 {' e8 d1 X+ Z( `0 e
printf("x=%d; y=%d\n",x,y); ! l O2 h! c7 {
exchange(x,y); 2 z! F0 b3 O6 v9 r
printf("x=%d; y=%d\n",x,y); + x$ i! g U6 o8 j- g
}
2 C& t6 P" K H) A==============================================================
- D2 ^, R0 O7 J6 c! s6 z; U- t【程序48 】 * ^1 D+ b g1 U! A' I5 b+ I9 n, r
題目:宏#define 命令練習(3) . y2 ^" m; ^0 {/ f. O
1. 程序分析: # x, @$ y5 b% x" m
2. 程序源代碼: 6 i3 W1 B( n* B( @ \6 d4 B
#define LAG >
0 Y4 u# S8 P& t8 p#define SMA < " b3 @9 w7 i8 T
#define EQ == 2 a j k$ L6 y7 w
#include "stdio.h" ' u2 S# ] d `! N7 e# G$ _& q( G
void main()
, }) j/ x5 I1 _' f. u{ int i=10;
! r; a/ Y4 R2 x3 S( d6 N0 M+ Wint j=20; * N: S0 p# x% n' C* }
if(i LAG j) 1 |5 O& `2 P0 G/ I1 P) H
printf("\40: %d larger than %d \n",i,j); % Q" }; ^2 J$ v6 H ^2 e8 W: U
else if(i EQ j)
9 o9 v# p' {- U8 uprintf("\40: %d equal to %d \n",i,j); 2 O; M6 k' H( V9 F
else if(i SMA j) 2 v& M _8 j$ S8 N; h/ f/ n
printf("\40:%d smaller than %d \n",i,j); , Q# S+ V* l1 G1 j, ~# q
else ( ?) i2 {9 E1 t. I( k9 P) E
printf("\40: No such value.\n"); " T# N/ T$ V8 q" a$ J6 g5 p" s8 A
} : i8 O9 `; p% u& M1 |) ~4 u3 v S! x
==============================================================
" i' r0 c* R: q$ R y, h* D. {( Z8 m# m' M
|