【程序38】
# ^% f F, ]5 x* K+ s题目:求一个3*3矩阵对角线元素之和 / u: h8 W; d! g+ W1 q; |5 C
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
4 L( M- Z. W3 a8 e, @) u2.程序源代码:
+ g0 {" m- \1 P# Pmain()5 V0 s1 W, ^1 G* o
{
; z; y7 l7 d" N# L' _/ K' \3 ofloat a[3][3],sum=0;
9 s! ^8 @2 G4 G i4 L& _; Fint i,j;
" M% `' ~5 m8 J3 uprintf("please input rectangle element:\n");
9 t D% X5 V0 U& \2 N2 E. i" ~7 M$ Ofor(i=0;i<3;i++)
' g0 w" E5 R0 `' ?1 ? for(j=0;j<3;j++)! c. E( n B7 L. R3 B, O5 N
scanf("%f",&a[j]);' x7 ^0 @+ G& J
for(i=0;i<3;i++)! ^, o: f" S. ?$ R' J
sum=sum+a;9 I* E. T; r$ B6 F- N
printf("duijiaoxian he is %6.2f",sum);
: x* G: f4 m- F. [: p2 r# i}( c2 U$ F3 i" `: y; c& ~! P
==============================================================* \" b; l2 H4 U9 U( _) z3 z
【程序39】
! m9 U7 u/ @3 C* R题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 Z* d* l& p# W. c |' q1 L
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后. y+ i- ^5 w* j( {
此元素之后的数,依次后移一个位置。 2 u1 \5 r" B& G
2.程序源代码:
9 o* V* }# D0 ?) mmain()
3 y b- i' m' V{
8 x, ?6 D0 C. k2 K) E. j: r" R+ Tint a[11]={1,4,6,9,13,16,19,28,40,100};
1 m* H# \3 Y) h w, O4 A% q7 gint temp1,temp2,number,end,i,j;
$ [, P+ [& `0 {$ q6 W; t# Jprintf("original array is:\n");% h/ f% C: ~4 O, d
for(i=0;i<10;i++)
, {' a. e$ b6 J$ F printf("%5d",a);
; A. I" ?: w% jprintf("\n");
+ y3 K% s, O: e9 _# C7 w' [printf("insert a new number:");
5 g2 ^! A( d( E+ a9 g" R m9 I9 oscanf("%d",&number);* K( @3 k; D T# b& J
end=a[9];5 ?/ L) o* ^" S3 v4 J( ?
if(number>end)4 M/ N# T$ l. h/ q! @
a[10]=number;7 P; l/ p+ C9 {9 J
else$ v+ A- y; Z% X& k" e5 U5 W! u
{for(i=0;i<10;i++)
9 \* q5 Z& z6 L; d# n4 Y) e+ ?; k6 B { if(a>number)
% Y4 ]6 u5 ]+ y2 i) B {temp1=a;
3 R$ D9 L4 }1 m! E a=number;& s/ D' Q) B& |. H9 e$ J
for(j=i+1;j<11;j++)
% O/ Z$ C0 K$ M7 C( U4 v2 V {temp2=a[j];
" {' x+ w. \- d: C. i J a[j]=temp1;
' G; [8 z0 g' z* j2 h5 V temp1=temp2;( @1 v+ h$ V' I1 J8 T
}
+ d# W& V: b4 W8 A) K$ j; t! e break;0 C6 \( o3 P, c" q: p
}
h* k6 R s& ]; E/ e/ D) m1 L }8 P* V1 Z& i$ |. O
}
; ?# V2 i- y+ L3 \% g! Z, wfor(i=0;i<11;i++)
2 N7 W7 O& R; a1 H% f8 T printf("%6d",a);$ P$ E% L, k# d: B4 O2 u
}
?/ ^9 E N6 U' w==============================================================
6 T1 }. W9 B; n5 _. r# j【程序40】& O! G, R7 s. ?7 n- {/ m9 {1 }
题目:将一个数组逆序输出。
2 L3 S, U, `( f1 Z1.程序分析:用第一个与最后一个交换。" `% n: o7 i/ C b) z2 M8 r
2.程序源代码:
. _2 m' g( ?& j5 _7 }* H#define N 5
; R }! a. f& xmain()
2 Y. S' H$ l* A4 u) V{ int a[N]={9,6,5,4,1},i,temp;3 A9 J9 |' v$ D! b
printf("\n original array:\n");8 j( M v- d4 e
for(i=0;i printf("%4d",a);% |+ i- l; K! a5 ?
for(i=0;i {temp=a;3 x7 p) I( Z+ E/ T( B
a=a[N-i-1];5 i. a" ^* E! l
a[N-i-1]=temp;7 [' d9 p- Q, w, V7 x# l! O
}
3 d' B$ Z F' Y g5 ~0 M' kprintf("\n sorted array:\n");# r% W& Z3 z4 g* M4 d T8 ?
for(i=0;i printf("%4d",a);
; `) d- l: k2 V6 B. {9 L} 【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 】 , S- Y1 c$ ?4 _6 l, G: T
题目:学习static 定义静态变量的用法 1 K* x& V4 E- F$ n# V6 a& D
1. 程序分析:
1 T4 p Y4 L9 C ]4 |2. 程序源代码: u5 s$ P$ M# R% z1 r, Q9 `3 F
#include "stdio.h" % a' P+ _. x2 J5 n: K% C
varfunc() ' c% O& N& }0 Q3 k
{
1 T" d7 ^ f: dint var=0;
; c( i+ W( y8 ~. S$ Ostatic int static_var=0;
* ]8 ~8 ~; K( ]0 d0 gprintf("\40:var equal %d \n",var);
; p5 F. n$ ^/ {; n5 Y7 Aprintf("\40:static var equal %d \n",static_var); 2 |$ C. A% |$ V; J& m1 S" f4 ~$ t
printf("\n"); + w1 N1 O7 g: Q# B, T! y6 v
var++;
( x5 W% c. Z$ L% Kstatic_var++; ; ?/ k( |0 R7 @, ^7 o1 T6 g
}
0 |' |# L/ t( b7 W6 Q: b* G; L: M5 Yvoid main()
5 {$ G% _+ A3 U{int i;
8 Y/ z. N& f) K) d4 r- y: o" pfor(i=0;i<3;i++)
: S7 \/ J0 F& P, }3 D/ hvarfunc(); / R0 g% }. S& G: |
} - r7 P4 Z j$ ~4 A" [0 K& v$ j
==============================================================
2 R7 Z. n% F, ? P8 I+ R【程序42 】 * b$ P7 t. r$ R- e" P
题目:学习使用auto 定义变量的用法 # |! i5 d) K' D/ b' M* r) M
1. 程序分析:
a1 N% ~8 F L. u4 u2. 程序源代码: - }3 Z# Y' Q5 `& L a/ C
#include "stdio.h"
4 `2 j0 }0 f: S9 Xmain()
" m0 s4 g/ W# U7 t{int i,num; + a" t; g: x* O
num=2; " x* y6 X# l/ Q9 }. ~( y0 Z
for (i=0;i<3;i++) 0 a, K+ P( G5 f0 q ^
{ printf("\40: The num equal %d \n",num); / p9 O3 J0 z3 C5 P
num++; 6 x) o' r% w; h& e+ G
{ 6 L8 E" u, q5 ?# T, T
auto int num=1; - q8 b4 o( g2 A6 d/ h
printf("\40: The internal block num equal %d \n",num);
8 F! m( B' }, p& l, Wnum++;
3 g S0 Y; n1 L. w7 h}
9 P9 u; F: i+ M( ]4 |}
/ g4 w! k) F' f) Q4 i+ q$ A2 Y3 W' f} 2 N. |8 j! A6 B k% M
============================================================== / C L: X p$ V) y5 @
【程序43 】 - i0 G8 Q& r4 e0 |. c
题目:学习使用static 的另一用法。 3 v# e. o0 E9 |$ j& q& w9 U! R
1. 程序分析:
& z0 K0 ]; E: r! v2. 程序源代码:
, T: v P9 N- k2 b, W8 i#include "stdio.h" , ^1 T0 p L! R
main()
# o! @. L" `$ r# Q{ * z2 [$ S/ P9 ]% [; j3 k3 T
int i,num;
+ E0 H1 S2 F2 D+ Cnum=2; $ S8 P9 Z7 \8 @) p! f8 o& y: @' X, o/ {5 @
for(i=0;i<3;i++) 0 ^$ Z3 i! R1 R8 o
{
1 F9 P4 ~8 g0 s# Y: C' _3 \: I9 zprintf("\40: The num equal %d \n",num); # O, D+ g3 K5 C5 _1 m) }
num++;
( r }0 F% e. D( e% S6 k6 S{
0 d! e) |5 a8 _4 astatic int num=1; : ~# t: b8 S' x& M& F8 U( e5 ~2 r
printf("\40:The internal block num equal %d\n",num); # b4 W |; G" J. J4 E# { Z6 i
num++;
, B0 x. u; T M& H( X} 7 J$ _% j6 H$ M4 [( J/ ^
} 5 `8 N/ ]- Z; Z9 Q$ e/ @
}
1 R0 ^' j3 f+ w4 |! e============================================================== ( p0 d& W- v# w1 i3 q" Q# s
【程序44 】
, c: }0 F! @& Q" z! A( |3 t题目:学习使用external 的用法。 * Z) Q# t: c& \% U$ |
1. 程序分析: u) n1 M" \' B$ r @$ U
2. 程序源代码: 7 S* }' j7 ], M% F
#include "stdio.h"
6 x p' K( i; |9 Q+ S+ Kint a,b,c; 8 g3 G3 X `$ W, w
void add() # X5 H' I# e' b3 ]. I# }, I# S
{ int a; ( r# d) q' S' H* S7 _
a=3;
* N( h# c8 i* ~7 i; oc=a+b; " e j( H+ C$ E
}
' X1 w9 \/ j6 h. a' `. ?void main() + ?: ]) y0 M0 o7 V2 L' x
{ a=b=4;
" Y; o y# k1 a2 \add();
; d' A* |4 Z0 uprintf("The value of c is equal to %d\n",c);
; t \+ n: y) S! I% c} # o4 x9 r' t$ Q2 W$ B
============================================================== : T5 [; y( v. W% g
【程序45 】
* j, K6 r( {3 i. Q3 ], @题目:学习使用register 定义变量的方法。 : D9 t( a/ h$ a2 d
1. 程序分析: 2 @+ C5 b7 ~. s! ?* Y9 ?, U
2. 程序源代码: 5 A* x5 m( z4 ]+ e! W6 p
void main()
: a( g: u/ r0 ?# [" H. M{
3 o0 h9 | w' U/ ^4 Z# D1 Oregister int i; " D: j5 i" l# |! s
int tmp=0;
+ h5 e1 H9 y0 Y4 M; Ffor(i=1;i<=100;i++) & N2 W+ `5 m9 ^4 ^8 Z- U8 R6 u
tmp+=i;
4 F$ n$ f0 O3 ^printf("The sum is %d\n",tmp);
" i2 u- y) s; O9 o9 T& d2 R6 h}
& G8 q3 J8 S9 R5 M9 S============================================================== 2 F3 H8 E D3 m& W
【程序46 】
$ h# O0 I3 {- |/ ?2 w, ^题目:宏#define 命令练习(1) ( _; i5 h' T5 Q: [$ I. {
1. 程序分析: 8 C1 w" l) \; d" a( K3 r
2. 程序源代码:
- k3 P1 B7 C4 o, S& Y7 ^- Y#include "stdio.h"
5 w" T- U. I; F#define TRUE 1
1 U) O9 G+ ?- z1 I! Y) U#define FALSE 0
1 C6 ^8 W1 l# i3 s7 ]" J#define SQ(x) (x)*(x) - y8 W% s9 B. U3 {
void main() - ?& e9 M# q2 ?" i' @& B$ }
{ / L% c" t- z( E" t, X( E- ^
int num;
5 ^! j) q% L# S2 j8 Oint again=1; ' R2 g& T1 y8 t# M* n
printf("\40: Program will stop if input value less than 50.\n");
( P( }9 E5 }. E! M1 H: o# Y7 Awhile(again) 3 x& M+ N6 R3 {, T8 h
{
! m: E8 {7 Q+ p% ^$ V7 Z+ n+ hprintf("\40  lease input number==>");
. L. e3 b) D/ B! @scanf("%d",&num);
9 @: H2 Q% C3 J, T$ c1 Hprintf("\40:The square for this number is %d \n",SQ(num)); V: V! P7 i) I+ Z9 B3 k
if(num>=50) 1 L! f# m- @( b* p3 U( o @
again=TRUE;
- l5 J, J9 c: ^2 d& V* Relse 9 d& X. z: Q# h g" j6 A
again=FALSE; 4 @/ _4 M6 B: j4 D; u" o
} ) k8 v8 d1 x% i8 @2 ?! `9 A
} 0 C% c5 o) t2 N. V8 ~$ Y2 u% w
============================================================== % e# n! X8 I0 i: h
【程序47 】
, {2 {. D' @% L1 o题目:宏#define 命令练习(2) ; @. U3 @4 O7 _
1. 程序分析: 0 x& R) M* H0 H/ g2 B- b/ x. B. m# D. I6 d
2. 程序源代码:
7 T+ O. z# A) V7 n# e1 w#include "stdio.h" 1 ?, Q V Z3 J4 E9 v- X1 O
#define exchange(a,b) { \ /* 宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
: f# Q' s, G: ]3 d, i; A4 W" @int t;\
* p+ s: K$ {; P lt=a;\
1 i, @ k( G' R/ U/ La=b;\ & z: V& c, A! i- t9 K# o
b=t;\
5 W1 L0 Z( t5 j1 O- s0 R}
7 d- Y, `7 Y0 K7 ~1 _3 u8 f; I* Q3 Q9 kvoid main(void) 1 C0 a2 t% [" |+ E2 y1 _* \$ L
{
0 G0 b6 j5 D7 R6 K8 e+ w7 {int x=10;
$ V; p% e% Y. {1 ~1 o) dint y=20; ( n2 q" Y+ g, y, b- v: W
printf("x=%d; y=%d\n",x,y);
! o; b. j% N* M& V$ S+ Bexchange(x,y);
, q' m& s2 Z) e, G: bprintf("x=%d; y=%d\n",x,y);
% S8 R' s6 C9 G! ]5 J: v3 \, f}
$ ?2 E2 t: V, q" S+ L- J6 e============================================================== 9 W8 s1 M2 H/ m
【程序48 】
' t9 i) u- P) h4 B1 X* N: F题目:宏#define 命令练习(3) ( R4 o, f. n) N
1. 程序分析: K9 T2 W1 C! t" ~3 z
2. 程序源代码:
1 h# ]/ E3 Z) ^! B/ V8 e0 v: G#define LAG >
) |1 w5 b, {+ ^# I8 T4 [#define SMA < 8 f5 v- n% a9 u' T
#define EQ ==
2 V. x* H6 n' ?8 |$ Z3 Z#include "stdio.h"
5 r! Z, u6 a4 f+ L9 B$ H% Nvoid main()
8 g! T9 ? K2 h{ int i=10; 3 S6 _( [6 }& [: |
int j=20; \7 a' } n, Y: C
if(i LAG j)
. e% t* w. l) ?% r: `( |. aprintf("\40: %d larger than %d \n",i,j);
% D( N. z4 t$ q4 |" M8 Relse if(i EQ j)
6 A% K7 k2 X. K2 Qprintf("\40: %d equal to %d \n",i,j); & H; b! k, Y4 \) z
else if(i SMA j)
9 M4 { z1 K. \/ X3 m: Oprintf("\40:%d smaller than %d \n",i,j); $ G& K6 t# \! E4 I; J5 w
else
1 q& O) W- \4 M5 k8 wprintf("\40: No such value.\n"); 3 M$ A; S) _! U; U# O- M
} & U1 Y8 K, X) K
============================================================== % Q! C0 K! E! K' i. }0 H! R
8 o6 E1 u9 d; ] |