【程序38】/ u7 y1 G! O' y& w
题目:求一个3*3矩阵对角线元素之和
8 l/ i2 ~$ I7 H5 Y2 u" n- r1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
2 W+ e7 l" P5 o2.程序源代码:+ }% C" F, K% A. q4 L% V. T# g
main()
6 u4 X A, k& X" L' p$ ^{! n2 ?/ K1 t9 m
float a[3][3],sum=0;6 k8 S Z3 S4 A" W
int i,j;
* l& k$ \3 I! e* gprintf("please input rectangle element:\n");) e- j( O3 c! w
for(i=0;i<3;i++); l' @8 _3 i; Q/ D: A5 y
for(j=0;j<3;j++)
0 k! y, |3 r6 T# x, ]) \5 G scanf("%f",&a[j]);
) n' m; A4 C R3 |for(i=0;i<3;i++)- }6 @8 X) @ g2 Y0 O7 ^' Z; ~
sum=sum+a;; k: j* a0 ?: _8 _
printf("duijiaoxian he is %6.2f",sum);7 J: F# N8 x' @2 p
}
9 n$ D( {) Q) ]==============================================================( u2 H0 i& [3 E/ O
【程序39】3 s; C, ^5 L) j) O- \1 q
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
! l2 w9 _! y X7 d1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后+ J7 R g$ l$ R
此元素之后的数,依次后移一个位置。 0 h/ T3 o9 C9 j9 K- Y/ h- U; P# v$ \
2.程序源代码:
3 A0 t9 g3 t, t% y' jmain()" K: _0 t2 N" f+ y- M
{8 E2 j1 n) q( u' U4 B
int a[11]={1,4,6,9,13,16,19,28,40,100};! Q5 s! P* y4 z8 q
int temp1,temp2,number,end,i,j;7 L; K, |; ?1 t; G
printf("original array is:\n");
# x4 s( D o" `- E! R* p( Pfor(i=0;i<10;i++)
1 M l' a9 e: | printf("%5d",a);
! D9 b1 i4 e. p2 T- Zprintf("\n");: T+ r( a- o. _# K+ U! H
printf("insert a new number:");
- D: r1 O: o7 c. W; g1 X z+ Uscanf("%d",&number);
& w7 z1 I/ _% x' X/ y/ Yend=a[9];! e3 C% m% B- `3 t% v8 X) V" }; ^& i
if(number>end). j: i" g& E6 w$ v) t
a[10]=number;
- J L1 k9 K% M' N; {- Y/ {else
5 D% s$ x/ _; @% h4 [ {for(i=0;i<10;i++) a8 r: F$ `7 Y- w8 z
{ if(a>number)
! g9 i6 {& x0 ]' }- ? U {temp1=a;
i; i3 Y! \/ z+ F, s a=number;/ q7 U/ m3 |; [- M7 E
for(j=i+1;j<11;j++)/ s4 j# d, T6 s
{temp2=a[j];
8 Y: m2 [ m W a[j]=temp1;
$ C% U. b \! O4 W8 X. O4 } temp1=temp2;
, e2 x2 |& [6 X; F' W$ _- H# w }) t# b: i" r% }* R
break;' }& C p4 y% g; ] k7 j8 J. }
}
5 {5 F3 D8 r- x1 ~3 S }! a: b5 O7 M6 U# s! q" l
}
0 ^' H* O k' q Rfor(i=0;i<11;i++)
& y. S& s" q& _ printf("%6d",a);
! F ^3 M# o6 L7 |8 |) B$ V}- {0 L0 O( f# t/ M( N
==============================================================
3 F" u0 @* X; e+ e. y【程序40】% k9 _! w$ F- [4 e0 ?0 c8 r2 Q
题目:将一个数组逆序输出。7 [, @8 Q6 ?$ A0 V3 W
1.程序分析:用第一个与最后一个交换。* c- t& A+ l) v! J$ D6 ?
2.程序源代码:* W9 Y+ w) H2 |
#define N 50 w1 e' l# a& j! c. w! b6 V/ S
main()# t2 O5 K) \1 E" x' A/ b! I8 q
{ int a[N]={9,6,5,4,1},i,temp;* @ Q. v! Y v9 \
printf("\n original array:\n");
+ r/ x& z1 A& e3 k* H& @ for(i=0;i printf("%4d",a);
* v# T% q6 ~ U- H; j$ z for(i=0;i {temp=a;* u; k4 n1 v) ~5 j. w+ |
a=a[N-i-1]; S- x4 ?$ |! f; T' W$ l3 w% n
a[N-i-1]=temp;7 V& S6 b, l4 q) ^3 }
}
5 X1 I Z& j3 W8 k8 uprintf("\n sorted array:\n");
6 d8 b6 D$ x3 ~, [for(i=0;i printf("%4d",a);! h. R9 ?0 Q5 I, x2 e) n9 b
} 【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 】
5 |; m2 I# P: O9 a% t7 N题目:学习static 定义静态变量的用法 # r7 w8 k; P+ K# `2 w1 t
1. 程序分析: 8 n7 i! }2 v2 z8 H3 ]; a, b
2. 程序源代码:
- [9 B3 S/ ^0 }% T#include "stdio.h"
2 _' V' w" H* y { E- Yvarfunc() 9 D. m& R+ }* ?+ i: R# I
{
" Z3 i* O2 [$ J6 s r1 f4 b: B" q: x# Iint var=0; ; W4 z' I9 W6 G1 W R
static int static_var=0;
: v6 k2 \. D* {printf("\40:var equal %d \n",var); 1 A* c4 R2 \. k" }( |4 N+ L; X
printf("\40:static var equal %d \n",static_var); . X9 J2 Z% }' \$ P
printf("\n");
5 Q5 E0 {- Z# J# w# J) Wvar++; & q3 t$ M7 y) X e' K8 G- m5 U* K
static_var++; 4 k) S8 Q. V k
} ( b7 [5 {7 `) ]9 L
void main() * }" ?4 A: k0 w# l1 Q' H
{int i; " G- v: \/ p+ U; X/ g/ t( f. V7 ?( o
for(i=0;i<3;i++) 9 ^4 d" m: Y" o2 i9 U7 a l0 p
varfunc();
1 M8 j1 x/ a. W" J3 K/ v} , _4 |6 r3 J4 U2 a3 B" X
============================================================== # x" O' _; l( z; X2 f
【程序42 】
- w5 n4 U- i! i! j题目:学习使用auto 定义变量的用法
+ j: R. P% Y3 t! \3 v1. 程序分析:
; J6 P$ _5 {( L2. 程序源代码:
5 S0 e" H1 S( c# G& D/ k#include "stdio.h" & m- ^; W' ^9 |
main()
4 ^+ E6 y0 }' B d{int i,num; 5 n* P1 \" p5 O4 }: Y) [4 C
num=2; 1 G3 w9 C0 F" c/ g3 `( }$ y
for (i=0;i<3;i++) 3 D7 Q& W4 H) K0 V
{ printf("\40: The num equal %d \n",num);
: @9 ~) ~. v6 ?2 z: T7 M" ?( F3 X( wnum++;
; S L+ D! M# r# l{
v% e) e" x& y6 ^8 Y) H Z! Jauto int num=1; - R P, s& g b' y! ^1 s
printf("\40: The internal block num equal %d \n",num);
* m) z2 L& E& }$ N9 B7 k6 }$ T% F! Snum++;
7 G+ p( p* @9 c# e4 p6 S) u} " F' c" [! M7 H7 f
} 8 X5 h7 g# ^9 ~
} 0 p5 {3 T7 z3 z" l4 ]" H
==============================================================
J3 x; V- u1 o" ^4 h5 @" ]【程序43 】
4 d* Y& K2 H$ q1 E/ ^题目:学习使用static 的另一用法。
- f+ }( {% t' Q1. 程序分析:
1 @; Q# j" v. V) r; W* Y% i" C2. 程序源代码:
. j# E+ L. J- `% W" o#include "stdio.h" : y- Y+ R+ a6 }6 m; S
main()
' B+ v% R$ \5 `$ M8 S{
8 ^) f( d2 u3 ?0 N( F: H; E7 Hint i,num;
) L6 R' Q6 y/ `7 dnum=2; 8 O6 f) R$ B) [7 ^! l; n
for(i=0;i<3;i++) 2 l; V: D/ ?! a- S
{ 8 E" @) d( M8 ]
printf("\40: The num equal %d \n",num); " H" Y( V% `- L) |
num++; ; O/ F: ^6 w6 }9 _
{
- S5 G! e# F% h; v& \static int num=1;
4 ~" S8 }* g$ X. g. Bprintf("\40:The internal block num equal %d\n",num); 1 q, X7 j) N2 L* p6 M3 T
num++;
' T; Q! Z0 u: b6 K9 S# v- s}
# p' m+ ^& `# m1 F9 ]7 G8 n0 ~/ q}
5 O/ m6 h. O, C# ^* R( S}
; T. d+ [7 l3 L# ?: [: @( I============================================================== " J' P7 q# a1 L f( J
【程序44 】
$ D% \! V% }% _- `7 W题目:学习使用external 的用法。
& D ~6 U" Z. v2 H& V: t* n5 H1. 程序分析: " K2 j- j* y6 M, `
2. 程序源代码:
! c5 m% ?! \: |/ h% F7 O#include "stdio.h" 7 D3 q& j" f& i1 f" p% `
int a,b,c;
; L5 s- |) V. }' _5 _7 B. Z, f1 Xvoid add() # w$ x2 y# y% r+ ~- e) e! y+ P
{ int a;
! g& |) Y, r3 L$ K& k/ b" `% q' ]a=3;
( b* ~* t' l$ zc=a+b;
, J* D4 m8 d9 P5 W& Y} 2 @- a1 w! I1 }5 S/ R
void main()
, w9 \: ^/ v9 y$ @/ m{ a=b=4; 1 _4 O8 }' p5 e( [
add();
+ `+ t5 r' F2 \$ I' Qprintf("The value of c is equal to %d\n",c); 4 o5 Q" F& B1 ]4 v7 p, i
}
/ |$ A7 R2 |9 N* h==============================================================
. J A% b7 [3 K0 C【程序45 】 3 s1 L4 [2 M8 o+ e' j
题目:学习使用register 定义变量的方法。 ( p+ m1 c. Q% f+ j2 v; k5 G) _
1. 程序分析:
d, ~6 W) T2 s+ f' M2. 程序源代码: : Y- i1 E; e1 r
void main()
. s5 Z9 U5 Z# ? o0 {( l, m# j( j# R{ : R% |+ i6 A1 o* {+ S
register int i;
# h u) s& x0 e0 V: L/ k0 tint tmp=0; : x- J# N. _% E$ [/ ^& j: r9 p
for(i=1;i<=100;i++) 6 v% y6 E" m. Z1 P+ k$ Z; P
tmp+=i; + G' o- W! ]3 q: { N
printf("The sum is %d\n",tmp);
6 L* T m: r6 t6 m}
/ u6 x0 \& U7 R) A& g============================================================== 3 c/ E8 E2 z( u1 {! f" u' z6 \3 Q
【程序46 】 ; b) l2 u& D- l; r) T' Z$ R X+ W, H& v. b
题目:宏#define 命令练习(1) # [3 n. T2 `) D0 ~
1. 程序分析: * G8 W3 Q9 @0 E3 u `
2. 程序源代码: 2 P t5 F8 O! b( T9 w8 @, F( F
#include "stdio.h"
, B+ G) p' K Q% Q#define TRUE 1
# R1 i5 n% v. `* i#define FALSE 0
0 y4 a, U7 C5 M. e6 P3 p4 M#define SQ(x) (x)*(x)
0 w# R1 {1 T4 Z% Q H h3 ?void main()
4 t" o4 r2 D+ y5 T3 x4 ], p2 b$ _{ {7 N5 _1 c& i p! m* F8 g# a
int num; 6 s! M* P- p. r( G
int again=1;
6 K- A+ y: ?, e; s( }printf("\40: Program will stop if input value less than 50.\n"); + z2 T; E0 K3 e/ I
while(again) ) D. ~2 c6 @( X2 r7 g1 n6 s) ?
{ 8 @. f( b( ]: N# ~' P
printf("\40  lease input number==>");
% b ]+ E" z% o. U* v+ y2 x6 ascanf("%d",&num);
' a6 @; x4 K! s! c# L" Uprintf("\40:The square for this number is %d \n",SQ(num)); 5 f0 I1 ^6 Q" f$ _0 m$ [
if(num>=50)
- v7 V1 e" c R# L7 kagain=TRUE;
6 P- t3 S/ T# Gelse
; ~0 c' A+ Z. m4 N# @. Uagain=FALSE; ( I2 U$ v9 g- s4 i
} : {1 N+ {7 v( V9 f# P) S
} E/ B" r8 H' ~9 f4 j! |) u
============================================================== 5 P, Z3 \3 e: r1 r' o$ W
【程序47 】
5 p, L( l: y! F. \- D# }& z题目:宏#define 命令练习(2) " T# ~+ s8 V+ Q: q/ V$ u$ L
1. 程序分析:
8 w. C, k( k% C; D$ L0 K2. 程序源代码: 2 d+ z/ F* d' O% O( Y
#include "stdio.h" $ j% H+ _) w A
#define exchange(a,b) { \ /* 宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
/ o3 T0 E H: V4 z0 S* j3 t% Tint t;\
* a, L- V ?. Q' D1 z7 T& xt=a;\ . ^* `9 A* s6 g
a=b;\ - h2 s" u0 S% X
b=t;\
8 h- r* |' H! o# `} " r# F# `" Z+ ]6 K/ Y6 b
void main(void) # t* a! \2 S- H! _4 a8 C
{
% K4 h0 t' J3 V) c5 p$ A0 `int x=10; % _; `" o: Q9 q, o
int y=20; . l- ?% ^1 m) E, _: ~" g
printf("x=%d; y=%d\n",x,y); 0 m- }5 m+ b, B2 p9 W& x1 e: L
exchange(x,y);
1 y" E; s( M: o: z2 z* gprintf("x=%d; y=%d\n",x,y); 2 V+ k$ {' C5 f! s& L
} ( [4 p5 d; Z& J% g
==============================================================
& n' ~) j$ e1 w! |【程序48 】
' A; ?& _% Z6 Q7 a. _& w; m题目:宏#define 命令练习(3)
M0 p6 u& y9 z; d9 i& r1. 程序分析: ! r4 k* a5 f* P# q+ b; v
2. 程序源代码:
( W2 T, u8 T' _#define LAG > 2 @" c3 G! e& {
#define SMA <
9 ^: m/ X5 S3 I: K3 E* B#define EQ ==
+ c/ O8 w$ \) j/ r3 @1 r; a4 N4 l#include "stdio.h" 9 ]- j) u6 P( h" V9 y0 i R. E" F
void main()
/ L3 g. M# G" z" L{ int i=10;
6 _6 F' o) a' v2 eint j=20;
9 I/ e; Z9 {0 z, ?/ O* w" h$ kif(i LAG j)
0 Z( A) ^8 F! {: G. P8 q, Eprintf("\40: %d larger than %d \n",i,j); - p$ ^) X r. x% `* C! [, s
else if(i EQ j)
. K5 D" d' N% {1 U+ Pprintf("\40: %d equal to %d \n",i,j); 6 M5 o# J7 ]/ y0 R* o" F5 _
else if(i SMA j)
v$ R2 a, e, U) I3 Eprintf("\40:%d smaller than %d \n",i,j); / @ L: a8 A% D& N( f, X0 V
else 0 J! Z/ J$ J' A3 l
printf("\40: No such value.\n");
7 ]+ B9 I; a0 ?1 y' i3 g3 Z} 3 \. N H1 V2 ^" M
==============================================================
, a) V0 z, i1 ]+ x" L: C
$ g& r! C, x% f+ d |