機械社區
標題: C語言經典算法38-48 [打印本頁]
作者: tainqing 時間: 2017-10-8 15:23
標題: C語言經典算法38-48
【程序38】
# V6 ~% r6 ~2 f% k: M7 U2 b題目:求一個3*3矩陣對角線元素之和 * A" J3 Q$ v' }+ D) I
1.程序分析:利用雙重for循環控制輸入二維數組,再將a累加后輸出。
0 S/ F" ^- l# M& v: H! g4 ~& E2.程序源代碼:' [- }( }$ z: ?' o5 H6 K! d
main()
$ Y; x' I L$ `$ l! i" w7 q{
7 ]' c7 i( y, _: Afloat a[3][3],sum=0;& K- l# p8 z! x% T
int i,j;1 W, e3 E4 _) O, X9 {; c7 f
printf("please input rectangle element:\n");" r, W5 j+ d2 w, r7 v
for(i=0;i<3;i++)7 t6 P+ O+ S/ C$ c
for(j=0;j<3;j++)+ v4 \+ O2 U- w+ h% m
scanf("%f",&a[j]);
3 n5 y/ p/ k E2 O$ Y! i1 Yfor(i=0;i<3;i++)& ^! c: c- C# c+ S4 B
sum=sum+a;
( q2 T f: W* h3 e4 r2 yprintf("duijiaoxian he is %6.2f",sum);- X5 [' _( H ~9 k
}
2 D9 ?0 W3 Y4 b+ ~6 z==============================================================* |0 J* B6 k( B- g7 t
【程序39】
' r, W8 i) ^/ Z. ^1 V$ g7 {. l題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
$ g6 Y# m" Y+ c; z8 n. n5 C1. 程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后
, Z3 f) q3 H6 v7 j9 s3 r7 e 此元素之后的數,依次后移一個位置。 6 \& U/ {3 W* e0 g0 Y. M3 h; s. ?
2.程序源代碼:
P: M0 B3 _6 |8 ^! hmain()
) p, w2 D8 c7 |) L8 t- K% F{
/ C* X( V ?9 f4 G- C8 Fint a[11]={1,4,6,9,13,16,19,28,40,100};
7 X0 m2 D A/ H7 o5 d; Cint temp1,temp2,number,end,i,j;4 h. \% x4 ^/ W& \
printf("original array is:\n");( n! |" @) x/ m, x" _, Y1 ^
for(i=0;i<10;i++)0 z) L; [5 q$ |# @3 s
printf("%5d",a);
+ s9 Z( D8 y) Zprintf("\n");* W9 k1 p; e0 i+ R
printf("insert a new number:");, n. i" O! ]2 { A8 e3 y
scanf("%d",&number);" U3 A5 L6 U# a% N2 C
end=a[9];3 N! r* O! @0 T) ~3 G: u
if(number>end)) Y3 J8 a- J/ |* f
a[10]=number;- \+ {$ x6 k$ o; ?; r
else
0 V7 o* O/ r0 v! _* r {for(i=0;i<10;i++)
1 V1 }4 P- K# T3 e# r! E9 X { if(a>number)
+ q: q0 `$ X8 ?4 h! l {temp1=a;9 ]7 ~2 Z. a E% g1 J4 X' m7 Y
a=number;
' |' h# }% c0 T! C5 q! j for(j=i+1;j<11;j++)
1 g/ e3 t0 B' ~( n {temp2=a[j];. E# {9 U! @6 q( B5 {
a[j]=temp1;
- M3 r. K9 Z9 Z1 Y# N temp1=temp2;& a' D, D! c8 ^ i
}0 d$ T6 `/ Y8 {' r
break;( Z2 C. W9 j% Q O- V4 x1 ^2 X/ g
} w8 n+ _7 z9 V1 q
}
8 c) p8 \) q7 {" v' R}
7 T1 _! x; b" F- \4 xfor(i=0;i<11;i++)
7 q+ x$ i" m) l$ X printf("%6d",a);
. F" D5 h( p1 |1 Q7 X}( Z/ U& E7 g& ]' _* ^$ e
==============================================================3 A1 R) h5 A: \ g# X0 E( ~& y
【程序40】' k( E; S0 M0 R. _
題目:將一個數組逆序輸出。: \- b b3 e6 M6 c( i# A. Y. C
1.程序分析:用第一個與最后一個交換。
2 F- K5 ^0 n$ ^) z2.程序源代碼:* r, W3 y0 L+ L9 Z/ N: K' @* \
#define N 5
3 U" p7 C7 z8 Kmain() n0 ^$ q/ E N5 W5 s, H
{ int a[N]={9,6,5,4,1},i,temp;
& M) f7 |3 w q1 w printf("\n original array:\n");, Q% n/ D, q) ^, t; h
for(i=0;i printf("%4d",a);& Z; m @1 W$ s$ A# ~4 \+ H
for(i=0;i {temp=a;* U" W/ @8 F2 m3 W/ [' e2 i2 T
a=a[N-i-1];
1 P3 X6 L6 i/ j ^3 [ a[N-i-1]=temp;
6 g3 R/ j A2 M# C! l x }2 g" P; }# j4 \3 l
printf("\n sorted array:\n");8 ^. Q6 H" q6 g) g ?% \8 S3 q+ w/ F
for(i=0;i printf("%4d",a);
2 T; V X$ r, A, e5 L}
【程序41信盈達嵌入式企鵝一一起嗚嗚吧久零紀要
】
. z9 p! N: E0 c! o5 W題目:學習static
定義靜態變量的用法 # T- d0 N$ b' N( l* A5 _
1.
程序分析: $ c+ L) k0 Y7 ~
2.
程序源代碼:
. {! ]& c k& ^+ X/ E1 R/ O#include "stdio.h"
) D- `/ _) `7 }% P; ^( h6 M9 E! evarfunc()
9 g0 m0 w. x% @1 i U% y- i
{
+ ]- ], \& h$ Y; z( N: { Lint var=0;
- `9 v+ W' m7 {; c& Z3 j8 x
static int static_var=0;
+ }/ g9 p- U7 i) |
printf("\40:var equal %d \n",var);
* S$ ?0 p# \+ d& S& P6 wprintf("\40:static var equal %d \n",static_var);
% L1 ?( I$ D- E1 h" @5 Y
printf("\n");
8 u+ X& k& B7 r) q' ~; B
var++;
! v) t, T+ Y% ?) U4 v6 z8 Fstatic_var++;
' b$ T6 I- Q& G/ [5 I, D
}
* w! m3 Z! f' H7 Q$ }: `
void main()
, `* ?6 }( R, z- F7 O, K{int i;
+ ^; _' [" M6 O- y8 Y. h; pfor(i=0;i<3;i++)
& {) D# c) D9 p4 x, n; M# r
varfunc();
/ M. f0 R( W7 I1 S K: H5 i}
/ ], Q- F9 F7 m) k/ x% `
==============================================================
! n; h( C6 K! L" }6 [, U+ h2 d
【程序42
】
) n' V) o. }/ K題目:學習使用auto
定義變量的用法 ( |& O3 s1 H4 I. x( L) V
1.
程序分析:
- E) @/ [# ?4 @5 S2 y: \2.
程序源代碼:
4 ?6 N( I0 `, P4 s8 c$ f#include "stdio.h"
2 R. \0 x$ \( y0 B
main()
( B4 k) T+ _: x& P+ n" i F
{int i,num;
! P8 J+ ?- ]/ E# D; V. h) s
num=2;
. D8 n, a* s4 e- b
for (i=0;i<3;i++)
" {) J0 p' H/ w) ^
{ printf("\40: The num equal %d \n",num);
, z) z8 ~2 F" E/ i
num++;
5 X9 h0 }& A6 d! K' m V{
/ c$ q( Z6 ^) U# }1 Jauto int num=1;
+ E' J" \6 v8 F, N( d
printf("\40: The internal block num equal %d \n",num);
7 h3 M% K: C `% P* J8 p2 fnum++;
5 G$ ~4 y+ Y8 A3 `: |' A& n}
5 e: }8 \( z, g
}
( Y$ F/ R+ m; ?}
: P* l6 ?; r E# T3 C4 }5 _==============================================================
0 m; x! N, w( N6 e4 k, F+ G+ Z' e【程序43
】
; s3 J$ Z" b! U' {) a題目:學習使用static
的另一用法。
0 X/ G$ d5 F8 o' Q& G! A. M1.
程序分析:
. q' r5 k- T, o5 }# L) U2.
程序源代碼:
& r# U& M/ r! N& `2 z; p#include "stdio.h"
/ k, i9 r9 [1 V# C$ Hmain()
' u8 U/ F: \! Q" y( _; j2 ^
{
1 [5 U8 \) m' i6 O1 pint i,num;
z3 U$ u) t* ?+ ^. Mnum=2;
. E. i1 {. d3 O( D' F' c5 i
for(i=0;i<3;i++)
) n/ {4 R; s8 l: h/ k- V
{
' n( ^1 M3 I! s4 _1 g! \4 X
printf("\40: The num equal %d \n",num);
& N2 g) c9 `: n% }( Jnum++;
- i3 j3 q+ L# \+ r6 a1 M
{
0 n+ \/ Q4 u8 D. }( }) y
static int num=1;
: b5 [6 E6 {5 pprintf("\40:The internal block num equal %d\n",num);
4 a4 P, q, Y, w% u% J/ n7 b5 Rnum++;
% S# w' v% i) e1 o0 o9 a$ \}
# } E! f9 ?+ M- M! L* \ Y' `}
2 K+ r9 ^& P$ ]! ~9 E}
5 r$ \9 h) m2 ]! i4 N# |+ Y: j3 B
==============================================================
; s' C/ f' s3 W# J' x7 Y【程序44
】 % A; S, t2 ]% I0 I" Q
題目:學習使用external
的用法。 ) E4 @$ r: o$ d9 n3 G% R+ d
1.
程序分析:
4 v$ N$ G* Y. I7 @8 L2.
程序源代碼:
7 O( `; N9 e. Z m+ o! M0 ~#include "stdio.h"
2 f+ i3 |0 T3 N7 s
int a,b,c;
4 P( w9 Z$ `- W- X6 k
void add()
% @; R. E$ y- V) n8 J{ int a;
" k n9 R) A& C
a=3;
' X7 d" J( u4 [6 g+ T
c=a+b;
0 S# X: j1 f3 e0 U- D8 H6 i}
) q. @) b' e8 O$ x4 }& @ Mvoid main()
! B+ o+ O" W/ N% h: \0 p7 N
{ a=b=4;
% ^' q3 f/ n% Qadd();
# Q/ z; n& r6 E+ r! @+ _printf("The value of c is equal to %d\n",c);
- h' b) B: Q$ P' X}
R; p3 d- u9 x8 Z==============================================================
' q# a$ |4 i4 R
【程序45
】
; i I' w, J4 i題目:學習使用register
定義變量的方法。
& O1 O' z3 c8 [6 l' p4 a) H Q1.
程序分析:
# w: T" b. o( u$ ~2.
程序源代碼:
3 @7 D7 R7 T$ `0 d7 Bvoid main()
' h3 O/ [( [+ ~# o' N/ A) M( m: c; P9 U; |{
) p& F: o0 o0 i$ j; d' Y
register int i;
5 Q5 }. H( c+ Xint tmp=0;
" v9 @4 P, J \, K& Ufor(i=1;i<=100;i++)
( ?, V+ ~" e i9 C. |2 Ctmp+=i;
5 Y, Y3 `- J1 _printf("The sum is %d\n",tmp);
. c9 `* ?( }$ j5 ^( {. U/ ?
}
4 n, x. i Q1 L9 o( G5 B$ K==============================================================
2 m/ o* e( e b
【程序46
】 * _+ T1 n8 d y
題目:宏#define
命令練習(1) : l1 F# M/ r6 P' ?1 A1 G1 _: n
1.
程序分析:
. ^8 S0 m4 H! X9 i1 w2.
程序源代碼: 3 R$ }5 L% k2 v m# `: `
#include "stdio.h"
T% A6 S4 B; p8 C- ]6 @. l+ G
#define TRUE 1
; n0 C2 P: Q! g0 p#define FALSE 0
1 o& M; h& _% U; b) I
#define SQ(x) (x)*(x)
9 m/ R2 ?# I, P3 J. f/ cvoid main()
& P8 D. b; \9 t! k! l{
- ]; p9 P% h' @4 s' h, q2 U
int num;
9 {' a% y, ?/ _! y1 K+ X: w7 Pint again=1;
" S3 p# r, J' B" gprintf("\40: Program will stop if input value less than 50.\n");
4 |/ P- A& X2 Y& }8 f) S! H; s
while(again)
, E9 F7 f d& n6 k+ n. E+ V: A{
' r: {2 f6 k5 Y0 n6 M5 lprintf("\40

lease input number==>");
1 B2 A3 d" v& L6 q! H* {
scanf("%d",&num);
- s/ p% ]' a. `* e/ s
printf("\40:The square for this number is %d \n",SQ(num));
# i) Z( H+ R" ^0 H* |" cif(num>=50)
) ?; d: E5 E' ?/ ]( Tagain=TRUE;
4 P, c% T1 F" L! I# ~3 uelse
1 ?3 v! j4 i. {! N! c7 ^again=FALSE;
- A2 m6 A, S# [" O) c' M
}
$ V7 K# h% \( P# @$ y}
& C, w; {, f# _7 K1 l- R+ ?* t
==============================================================
5 m( o5 ^2 W1 _/ Y" B
【程序47
】
- F2 ^0 _2 D; |( P- R; q3 h題目:宏#define
命令練習(2) 2 J2 Q/ E( H" b% \ E; I
1.
程序分析: ; L, E# F2 p5 `% @$ ~2 c* T8 T% j
2.
程序源代碼:
3 G5 o0 z7 ~! G- D8 P* B( _ H#include "stdio.h"
- [# h, l$ R0 _2 F6 m
#define exchange(a,b) { \ /*
宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/
( Q. a/ N* }2 {2 u8 bint t;\
/ f. X2 j8 H" C. R
t=a;\
/ s- G* f$ ~$ Z0 y" I
a=b;\
7 W: S; r9 i! P% o3 b# r
b=t;\
- v! Q& Q* r: F) m0 J) L1 {- w
}
2 \5 b/ N D8 A3 G4 b5 s# e
void main(void)
# v: u: l ^" {! i6 Q
{
& F. ~; K( W5 v* s7 G
int x=10;
3 Z# @) e0 g2 g# c6 ]3 i
int y=20;
( ^% C' X$ t7 r; Rprintf("x=%d; y=%d\n",x,y);
! q1 {6 @- Z5 s/ m/ Hexchange(x,y);
2 [7 R. J: z, xprintf("x=%d; y=%d\n",x,y);
0 ?% q, |. b. `& U. `$ i+ p
}
: P/ J* J: ?$ C5 u% s5 O5 p) E==============================================================
+ s3 a, b. @/ _. Y( k9 r
【程序48
】 , L. N. ~; Q8 U$ q
題目:宏#define
命令練習(3)
, P$ {! _3 V% G& Z1.
程序分析:
7 m0 A9 ^8 m2 j6 s. A2.
程序源代碼:
- W' \# K/ M$ x6 l5 v#define LAG >
0 P, m$ f1 ^8 h$ ?#define SMA <
$ P1 d7 E' P2 e- k% q* i
#define EQ ==
: Z1 k/ I: j$ z$ A' J7 u' a& _
#include "stdio.h"
9 E Q5 D* d* A& [$ g
void main()
2 I$ J" i8 n! _1 A8 J2 s8 Z" W
{ int i=10;
4 K4 o# J+ }8 `* b+ G8 X7 Vint j=20;
2 ]' K3 D( E9 z" L. \% Y1 \4 n
if(i LAG j)
1 ~5 E+ e# z; j3 g9 h, V% Eprintf("\40: %d larger than %d \n",i,j);
9 T( l# S1 |4 I$ Qelse if(i EQ j)
1 O U. ?# l9 j; {$ o6 Y$ m+ C0 qprintf("\40: %d equal to %d \n",i,j);
( [9 K! g0 Z- n3 j2 ~8 `, T- c5 Nelse if(i SMA j)
( L1 P: {) b- J9 {
printf("\40:%d smaller than %d \n",i,j);
: d5 `, O+ m: v/ ^$ ^/ a+ r9 Felse
& Q/ @2 [! o! ?7 A( u c
printf("\40: No such value.\n");
! W* n; J& m4 O9 X! \( ]2 U
}
, H; V7 z$ m& a) w- {==============================================================
$ q, y* G4 o5 b6 H5 ` H ) [! e$ q5 P, t& G8 q
作者: 白tyzb 時間: 2017-10-8 21:32
曾經自學C,最后沒有最后了
作者: moldzsdj 時間: 2017-10-10 08:41
自學。。。。收藏下來
歡迎光臨 機械社區 (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |