機械社區(qū)

標題: C語言經(jīng)典算法38-48 [打印本頁]

作者: tainqing    時間: 2017-10-8 15:23
標題: C語言經(jīng)典算法38-48
【程序38# ]& ?* A0 ]" m
題目:求一個3*3矩陣對角線元素之和
. n7 f+ P8 Z6 p/ u% E! L. z7 `1.程序分析:利用雙重for循環(huán)控制輸入二維數(shù)組,再將a累加后輸出。, k% Y6 G8 g8 U# I. @
2.程序源代碼:
- y% X* ~4 S4 _8 \4 H6 P+ S: T% |main()& X! _7 q* \! T: s( C( x3 X
{
$ G) V3 c$ G6 _" \, p9 K: \float a[3][3],sum=0;9 B2 J# b( L% E/ K4 b8 P
int i,j;
% y( |* B7 h  Iprintf("please input rectangle element:\n");- u8 s/ e+ K0 d, m8 Y
for(i=0;i<3;i++)5 S5 v7 B3 |7 o, p& f
 for(j=0;j<3;j++)6 S) D/ x- k  V, m, G3 b3 [
 scanf("%f",&a[j]);  k3 P3 |/ F7 T
for(i=0;i<3;i++)/ O9 }" v) V# B, ?9 d7 F3 ]
 sum=sum+a;/ e; n/ o6 C1 w$ c- U- j9 E
printf("duijiaoxian he is %6.2f",sum);
% V0 E5 m5 s& M" }}' S" h* z  ~, T+ m/ W1 b; Q) h
==============================================================7 ?2 u8 Y$ w2 g2 _, ?+ j  |$ D
【程序39: G* j, [2 w& F, M. q7 _8 i
題目:有一個已經(jīng)排好序的數(shù)組,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。4 a) z1 P  h) B. N6 }( P3 U
1. 程序分析:首先判斷此數(shù)是否大于最后一個數(shù),然后再考慮插入中間的數(shù)的情況,插入后
4 J. v/ h1 Y, b8 O, t, ^* y1 S     此元素之后的數(shù),依次后移一個位置。 ! E- j9 O# U2 q) W4 K
2.程序源代碼:
. X% H' i/ }$ i% }) umain()% l5 e) ]$ i' o2 \2 [; f: N& R# W
{4 \0 y6 F3 S* d4 h/ q/ _1 L' ~
int a[11]={1,4,6,9,13,16,19,28,40,100};
* ]& i7 ^8 f4 C2 cint temp1,temp2,number,end,i,j;) t# L" N8 p  X0 M
printf("original array is:\n");2 A( y: O6 H/ B8 n8 s' O5 V* r, R2 O
for(i=0;i<10;i++)9 r2 O# C# k8 U& y$ _
 printf("%5d",a);* v% F6 @+ H" f# K
printf("\n");2 L' s$ x, W# W
printf("insert a new number:");% ]. ]7 U; {5 w7 L* W
scanf("%d",&number);2 P" w+ f( |% z$ K
end=a[9];' k- A4 w( M7 G+ H
if(number>end)$ Q; E& b* z4 c- n' a  M/ D/ ?
 a[10]=number;
, F6 C: r  Y3 V- T0 X$ ~else
4 z( A3 [, Y4 Q6 [ {for(i=0;i<10;i++)
1 K6 o. g  r, w, o  { if(a>number)
9 s; V4 F' r& ~  V  l   {temp1=a;% U* Y/ Y+ r4 S' L# O: i* T
    a=number;
. Y- I  \1 }4 e8 G0 s   for(j=i+1;j<11;j++)( U! ~. V7 n) G: c: B- ]+ j
   {temp2=a[j];  r& r- u: Z0 c# _
    a[j]=temp1;0 Y: P$ E1 \* c  y: i
    temp1=temp2;) h; y/ ], g5 R: G% D2 \
   }
+ e& j% N8 \% ^   break;7 h1 N& s( l. K( I" X) J& r1 t
   }2 d% c1 a" H% @6 {+ K
  }
; z( B& d6 }6 |* s}
6 E8 k& ^$ B+ ~) u' m, q/ Bfor(i=0;i<11;i++)( W3 j  ]3 [5 Q; g
 printf("%6d",a);
; B& k+ r% G) J# @2 P- y}
$ _' t9 i2 Q  }; F: m) b! O. y==============================================================
3 R0 Y& f, m( K8 e( H5 \5 y【程序40
0 O% K2 ^  k5 u0 m0 w題目:將一個數(shù)組逆序輸出。4 ^/ B2 u: J0 z, F/ L( z. `
1.程序分析:用第一個與最后一個交換。- z7 k% I& h+ o: V' Q, q
2.程序源代碼:6 o' a+ f" O' d( U
#define N 5
( X- i, {9 m3 S7 ~  _6 s1 amain()
8 D9 E# r+ i& A" ^9 a1 M% t. h{ int a[N]={9,6,5,4,1},i,temp;) z4 b5 j1 e+ Q1 b7 x0 ~
 printf("\n original array:\n");. o8 g% W+ A2 e
 for(i=0;i printf("%4d",a);
" p' p- C7 R% m6 u+ S0 H; @ for(i=0;i {temp=a;
3 y* O$ \# O. m, R% l4 @: F2 e  a=a[N-i-1];
* ^) H- Z, e2 W% B3 h4 x  a[N-i-1]=temp;9 [& M* f& j- ^) B+ `5 v4 Z
 }% Y9 K* _5 k2 l! R/ R
printf("\n sorted array:\n");
4 R. P7 \, c( x: l  P% kfor(i=0;i printf("%4d",a);4 V/ X, V7 c/ b6 y$ w
}
【程序41信盈達嵌入式企鵝一一起嗚嗚吧久零紀要 . n  ~; Z7 j9 D2 f# X
題目:學習static定義靜態(tài)變量的用法 # Y8 f, X+ H1 \" z
1.程序分析: - G3 p5 l  J5 b
2.程序源代碼: / c: m2 E% [* T' s* P: R
#include "stdio.h"
' M+ k, l6 Q, c/ \varfunc() ! ?, W8 z) k8 `4 J% U* E
{
, J  U( D4 h" k4 e( o) E4 c( @$ \8 B! lint var=0;
. b! e0 F* ?6 ?) x& }+ n8 rstatic int static_var=0;
  m$ ^; b! T) |2 Tprintf("\40:var equal %d \n",var);
  q- Y% B# E2 o, ]0 y9 K! P& gprintf("\40:static var equal %d \n",static_var); ( X" z( Q) J& t$ H. m
printf("\n"); 7 X. ^' l. Q7 x5 t" g
var++; 6 E2 m" K; R* X! p% M) b
static_var++;
: z/ A2 a7 {+ _} 8 j* q9 Y+ y& g0 ~
void main() 2 a2 g6 O+ W0 P& r
{int i;
' X. T# a, c* f, ]for(i=0;i<3;i++) - i: K7 J, |1 p: ?. U2 L- X
varfunc();
5 }# O5 Z3 E1 s9 C/ c} 9 R  K$ \2 T( Y1 ~4 w$ n# {
==============================================================
- u1 A; U$ W' S" b% b/ Z【程序42( ~) \* O9 u1 {6 G1 `$ k
題目:學習使用auto定義變量的用法
5 J9 _" i' C  O" o/ D* c: `1 @1.程序分析:
' S1 K3 b1 e+ h6 S) U: W9 Z/ `% a2.程序源代碼: 5 A% b) \. H( u/ r9 V0 g$ r/ ^2 A1 L
#include "stdio.h" 2 S  `. s. S3 N2 i  |( U
main() # a" b; Q  E- O& M
{int i,num; ! U+ H0 }/ j) r6 `: [7 W- R7 R* ~
num=2; & f* R( d# b6 a$ n6 z9 p+ U" e
for (i=0;i<3;i++)
' e6 ]; I7 g1 U; G2 R+ J{ printf("\40: The num equal %d \n",num);
: U, x& |2 ?4 w7 t  Cnum++; 4 D; R1 y+ G- {- r/ K+ Z' h
{
: H1 T* K+ X# a' D: q7 |* k% E+ Dauto int num=1; 0 M, a" e" v  G* b$ ?3 y! k
printf("\40: The internal block num equal %d \n",num); : B, q- W5 y6 M7 g- z' c- \
num++;
, T1 m5 `( V$ T2 a. g; Z} ( H8 f1 T5 l# S
}
6 |4 b$ s- p( C1 Y' ]5 h} 8 a; U' r, R/ ?; l# g
============================================================== # `4 y( N! W9 E0 ]4 w
【程序436 J+ `2 N3 j. E% t" p& G
題目:學習使用static的另一用法。 - b, c' V8 v8 e* d) J( N
1.程序分析: 9 \  `* b9 f5 ]  {& H
2.程序源代碼:
- T& k  x2 Q6 d( S5 h( g" {#include "stdio.h"
1 k4 \# s- i/ Umain() * A( }  z& I+ K3 W7 Q
{ 1 X1 ^4 b$ }% c4 V4 d' i
int i,num; 5 _  c# X. P& k; M* n, |4 o, e$ B
num=2; $ a" ?7 U0 S( D) u
for(i=0;i<3;i++)
3 X! f6 d$ [, ^3 P8 \  ]{ 5 H4 [% R% z! h% w3 R
printf("\40: The num equal %d \n",num); ) ^1 J2 ?$ C! ?9 h
num++;
$ B. d0 q: C3 U  W" Z{ ) U( E- ~/ t" B1 b, o& h3 m9 t
static int num=1; ! [5 |' o4 N: d& d6 w" \6 Z
printf("\40:The internal block num equal %d\n",num); & j" t+ N# T) o1 j, O7 n
num++; # N" r% H5 C- [# ]7 ^+ A
} * C, h6 P( D$ T
} - z8 O% b3 H" h% S$ t# `& N  r* |; V
} 3 x  b0 K& K* @9 Q
============================================================== + R1 o" ~# X, f, u
【程序44
; @- d7 Q* m* g% }題目:學習使用external的用法。
2 Y1 g/ J1 u0 f- y! Y2 L/ |1.程序分析: & Z1 Q0 W) M" a
2.程序源代碼: ) B/ ?2 u$ n5 t. d* E8 _" b$ G
#include "stdio.h" % T/ f! y6 |6 d5 J
int a,b,c;
% n$ \$ p% Y  B2 ^" k3 ?void add() # i/ g* x: O- t) @1 r' o6 o
{ int a; / \. k& ]6 c: P6 |1 R) a3 J
a=3;
6 s. v# b4 Y  J; `0 }7 Rc=a+b;
+ Q7 O/ Y# A" }  a/ h3 l! u8 |4 L}
8 x" x  v7 _) y3 b# R* c; t& `( x& Cvoid main()
, e* J, @8 o$ v" p& ~, @# F" n0 Y{ a=b=4; . V( e7 b6 T1 Z/ U$ f1 q
add(); 7 j8 a; t' V1 X$ }$ S2 o9 Q/ x3 I) X
printf("The value of c is equal to %d\n",c); - y+ m0 [; w) K2 V
} 2 V$ P6 a3 E5 r- J% ^) M) \
==============================================================
" A' v* b( u0 x$ s, @6 ?【程序453 }% L" O) [3 \9 [
題目:學習使用register定義變量的方法。
- u4 Q$ l$ Q4 S! V: ^  v8 v1.程序分析: 2 n! Z- O3 M- m; I3 n
2.程序源代碼:
  b& W+ z+ {9 v- Z5 M% D$ ^. cvoid main()
" f( o* B. Z! ?) a/ }% x9 w{ / ?7 r4 Y0 d) c; o3 [
register int i;
: S! K' S* i& k, Aint tmp=0; # z+ x# U% }! v0 w9 e$ i+ E
for(i=1;i<=100;i++)
9 `: u& \4 V4 k4 h6 X7 @2 z3 z5 {tmp+=i; & y/ u: j, ^9 c& H$ i
printf("The sum is %d\n",tmp);
7 X8 P; [( m# }7 M$ a} - v2 y' }4 P+ ]3 N3 M; z0 L
============================================================== . L2 n. Z, G( `
【程序460 P( }' E" O# a+ p6 \- S' B6 Y# `
題目:宏#define命令練習(1) ! I( N0 {/ a& Y; x/ y
1.程序分析:
' a  ?, E: |& ]8 C9 }; W2.程序源代碼: / f- S3 H; W) M! f
#include "stdio.h" 5 {9 p* z# T  V' `( G9 _) i
#define TRUE 1
7 n9 |: V6 D' j/ ~# _" H#define FALSE 0
6 g( y4 \1 n' U$ V#define SQ(x) (x)*(x) 2 \  Y& d# ~9 [* R, R
void main() 2 b2 ^* Q+ u+ a0 Z3 u0 C8 o5 }$ u
{
; w) B6 Q" b# g9 b( D! t2 Y: Fint num; ( H: ?: D1 v' Q9 J
int again=1; ( }) P. D- D& @5 [$ G
printf("\40: Program will stop if input value less than 50.\n"); 5 d8 `( S4 V8 I4 F) _# l
while(again)
8 y- [7 j4 J: Q, y6 X{
8 l/ K" |8 \1 c  `5 R, yprintf("\40lease input number==>");   n0 ~+ m  \, s6 n6 t, G
scanf("%d",&num); . t) o6 B) _3 j! ^
printf("\40:The square for this number is %d \n",SQ(num)); 0 o9 ?: A( S( D0 F& P! R6 t& o# j! X
if(num>=50) ' U9 J9 B  p# |) b! t3 Q
again=TRUE; $ L9 W) y" t' K7 @2 m% i, l" T
else , z5 i' R. e- @" r. s
again=FALSE;
# Z; P% [. c/ Q} % j: `* _: p: y7 w. X+ \, X  N" z) W
}
) Z5 D' \; [) p% E  N. I==============================================================
+ x  D9 ?# `5 v) E* {【程序47& o( O: ~' H9 q9 }! d# s
題目:宏#define命令練習(2)
; c1 c4 d$ x! q9 b6 _1.程序分析:
+ \6 A9 z5 L7 }) \, K* t- Z) c8 A6 I8 c2.程序源代碼:   h$ V% q& x' L; x
#include "stdio.h"
4 q. S' ]8 a( M  q, V5 r+ L#define exchange(a,b) { \ /*宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/ * ^: ^1 L, t8 d: v, l
int t;\
# y% L) P1 b3 p5 A  Yt=a;\ 6 q8 o, r& a; _4 b; D9 G3 v
a=b;\ ! v- h1 q$ j) D) u: ]
b=t;\
$ @- w. c) I( i( b} / p. S" H/ B) y; Q
void main(void) 5 j, y$ Y3 k- e1 _
{ : E9 p, t' `7 k9 s% r$ [2 ]
int x=10;
2 ^+ I) P5 H: Z5 H8 V; U" H/ S$ Jint y=20;
$ i4 i* r* g+ |printf("x=%d; y=%d\n",x,y);
& n2 K( }9 b1 ]" T  Z" e+ Zexchange(x,y); : b! B" p$ a& x
printf("x=%d; y=%d\n",x,y); % n7 P- N* s! r5 _
}
# F1 X" g5 ^: G& E# a' k& O$ Q; n============================================================== 8 L5 h+ g9 ]+ J5 X9 V& y
【程序48$ z! h) h) o. Z1 I
題目:宏#define命令練習(3)
$ b- I/ o# S7 y$ c5 X1 h& L1.程序分析: % M- p6 k3 |! }3 Q
2.程序源代碼: + M6 e! [2 L* r% l0 U' F: V
#define LAG > # r; \( C8 L, V: N2 x  T
#define SMA <
: p, L# ]: v7 A; k/ x#define EQ ==
' C4 ^( ]2 e0 |4 Q  S/ m& \#include "stdio.h"
* o1 r2 v2 K1 `) O" d  o  p2 tvoid main()
3 X7 p# N, A) ~2 g4 Z( d{ int i=10;
* B0 o: i9 w! f. n$ Xint j=20;
* N4 G- K# O" J% o1 X0 q3 A, [9 gif(i LAG j) ; q) \  j2 T; ?3 o+ H2 _3 p) ?% E
printf("\40: %d larger than %d \n",i,j); . l. {! V- K8 o; p+ B, I
else if(i EQ j)   ?2 c# i1 c( t1 {0 l- T
printf("\40: %d equal to %d \n",i,j);
4 l  T& M8 T8 o% G' Delse if(i SMA j) : W0 l' Z3 \# H( G
printf("\40:%d smaller than %d \n",i,j); * l, A4 A0 q$ }! [
else 6 V. R2 r' u2 E+ j
printf("\40: No such value.\n");
. W3 d( d' I; j0 o8 m2 W} # ?0 Q) \" G- n8 r+ Z
============================================================== $ S  X9 }( C" n: r( E6 _) G
& d; e, Z/ C: T8 |+ O# N4 Q: @

作者: 白tyzb    時間: 2017-10-8 21:32
曾經(jīng)自學C,最后沒有最后了
作者: moldzsdj    時間: 2017-10-10 08:41
自學。。。。收藏下來




歡迎光臨 機械社區(qū) (http://e-learninguniversity.com/) Powered by Discuz! X3.4