【程序38】
/ U" o+ N7 \+ r- B题目:求一个3*3矩阵对角线元素之和 # R: F3 O! U- U# f
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
% T# c4 A" P: t( l- I8 t2.程序源代码:
* l3 b# L2 S3 Q* I" Z8 ?8 R8 }main()
' M- {, ?6 a% I0 x8 r" Y- T{
8 U y- d" g% G8 |4 D# sfloat a[3][3],sum=0;; R2 z! r* [: M& \& a
int i,j;
+ i" ~4 ?: \* Z# w& l/ m, t5 Gprintf("please input rectangle element:\n");" s# R) i1 _- I" Z4 @# y, ~7 V
for(i=0;i<3;i++)
3 d- `" `# A$ p# A h for(j=0;j<3;j++)
( q% P% K0 f) Q5 r) l scanf("%f",&a[j]);
0 A$ v: c+ q& a* q$ Bfor(i=0;i<3;i++)
3 M2 h& _, c+ f' Y d- T sum=sum+a;8 _) J+ {+ k# ?) v# ]
printf("duijiaoxian he is %6.2f",sum);3 s3 [, @# r4 w; N
}
9 P! N1 U# M5 }5 x$ y X$ k6 |# @==============================================================
& l* R" _3 u8 P- D【程序39】
5 e# C+ v1 r9 a* t x8 X2 M题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。1 x g7 l+ Q/ R& j) @
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
/ h. y+ u: e* }- `- }- q+ j; l 此元素之后的数,依次后移一个位置。 9 m& V3 Y. g% |# g6 x: z
2.程序源代码:. ^( K9 ~0 o+ U( d% Y+ l; N8 c8 H
main(). h" _ X, V% j9 r& T
{9 P: k7 N/ |; c
int a[11]={1,4,6,9,13,16,19,28,40,100};) Z: m- }2 p" g/ n6 o! S% }
int temp1,temp2,number,end,i,j; Q. V M- O4 U+ @; _
printf("original array is:\n");2 l/ @$ ?* n' Y4 T
for(i=0;i<10;i++)
3 F" {, L+ i# z: O. l printf("%5d",a);
7 }- I+ B! e3 ~5 d5 m0 b: ]printf("\n");" D! I' j; A4 t
printf("insert a new number:");) g# h9 k+ a; U/ c+ _
scanf("%d",&number);
/ E$ @: l7 U9 yend=a[9];' J+ t$ L( ]3 n/ p; |
if(number>end)
4 ^! t( z" v' w2 S6 Q5 F a[10]=number;
" D+ Y+ C6 |" P, I* `. Lelse) o- c+ u3 n: [1 E
{for(i=0;i<10;i++)
0 Q! m8 A4 n8 k2 F& l4 K. x { if(a>number)
, M) F, l0 q( l% c T {temp1=a;
2 n: }- U( T' I5 {4 x' W/ t a=number;
; E S' B% V! ^) F. _8 } for(j=i+1;j<11;j++)* H- k' a' f4 d1 M1 K- x
{temp2=a[j];
$ a) L3 n/ Y- ~6 S: O0 T0 v a[j]=temp1;, j- Z: A" \2 h
temp1=temp2;' ?& h! ~) G9 `3 T3 g
}
& w# `8 h6 }& M# H* g break;. p. `- j5 W6 h+ | X3 k9 P
}
8 Z8 c4 s/ G$ |8 m8 m) x. T0 C$ Q } e. I3 w* C. n) k
}
: N! o+ U& ?( _1 F( zfor(i=0;i<11;i++)( D; v" s- H$ e5 {
printf("%6d",a);4 I' k/ h& h% ? U5 `" |0 i+ q
}0 @8 a7 k& w* K2 o' c
==============================================================, Y0 w% o$ A! x/ A0 |: e& U
【程序40】6 H* m, p1 d8 y- i, L+ E! j- Y
题目:将一个数组逆序输出。0 y$ N7 z) H) R
1.程序分析:用第一个与最后一个交换。
4 i5 F" l6 i1 M6 Z* v! ?5 B' P& O2.程序源代码:6 h1 X! m3 D' @( n3 c3 \3 e3 K
#define N 5
' s+ A% Y# y# n) s; hmain(); P6 |9 a6 v+ \) n. ^" U
{ int a[N]={9,6,5,4,1},i,temp;1 R) D/ L* n9 u" {# @1 k+ D- i
printf("\n original array:\n");
# _+ _2 {" [) c* \ for(i=0;i printf("%4d",a);1 f* V; a8 O- u; j/ m6 f
for(i=0;i {temp=a;
" g. m/ y' l$ D& T8 l" @ a=a[N-i-1];! a/ `& v( {2 b+ X
a[N-i-1]=temp;
' Y% _) a3 ?# a& Y) D& d# F }
: C5 _1 X+ n( n' jprintf("\n sorted array:\n");/ Z, s- ]( Y: K4 l. q8 ?
for(i=0;i printf("%4d",a);% b; {9 i, w! k l
} 【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 】
: l+ e, {3 B5 C题目:学习static 定义静态变量的用法
$ ~2 ~: h6 p) j7 Z7 K) ?1. 程序分析:
$ t, [+ Z& f8 |, ^! J5 p2. 程序源代码:
% L" i# q. E& _& H2 |5 @6 O. k: M#include "stdio.h"
, X; k q5 Z8 S8 I- b+ uvarfunc() ( K' a! `. S3 ?, i! S; {3 l+ n* F+ D
{ + ?) {8 L, |5 e# L) U) P
int var=0;
! L& M, ?- B- tstatic int static_var=0;
$ r+ P7 J" [8 F3 yprintf("\40:var equal %d \n",var); 1 r! M& _0 e& F* N
printf("\40:static var equal %d \n",static_var);
# h& F: W. ^* u" M @" ~: i6 Gprintf("\n"); - M( ]$ Q% F& f) E& S& n) x
var++; / k- b% f q7 Z0 A' ^+ s
static_var++; + g! W/ }5 E8 Q, N9 F$ \
}
& g2 |) X% }* e3 kvoid main() 0 l3 _9 N7 P9 e, A6 W6 z
{int i; ! f6 z2 T) |6 o3 \1 g3 j2 j
for(i=0;i<3;i++)
8 J, o9 i) \0 dvarfunc(); % g8 s/ [# _- b* c! m3 Q% r" H
} / m H- m' H, `" X: u: i
==============================================================
( N/ G; U7 ^9 }【程序42 】 6 _& a0 e! N1 @3 k* K" e3 i4 Z
题目:学习使用auto 定义变量的用法 [; t, U- E& y) w' I) }& O. [) a
1. 程序分析: $ Q$ T+ S% _; `- J$ \
2. 程序源代码:
, w5 `- n! b4 t1 m#include "stdio.h"
2 ?' @0 J4 U/ v7 K( `main() ( V7 J% G( ]" Z2 p$ X
{int i,num; 7 y I1 q* \; A! s/ Y" P1 O0 [
num=2;
! J, @* U) b9 E" Q: {' q, ^. Hfor (i=0;i<3;i++)
3 k0 x4 P1 P W8 D' t' C{ printf("\40: The num equal %d \n",num);
6 D8 ] m. d" o( L4 \% z* vnum++; # _' Q8 D) h+ t6 t
{
: P, q; p, _; Z! [1 q* c' Lauto int num=1; 2 J* X) {& J( t; r; U
printf("\40: The internal block num equal %d \n",num);
6 D4 _4 h- v' D# E9 T: d) ?num++; # D9 U) O" d$ I7 ~3 j
}
4 \: A6 \6 s. |- i0 p. a0 f7 o H} & X9 K+ C/ @7 s: Q
}
' l# M" J( Y$ ~8 U==============================================================
5 i, O) W. L3 o J" y; p【程序43 】 8 Q* [ R" D. c& M% b) W( n; l
题目:学习使用static 的另一用法。
6 N' G% H/ |! |' O3 n/ d1. 程序分析: 2 W( c, k# w( K& _
2. 程序源代码:
5 E1 d4 r2 I2 [0 K& ]0 ]3 y#include "stdio.h"
% P( |6 v5 h% m- l: t Dmain()
: Y, e8 F! f" r- V{
( Q9 P8 O$ J. d5 Eint i,num; 3 F# C& s/ [6 T& [/ g/ ?
num=2;
s2 X& h( L; t+ y" b8 c4 }for(i=0;i<3;i++) 8 }' c: n; O0 u ]
{ * ~7 @$ J" u# T, Y: c
printf("\40: The num equal %d \n",num); 2 y" p! U1 p( G; t' n
num++; ; p% U/ V+ _! n0 q/ @
{
) K& P; z; H, q/ o. ~$ sstatic int num=1; ) Z9 E4 D8 H, n* t& s& a2 D ^
printf("\40:The internal block num equal %d\n",num);
( B# J8 C5 p$ y: ~num++;
, {; I; `" {/ M I6 N! ~' s. C/ t}
# q* n# g5 u9 [+ H) ]}
. N4 s2 d8 a1 T; L1 E' q" t} - {3 R* A! A1 k# x5 q
============================================================== : T( v- ]" u4 I9 ~9 j( d
【程序44 】
7 n6 ^0 w$ U: y' k7 ]题目:学习使用external 的用法。
5 m0 a8 z0 p" U+ }/ s1. 程序分析: 2 S4 u4 L5 [4 v) q. a
2. 程序源代码:
; g: T7 Z2 q( k#include "stdio.h"
1 w1 C: S: W3 R( N* n9 T9 jint a,b,c;
5 P2 w8 Y, u# @( d k; ^+ F% pvoid add() * H+ [4 N1 z4 I7 k5 i; d1 o+ [. @0 k9 l
{ int a;
8 m3 y2 [- _) Y( r( ]a=3; / y2 o9 g, h7 G K
c=a+b; 4 ?" J ~8 t. O+ W! S2 u+ i
}
, H1 x+ N5 ?$ F3 }: M6 _0 `void main() 6 p' B) U P+ d& F
{ a=b=4;
# C3 U8 S B( J; ladd(); 9 T Y1 T5 c8 W# q; q" v, X
printf("The value of c is equal to %d\n",c);
8 T2 X( i2 s9 S2 \} % T$ ?' E7 i% r; x0 r6 T& J( b- t
==============================================================
1 q4 R- |4 O! I0 I6 k【程序45 】
: P% Y6 Y( }3 S' Z" U) N* v5 ~题目:学习使用register 定义变量的方法。 6 `( |& f; c9 o9 e
1. 程序分析:
: ~, o& [. p" W4 K) J( Q2. 程序源代码: : z/ ^2 |4 S0 Y0 z
void main() , S4 R8 D- n/ q) Z/ a
{
$ T# I4 }3 Y+ Y9 f0 J4 {9 g' Iregister int i; . m5 R& a- `7 u% }
int tmp=0; 5 ~" j' S2 T# c/ p4 n0 ~/ W
for(i=1;i<=100;i++)
6 }6 h9 }; D6 [" }8 {/ e1 Ptmp+=i; 9 {/ t7 }5 s: h: M) Y
printf("The sum is %d\n",tmp); 6 u, Y, g% K' e4 Y; R: [+ x, B
}
4 d6 H: b' b4 A' N6 H0 `============================================================== . o* u; d7 ~. S- y
【程序46 】 * m' K$ B( `8 F) ~4 A" D
题目:宏#define 命令练习(1) ; a& h. g' i, ]$ Z G$ N& M3 j
1. 程序分析:
: \, O8 I, S8 w' h% }" q2. 程序源代码: : c8 q6 V b+ V6 q9 A0 ~7 L
#include "stdio.h" ) w7 A! \/ O% B0 f$ \
#define TRUE 1 . J2 U5 v0 k9 f( v, O* Q. x# Z
#define FALSE 0 ) @- ?' l" ^$ ~
#define SQ(x) (x)*(x)
6 S4 T* m/ g% ~$ V! U. |void main()
5 Y; M5 K5 P% b+ J" [. L/ G{
. n ^4 z2 Z1 W0 ^int num;
- _3 b" T; g* F) v( Hint again=1; 5 n! x1 w- v& M
printf("\40: Program will stop if input value less than 50.\n"); # I! A5 t. P' V7 ?4 t
while(again) & N; E6 U- p0 q2 s% h
{ % N3 R# R7 l8 ^# o' a6 z; z
printf("\40 lease input number==>"); # o4 l1 e. N6 r5 ^$ B" P
scanf("%d",&num);
! R7 x/ V( C& O9 q8 u! `1 _, Qprintf("\40:The square for this number is %d \n",SQ(num));
9 B1 A. l* ^1 n) \. R) @- dif(num>=50) - P$ `- H- R2 [6 H. t, m
again=TRUE; + T% U( t+ x/ }* x: o' ?% ^
else 8 V6 i4 P/ H9 M+ ?
again=FALSE; 1 |) I4 P, I" ]' `. I( n6 ?$ ^
}
, R/ g# H: v4 C, R6 J} * p, s& r/ r& P# n. g
==============================================================
) u0 J, _6 D& R: w【程序47 】 + i9 W) ]3 ^6 \! H6 W7 n# E$ a5 P* M' A
题目:宏#define 命令练习(2)
2 Y* B7 t2 X! @- g/ |' c1. 程序分析:
# _; m! h3 M( x, H: e5 I2. 程序源代码:
! D3 _+ ] ^) t#include "stdio.h"
( X8 [2 e+ M% e; a1 o9 e#define exchange(a,b) { \ /* 宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
) O2 ` k; q; C# f+ k& Rint t;\
( r& ^9 F: f; z( M* z9 v9 z. Nt=a;\ + V1 D" S1 f8 s
a=b;\
0 b: f+ X6 D# o6 F/ Zb=t;\ ; B% O6 c1 v5 n' g) {/ _
}
5 V) e4 Z# Z$ ^+ }% f. Tvoid main(void) 0 `! f. E J3 R% s2 {) C
{
. {! Q/ y9 n1 s/ kint x=10;
# U, I* N7 _# p9 Aint y=20; 4 A |6 l* A( {
printf("x=%d; y=%d\n",x,y);
" H1 T( y7 y* Q! H# S- A; n0 ^exchange(x,y);
/ V5 W: h. N+ e3 Kprintf("x=%d; y=%d\n",x,y); / P6 ?- |% k+ o! Z
}
6 g, f+ y" }5 }3 Q$ [- P============================================================== 1 ]2 m5 o6 m& q" w% P7 |- h
【程序48 】
: P) ~# n$ s5 r/ q* U题目:宏#define 命令练习(3)
( D! e# |9 I6 @1. 程序分析:
4 Z6 u+ s; H" P. _2. 程序源代码: ) |% q1 S6 R2 V' ^& ^, {+ o
#define LAG >
# H% I$ w# c' C: j#define SMA < : \2 g3 C" E8 G# P+ b; H( ^) j
#define EQ == ' ?& m* l' {/ {# R' q i
#include "stdio.h" " n0 G, y+ e2 d8 V: P6 I5 e0 t
void main() & C8 J# O; G9 e) X! Y
{ int i=10;
9 Q9 u" i# v: C& rint j=20;
) o& h" }1 P( Y( [" {6 Cif(i LAG j)
# }% p3 i8 J/ L8 q% m% Cprintf("\40: %d larger than %d \n",i,j); % c8 Z+ {+ b/ x. c
else if(i EQ j)
5 B4 T. J3 ^' f. U c" e# z0 Aprintf("\40: %d equal to %d \n",i,j);
6 H. q% r( S. K9 |7 celse if(i SMA j) 5 \! B K: q- z, g0 a
printf("\40:%d smaller than %d \n",i,j); ) R* n- D0 ~! ]. P
else
P+ ~3 ^8 b2 {printf("\40: No such value.\n");
9 \3 U, r# Q9 h: H9 J} / m; W/ k" \ @. {
==============================================================
1 Y% I7 j6 \/ H1 Q
6 B' ?0 v6 C; m: @! I: F( W |