【程序38】
* ^1 M, A4 P- }, V题目:求一个3*3矩阵对角线元素之和
% J* q4 E6 X4 U* ^4 `1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
4 s5 G8 A/ d, z% C: ? S( X2.程序源代码:
' P# u9 `- L4 L( A u. p4 `main()
' G% y. |* U# \. _{! m& _2 |# G( [1 D; |: k; `
float a[3][3],sum=0;
8 Z" d4 D P: G% u; q. Kint i,j;
# ?* u7 K- E- J6 n! T I; mprintf("please input rectangle element:\n");
+ l: W0 x: K; \! m8 l4 \for(i=0;i<3;i++)1 V2 W4 y. B, P% x
for(j=0;j<3;j++)
' [+ M7 w* U$ H' m/ S! j scanf("%f",&a[j]);6 P1 {1 W7 O/ e5 j* q5 |* Q% s+ _
for(i=0;i<3;i++)
$ r3 u" \ p4 D! V sum=sum+a;1 r. u1 \* N2 A W* z
printf("duijiaoxian he is %6.2f",sum);5 J" P$ A5 `- ~# e# V0 k" |% y
}
( w$ C b$ |9 i8 P==============================================================, [& m e2 L4 g9 Q' u- |1 N
【程序39】6 l) g0 i; w1 I$ X7 z! l
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。5 z+ K; q: U \/ n. p+ I, ?( R
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后8 B3 n- @: R" E6 E& u# F& r3 U0 m
此元素之后的数,依次后移一个位置。 1 f3 u, a' a9 r+ [, ?9 R3 W
2.程序源代码:
' c/ {$ o q a2 B. ~7 \main(), p; c1 `, _6 O
{
% G4 G& F% K$ z2 k- ?int a[11]={1,4,6,9,13,16,19,28,40,100};, T+ |, n. ~# S$ l6 X7 ?% e A: ?# M
int temp1,temp2,number,end,i,j;
* ` z# k% _& M# C9 e/ ^4 m) @/ o( Kprintf("original array is:\n");; S& p; w Y2 f! a0 u
for(i=0;i<10;i++)
: V4 O8 @$ J( E printf("%5d",a);% [6 e9 e6 l7 Y: K6 R* z- N" J
printf("\n");
7 W; I. z, U1 |, e8 M: bprintf("insert a new number:");
1 I' K. Z4 ~% W8 O' W5 A4 I6 Y: ~scanf("%d",&number);
. ]6 d4 M: }! _: L2 s% @7 M6 Aend=a[9];1 Z% k+ Q) |) N7 g
if(number>end)4 t+ t; Z0 A; k4 G0 b2 i4 G
a[10]=number;
) p. ]+ `- @7 W+ Jelse4 c' \. p* {' N S
{for(i=0;i<10;i++)0 T$ @. ?8 N, F0 r9 L
{ if(a>number)
$ g4 D$ K4 R" x7 ^9 D% B {temp1=a;
$ D1 e. Z; r9 p, q( U a=number;0 c' [1 S k. ?# b. D: e% W
for(j=i+1;j<11;j++)8 q( Y. c9 K* n
{temp2=a[j];8 ]5 f# S B! V: V4 d: q8 L. |
a[j]=temp1;
: s4 q2 o/ M P$ n! L0 R" ?3 c# \4 G temp1=temp2; g' y* o! \6 s5 Q& r" G8 ?6 G
}
& @7 f( l+ M( q" g break; |, d0 s: ]2 |" a7 a' e
}+ r( _+ w$ s* x, m n/ {
}! z R8 z+ J- i. |3 Y: T3 H& T6 h' Q
}" h$ f' S. c( |
for(i=0;i<11;i++)7 \+ ^1 A3 H7 u5 [% K" n. w
printf("%6d",a);
7 e$ d- }2 N% V}
& J6 v" J, |# T+ t1 j4 Y5 o+ x==============================================================+ @, {5 X* q v6 `1 ^
【程序40】+ o+ a8 i- f( z: u
题目:将一个数组逆序输出。
2 R, ~0 J) L% u! P: T! j1.程序分析:用第一个与最后一个交换。
q- B; G2 b8 }; Q5 j! I! r2.程序源代码:( Z g. H1 V) w
#define N 5
& i1 Q# l! {% L$ X7 F' m* umain()2 ^/ O+ L/ D; ?# c# Z% m7 n
{ int a[N]={9,6,5,4,1},i,temp;( N" ]/ |( n0 Z9 A+ o) t
printf("\n original array:\n");7 i0 Q( O* v% n
for(i=0;i printf("%4d",a);
3 M- p4 q4 Z/ Z for(i=0;i {temp=a;5 T# t( F6 k( s/ M0 ^1 g( f8 c. x" r
a=a[N-i-1];
6 T- F1 A- m2 V1 Q7 L a[N-i-1]=temp;, K3 ]6 g2 ]4 B* o( E( X" d
}
# ?8 \% f% G. u; Mprintf("\n sorted array:\n");
0 {( z1 S* |4 Lfor(i=0;i printf("%4d",a);: f0 W" x2 H S) \
} 【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 】
& v* f# a, r! N W$ K8 ?题目:学习static 定义静态变量的用法 8 G- \* B2 V" U! O# k
1. 程序分析: m9 J, v/ I# f! E' g, Y
2. 程序源代码: 6 i L. h8 O Q/ z
#include "stdio.h"
e, H2 g9 x1 U" Mvarfunc() 4 A7 Q/ l0 [9 h+ n0 R: r) L. Y
{
& N9 [4 t- U. @ fint var=0;
$ | x5 R! o1 j x- k- \static int static_var=0;
4 a3 @% [0 `/ P2 Z: T0 [printf("\40:var equal %d \n",var);
5 l+ O' _+ F) C+ U7 xprintf("\40:static var equal %d \n",static_var);
/ z2 g# n4 P0 S! U/ ~" pprintf("\n"); : I+ Y) R% ^. L/ F8 O: y6 }- Q) Q
var++;
0 Y/ |+ f- n- k/ a% L! Ustatic_var++;
0 H/ s% M/ r1 L d- m3 D) p( H} % `+ C# x/ w9 D8 k. k U0 D1 q1 e
void main() ! J7 ^1 k" ` h
{int i; ( z0 {; O$ @ E" G' h' m" {
for(i=0;i<3;i++) ! A4 A* A; L, t6 e# m6 t
varfunc(); ; h. Q4 d7 l, m5 i" Z3 x! R: l5 I) A, \. W
} + \1 t" ^# [: f* A" l/ t
============================================================== 6 a, y) r2 a+ N$ h6 A. W* n8 Y
【程序42 】
. n4 v! Y+ \/ d* f题目:学习使用auto 定义变量的用法
' j" r/ Y" d3 W0 Q6 E1. 程序分析: * v$ r9 P! m* O$ ]0 d3 [8 l m
2. 程序源代码:
. z7 [# d) j3 l) p4 }#include "stdio.h"
1 H6 y% T1 y5 i) Fmain()
: O/ v) Q" T3 w$ \$ Z7 b/ {6 A{int i,num;
4 J0 \2 ?- V. L0 L7 ]num=2; ; b- e& D: O- m. Q$ K* a
for (i=0;i<3;i++)
$ @* A+ X" K$ y w{ printf("\40: The num equal %d \n",num);
- b1 N6 T* U+ Hnum++; 6 n2 z7 l. r/ X+ B) ~$ C3 |
{ 2 J7 u7 e* D! {' ~8 T
auto int num=1;
9 c9 a9 u2 m, h6 ^# w% Z* d2 kprintf("\40: The internal block num equal %d \n",num);
9 m6 o z- K7 B/ T, Rnum++;
( y. P( b, O* c+ Y} 8 X- b! O8 b" Q" S
}
5 N6 C5 P/ ?: T} 2 `% [' J! P. p! g t
==============================================================
, Q. Z( m! `& a# }9 X9 d【程序43 】 ; E3 G2 W% L, _; M( l$ P$ M
题目:学习使用static 的另一用法。 ; {4 H0 l3 Q) H, b
1. 程序分析:
' m* _, C7 I) g T0 P2. 程序源代码:
% G, c* s9 w4 \#include "stdio.h" x1 J, q) [0 y6 n8 y* U& U" S% ]
main()
9 ~# i& G: S8 h6 t{
4 V; t) F8 I8 _- M; U# wint i,num; 7 X- F% h0 ~% |' h
num=2;
E+ u- I8 n5 S( J! Xfor(i=0;i<3;i++)
0 Y+ E+ y7 X; J* [6 v6 s8 n2 }{
1 \* r7 i5 g0 \. V" F0 W6 xprintf("\40: The num equal %d \n",num); ) E, L( y6 s* S6 j0 @/ w5 l
num++;
9 O' A' u% A6 \/ \5 G0 E{
- x, O! G4 {! t$ W' ~static int num=1;
0 O* k4 C2 q/ h8 _printf("\40:The internal block num equal %d\n",num);
* ~' c) R) q; `- {6 P S( m- C; Knum++; ! `: W" n# _* w& l* h5 c+ W. l
}
: ?- R2 S u, P3 c1 O} - w4 Y0 Z0 K& y D* q* s1 I
}
8 ^6 C$ \+ D+ O: Q==============================================================
" t& c3 v r* ^2 ~$ W" C' S【程序44 】 8 E$ _* j8 J7 J* }4 _9 h$ H4 } u
题目:学习使用external 的用法。
4 m7 N- v! c+ {& ^8 b1. 程序分析:
% Z# N- n, B1 Z* E2. 程序源代码:
: K! ], u! v+ I& v#include "stdio.h"
, e* A3 D$ P) `5 ]int a,b,c;
% H. P- W2 g) V. V8 [+ J% ^void add() ( B5 W9 ]0 p! Z+ y) z$ n
{ int a; 3 o; u. g. d' a( j/ ^% T0 k# p: v, Z& i
a=3; ! Y& ~2 z! f( V3 G" r
c=a+b; 7 T0 s5 n: M6 W* q/ k: h- P
}
8 p8 F3 f; A; y8 n$ G: xvoid main()
" o: u* N) K1 r4 F' L! z{ a=b=4; + s9 }* ?' L# Q# H
add(); : |' b0 [6 M! k3 u$ J) ?
printf("The value of c is equal to %d\n",c); + a2 |0 G ~# Q0 C, j5 g" f
}
2 I9 v2 y% L2 O0 M2 R q* u V==============================================================
0 I, | h; }2 N, b( e【程序45 】
4 X0 i$ j B4 B; O: r: u- j题目:学习使用register 定义变量的方法。
# [' ~6 A) a0 A; @7 k4 b( R' L8 N0 z1. 程序分析: 2 _/ G: u! g4 }1 ?3 A4 }' S. H
2. 程序源代码: 7 k) U" \ ]; ?0 ]
void main()
. [+ p, a: V2 ~{ 1 o0 c# k& I* G
register int i;
& \1 ?/ w! G% S" G3 Oint tmp=0; " r$ A. N3 h; k) j( b0 _# S' P
for(i=1;i<=100;i++)
% H. K' F- |8 Jtmp+=i;
3 B1 n& C0 R# N. {printf("The sum is %d\n",tmp);
0 \% T# H# c# C}
* Y4 d! @8 @' g5 _, P8 j============================================================== 6 k" k9 j' }4 D9 F# i
【程序46 】
8 P8 L3 q! Z. J5 b1 Q( b6 b# x题目:宏#define 命令练习(1) / u0 I" s4 x" Z o5 @+ e/ t
1. 程序分析:
5 o+ g3 c1 H; G* R2. 程序源代码:
+ h4 H# a. d! Q+ |! l8 N1 [#include "stdio.h" : S" _9 P# h/ q* u. u2 ?
#define TRUE 1
/ d! K0 e; Z( u2 e#define FALSE 0
+ T z$ f% S- L5 k#define SQ(x) (x)*(x)
4 j3 ^+ x, W$ S+ J' Fvoid main() - A1 ~# s0 n! h# P* ^! o
{
7 S2 r4 r9 [) J/ c6 Oint num;
, Z0 Z z b" f) L" g# v4 l# dint again=1;
; q3 g$ q9 J$ y7 Aprintf("\40: Program will stop if input value less than 50.\n"); 5 A% p7 V, l+ ?; W0 Y; z* M3 `9 c) e
while(again) . j- `- R7 ?" ?/ O0 R1 C
{ / c/ T3 R! i. ~% z8 {$ p5 w
printf("\40  lease input number==>");
! |( b7 k6 b$ Q- ?+ t6 g2 H& Sscanf("%d",&num); 4 T6 G6 s) A, Q4 D2 |
printf("\40:The square for this number is %d \n",SQ(num));
* Y$ ^% E4 |0 e. Hif(num>=50)
( @5 C9 O7 a4 z; f! Lagain=TRUE;
# h, z; J4 i5 a2 k% Q( Celse ( A# X1 @1 {: h _! ?
again=FALSE;
# `* k3 K* w1 H5 } Z} $ _& R, i$ ^. ?; \& N s
} ) C. z: x t2 V' f# r. H
==============================================================
2 d5 y' B; y# ~9 q U3 S% _. u1 F【程序47 】
: d8 I& a- m. z5 L5 I0 F题目:宏#define 命令练习(2)
2 P& J) X" N o8 D9 |7 d7 M1. 程序分析:
5 Y6 P7 D' E6 W4 k' W m" k& k2. 程序源代码:
8 G& P3 ]- ~$ `8 L#include "stdio.h" 1 w" E) m( o' V- O- y+ A! X
#define exchange(a,b) { \ /* 宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
0 C* y4 { m+ Q3 ^int t;\ $ w1 z6 d; ?6 q% ?* w6 S* N
t=a;\
- i+ d% n+ C. G' ^a=b;\
, i) r/ S2 y" x! T0 m: b- Cb=t;\ 7 J; `) L3 o2 X" G3 p
}
$ Q+ a2 s K9 x9 Pvoid main(void)
, T K( x4 y5 ?- T& l$ O! C3 F{
; m6 q" C* _) L8 ]' y1 `7 Oint x=10;
8 \) o" u) Q4 sint y=20; * O# [4 O6 Q; {: D0 I
printf("x=%d; y=%d\n",x,y); 4 s! j8 x( Q( ~ T4 \! i
exchange(x,y); & ]* H4 _) D5 c0 b) A
printf("x=%d; y=%d\n",x,y);
" s. E* ~/ U3 ~' E) r# k}
# m* R0 y `! |$ u1 T============================================================== : |% I' r6 T( J+ g/ l2 t: `
【程序48 】
+ P2 e# x, X7 |$ }. f& J2 A' j& M题目:宏#define 命令练习(3) $ L1 @0 |) ]3 w0 ~& m! N* ^" P; p
1. 程序分析: ( g* J1 V/ ]4 u/ V5 ~& t
2. 程序源代码: + x9 u) Q2 z$ k/ q
#define LAG >
% ?$ x4 p9 k% A; k- d4 R5 Y2 ?8 B#define SMA < + z q5 N. H0 B: {& | s0 Y/ E$ A6 v |
#define EQ == 4 b$ f9 x" l) X: y
#include "stdio.h" ) s7 t+ L1 F4 @
void main()
/ P' @/ g- y" A{ int i=10;
) }8 W8 i( V1 C$ A6 nint j=20; ! }5 _4 y0 G/ ]" g
if(i LAG j) 8 { D+ n2 H1 c* o
printf("\40: %d larger than %d \n",i,j);
0 o" ]7 V c- M# Celse if(i EQ j)
/ c; q" E' |' H% @% Q sprintf("\40: %d equal to %d \n",i,j); D. ]+ \1 D* B0 m
else if(i SMA j)
; O+ z( w) z8 T1 t+ s* Lprintf("\40:%d smaller than %d \n",i,j); , Q3 N, y: ?$ b& q9 I2 g
else
6 l" e( G) J8 D6 F1 W/ dprintf("\40: No such value.\n");
. Q* u6 y. ?, z" @+ f} ; U3 y$ u/ S8 H7 c6 ~# J
============================================================== 4 H# `% M- `, I
! K$ `: g$ {% ` M' F |