機械社區
標題: C語言經典算法38-48 [打印本頁]
作者: tainqing 時間: 2017-10-8 15:23
標題: C語言經典算法38-48
【程序38】
2 v1 @; y! y5 V: g9 I題目:求一個3*3矩陣對角線元素之和 5 y8 L6 G& W, W
1.程序分析:利用雙重for循環控制輸入二維數組,再將a累加后輸出。6 s1 X! u9 w) Q
2.程序源代碼:) ^( _5 c0 ~: h) z7 N) l* _& q
main()
: Y6 l" y {, v5 t{5 `, L; J& \/ R7 }
float a[3][3],sum=0;2 f$ C& a/ Y! B0 |- m" K; Q Z
int i,j;/ P: A' v0 ?' j, G1 \
printf("please input rectangle element:\n");
4 J) u7 q5 b9 `) c5 nfor(i=0;i<3;i++)! P! S/ S3 g3 f }2 e
for(j=0;j<3;j++). M3 k6 ?2 [6 {" ?* y6 H8 X
scanf("%f",&a[j]);
. ~2 \4 N' r: i# ]/ jfor(i=0;i<3;i++)
3 n1 y7 I) J* j. o sum=sum+a;
- \3 q3 ~' ~: Nprintf("duijiaoxian he is %6.2f",sum);
* G- f c# v4 m' B3 [. N4 D}
, W, W7 x" c; O0 U$ ` G==============================================================9 T; j. A B1 J' W( R
【程序39】2 x" p# X& U3 S v* J5 _
題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。$ Z0 T ?' E) _% Q# Q. e# G
1. 程序分析:首先判斷此數是否大于最后一個數,然后再考慮插入中間的數的情況,插入后- H3 |$ B3 A, S" D# i; X, O4 d
此元素之后的數,依次后移一個位置。
+ F/ }& N' o7 M. C4 a' h0 H2.程序源代碼:. y G* h X& x- `# M* M w+ k
main()
7 y8 n5 ~) W7 X3 h# v) j- w" b{
" Z( k* D7 }. O- U! tint a[11]={1,4,6,9,13,16,19,28,40,100};* Z9 v# }) e$ X5 u$ B. f5 T" N
int temp1,temp2,number,end,i,j;" k3 ?5 a r# x4 i4 F- M+ X
printf("original array is:\n");$ k4 m1 N7 u7 x, p @
for(i=0;i<10;i++)% h0 Q4 R% S. @$ a7 I8 j/ }
printf("%5d",a);
1 J- q! U6 A; tprintf("\n");
8 n: E0 L3 \4 h s0 Eprintf("insert a new number:");
7 }4 j- W- m. Uscanf("%d",&number);
6 l; c8 i( M/ B8 }0 d+ [! H' }& m* Tend=a[9];! y. t0 J. F& A; J, w% j% G
if(number>end)
' B. r9 n; g) G& W9 Z% B a[10]=number;, `4 G( o7 \$ U. Y1 A, n9 s d
else/ W: F9 {5 }7 K1 H! j d" h$ E" s
{for(i=0;i<10;i++)3 U' M9 u! O5 e) |% U! s5 Y, ^! B
{ if(a>number)
N! F' K( @; C H7 F' W {temp1=a;
6 [' N7 S' e& U6 t% v a=number;7 E) z @" V' I# o* r* R* a
for(j=i+1;j<11;j++)
: ?, s% L2 g/ V9 X& X {temp2=a[j];) L8 ]* q/ c. }8 u3 P1 r7 w( M3 f
a[j]=temp1;
( z1 V9 _+ u' ^2 c# i: G8 S temp1=temp2;
Z- j4 {% C' p3 X l! @6 m }
6 F* | C$ z" y! C8 Y" E break;! [# y8 s$ G4 m( H
}$ v5 o+ k+ A) e/ T4 V
}5 h2 o$ o, D/ y( M
}& Y7 A( K+ @) v, [' r0 b! P
for(i=0;i<11;i++)8 u+ s" C, r6 c( |; j$ W, a
printf("%6d",a);7 v2 R) S: j% U+ n8 U% v& l
}
& r# X1 s a1 m+ ~+ F, O: W==============================================================; X; B" M% x4 L7 V: r# ^
【程序40】+ `( T9 N6 d5 w8 j
題目:將一個數組逆序輸出。
: `) V r5 p* t$ U6 ?1.程序分析:用第一個與最后一個交換。% ]0 g5 a# j, [! f2 c( A, n
2.程序源代碼:( N4 p- e! G6 t; F8 d1 n1 T! k
#define N 58 x& _" m( I2 v" {! d4 R- R
main()
& m% G7 q# F( p/ t# u% C" P3 }/ [{ int a[N]={9,6,5,4,1},i,temp;9 e" h2 D+ Q8 C0 ?/ p
printf("\n original array:\n"); M- l) f) e( x0 P' \
for(i=0;i printf("%4d",a);
- ]. ]1 V: J z. C1 W5 l for(i=0;i {temp=a;
+ g7 l6 D1 k8 M7 Q+ j3 u9 F, J a=a[N-i-1];9 F: ~+ Y: r$ P3 p
a[N-i-1]=temp;( E& E' ~8 z9 Z3 C* [* p/ W
}
) H' |, Y; t% V G! A, Y+ }: S: Jprintf("\n sorted array:\n");5 l% p* f: D, f
for(i=0;i printf("%4d",a);* C" k4 K9 f6 |# p
}
【程序41信盈達嵌入式企鵝一一起嗚嗚吧久零紀要
】
- F: _1 T( g2 ~: ~$ W題目:學習static
定義靜態變量的用法
0 L# f- F9 ], S v: \1.
程序分析: 1 _, V8 F2 v8 i- ?3 g
2.
程序源代碼: - y- U! j* j3 F6 [) k
#include "stdio.h"
0 Y9 U' w# j3 R5 ^ e( E
varfunc()
3 f, L! d" Q) k' k$ O{
/ @5 }/ i0 G5 B- @
int var=0;
% Z+ h" k' K. H+ D
static int static_var=0;
+ Y0 I3 t# s4 |4 k* a
printf("\40:var equal %d \n",var);
9 R1 F- n( W6 @, Y l4 P; g' jprintf("\40:static var equal %d \n",static_var);
@# L/ H. u9 R" }1 Y' Q1 \printf("\n");
$ K, K7 f b# @+ s1 H P D+ a
var++;
& n* _1 O+ b" U- u; M' e; G
static_var++;
7 A; q/ f; ?/ T [5 Z% P' w}
. C8 A' S/ z1 e, F. K
void main()
. i0 a J- N( v# u; q! O3 X8 S* m( s }
{int i;
# K" R4 H9 I) V/ ?8 }- Y% S' _
for(i=0;i<3;i++)
: ^) g9 r6 ?0 C% y$ g
varfunc();
w% O$ \) E. E7 o9 n' W; f
}
0 u6 l3 k5 g, d) m==============================================================
8 | ^! P, N0 d7 \& }9 @6 u【程序42
】
. @& D4 A. G) N7 m; e1 d; W2 T題目:學習使用auto
定義變量的用法 : ? `6 J6 {+ B8 R; f
1.
程序分析: 7 K( }+ c% ~0 u" K, i% H) t
2.
程序源代碼: - E6 I* z c6 X1 a
#include "stdio.h"
! U: ~ k- y* |# Hmain()
Y$ ^3 Z9 P6 b{int i,num;
- _0 q j5 \! \* R* E& {
num=2;
/ R& Z0 i8 s3 X, U) H9 O3 Ofor (i=0;i<3;i++)
/ G+ U2 A) X' \$ X) n
{ printf("\40: The num equal %d \n",num);
* T0 b5 P) ?, x4 S
num++;
& i+ L+ @) N2 [0 z! T4 p$ ?
{
+ ^' f' S0 K6 F5 J5 E, j; cauto int num=1;
$ N _) W, y1 f( p: ~8 }
printf("\40: The internal block num equal %d \n",num);
! L P' e& x5 C8 d" ?
num++;
( p/ w) | ~7 y; h6 \
}
0 b3 X3 u$ s* T8 B/ e- N}
P; [; Z8 Y" t}
' l- R- N% { g) A* Z3 I==============================================================
6 x. Z1 N0 P9 @9 Q
【程序43
】 1 @9 \5 z# _* w& M% y
題目:學習使用static
的另一用法。 $ S! \8 [0 P! M ?, P
1.
程序分析: . S# D4 p, L- S& V3 }" p- ?1 ]4 W
2.
程序源代碼:
9 `0 ?; a# K* B4 i* v#include "stdio.h"
. _% C# E; ]( t5 p
main()
" I6 G7 V @7 n% G$ T( a; b9 d{
! R0 Z* n0 j) H% H. f! v4 }int i,num;
2 F4 E2 }( s4 [# z4 v8 Y2 J$ l. Vnum=2;
3 j2 Z+ h2 } ` e0 Ffor(i=0;i<3;i++)
) w- p* g) v+ \/ H+ A2 V{
/ I- l6 I8 a4 O- lprintf("\40: The num equal %d \n",num);
% W( {5 F3 ~% Z8 f$ j
num++;
% Z' V9 A+ A$ A" m/ a4 I- ?6 l
{
& M! N' k' L& Pstatic int num=1;
7 q" q# ^) \& Eprintf("\40:The internal block num equal %d\n",num);
8 P" B4 s7 y8 f; A8 t) _# L% H
num++;
: D) U! s( R* a! @' J}
4 c$ B7 A( C7 U1 u j# f: u
}
6 J" e3 H5 Z! Y; P
}
?, D& ^) q$ ]# [& K
==============================================================
2 _' g- C1 U* ]$ Y【程序44
】
$ E$ t) X# U" T) d: S$ ~題目:學習使用external
的用法。
) N- _* |2 Q Q7 p k/ K1.
程序分析: 4 {" `! r" a2 [5 T( A" J R
2.
程序源代碼:
; m+ E3 u- e, t#include "stdio.h"
" p3 Z) [8 n: @6 v2 L% B$ `- x
int a,b,c;
~) n. l9 V( c: R5 Dvoid add()
6 N+ x+ h; m9 t0 h' b% u
{ int a;
# _2 b8 R# p- }* n; G* ka=3;
" I6 }5 h2 _3 ~) Q0 M5 X
c=a+b;
$ I# L. l7 [5 d7 t3 c; Y: y" G: U5 n9 l}
. V( M' G% A6 K6 o3 Q0 ?+ I1 T
void main()
" o v+ }) B8 @6 y
{ a=b=4;
" Q1 x) L9 ?( T' sadd();
/ u) A: K; s0 m/ ^
printf("The value of c is equal to %d\n",c);
1 [ ?+ ]" j" t, e+ K}
3 s6 d0 V6 ?$ G( A
==============================================================
) n2 P* P! S' c1 V
【程序45
】
: v" B( S G5 m* O; X0 A I" v* t$ [題目:學習使用register
定義變量的方法。 & J! n# V: _8 P$ F
1.
程序分析: 9 W! E7 N; Q3 f5 k' `0 b
2.
程序源代碼: 3 Y& \# f* Y& Z3 N' y4 M
void main()
: _! K1 W$ P3 E4 x6 D{
0 D0 E5 `$ H6 x3 R" A4 Kregister int i;
8 w+ K; P+ u) i( n# u# ]
int tmp=0;
# n' ~/ Z9 C- X: Rfor(i=1;i<=100;i++)
( }7 D1 n2 V, Atmp+=i;
% |( b% n/ N0 n5 x$ E8 t! K0 Eprintf("The sum is %d\n",tmp);
4 j9 I3 m. X, T, `/ k! ~}
; i! b7 ~9 D& I" |==============================================================
/ E0 j( P" ^4 e3 _# w* W
【程序46
】
" v9 u) X1 t/ j題目:宏#define
命令練習(1)
& M) d! p. M5 m7 Y) q$ _8 j1.
程序分析: 2 f: p" i. Z" S% f' P' d
2.
程序源代碼:
& Y- a) W0 |! M7 r; m* s# t#include "stdio.h"
4 r! j; a2 S9 _% m0 g" B! s/ h S
#define TRUE 1
" d* E3 {% a" r3 p& r& v5 F* k#define FALSE 0
& h @: k# s" Z% Y& r& p#define SQ(x) (x)*(x)
2 y# F9 E/ z6 [: w- W8 K
void main()
/ a+ @/ a5 N2 |8 H
{
+ N0 p. Y+ G( e! Eint num;
: w! N9 p$ c( U' u+ ^; }int again=1;
8 m. `% h4 `) u% ]& G5 r# {# P/ r0 Rprintf("\40: Program will stop if input value less than 50.\n");
/ W7 ? E) U0 i
while(again)
" V- L1 h/ R1 K r5 H1 h0 Q{
; l+ u9 c0 A5 W, O! U5 B
printf("\40

lease input number==>");
5 V; y; p3 O% X2 i% y! t8 Oscanf("%d",&num);
+ O% H4 G! ?% J4 _8 K/ _
printf("\40:The square for this number is %d \n",SQ(num));
( a% H3 g$ S! @
if(num>=50)
8 |3 N, w' L7 O; h( K0 u* l
again=TRUE;
6 W4 Q2 y1 e( @7 F7 h- J
else
& K7 l3 B) E4 U4 `again=FALSE;
1 o- o) ~7 ~: A$ c$ x$ E
}
( G* j7 I0 z9 E1 k, x$ w}
2 o- T6 W2 p% |+ b) }1 r- b# M==============================================================
1 n" j% j4 r V【程序47
】 " X, c# \! j: {, ~' e
題目:宏#define
命令練習(2) 0 ~& D' Y1 W6 j: z' x( O
1.
程序分析: & u& v4 ?* h0 Z3 P! e8 v7 }
2.
程序源代碼: / }% `7 s o( W/ y* u7 O" c
#include "stdio.h"
C/ z j2 M5 p5 V" }#define exchange(a,b) { \ /*
宏定義中允許包含兩道衣裳命令的情形,此時必須在最右邊加上"\"*/
7 r% p: r0 X1 n0 U6 aint t;\
B+ l0 t0 ^' U- C( ?t=a;\
* _. W$ \& C4 @ b8 V
a=b;\
7 n' k8 l7 Z3 }( i* n$ P
b=t;\
A" ?. I5 `+ Y4 m5 C( l) t7 G I) q}
3 E3 K- c$ b3 e9 S
void main(void)
1 }; M) B1 U- k& Q1 G: W# @! j1 V{
' r" J5 p y* ?- y& K
int x=10;
, u) O" p' Y* B9 I* V+ ~int y=20;
7 o& k* v* \+ D- {
printf("x=%d; y=%d\n",x,y);
( R# V! W5 G8 y- h7 P4 vexchange(x,y);
) I7 F$ H% m! G0 Fprintf("x=%d; y=%d\n",x,y);
% Q/ z- h9 ^' m Z
}
% q& \. h% |3 D \
==============================================================
: O; V' d/ q% s6 S4 K2 c i, _
【程序48
】 " T. y# U9 ?* _! ~, J8 W
題目:宏#define
命令練習(3)
' J5 o1 I8 o9 W( Q1.
程序分析: / y4 o6 z0 b n& ~
2.
程序源代碼: * e2 o- |, j: w# V' {6 I) \
#define LAG >
& p" A# j6 h% {# `#define SMA <
" O) Z. t% k8 f7 o* D( O
#define EQ ==
' E) \( f8 W: c7 U/ R#include "stdio.h"
6 D5 v R5 p/ o& [$ J2 Pvoid main()
7 I) [, m7 |' E( n; O3 n' L{ int i=10;
' b# J3 o& }' y! I; A
int j=20;
8 V; N& U8 S4 X' _# \0 ? |2 m j2 dif(i LAG j)
! ?5 @; i% j$ Q9 m F2 z# E
printf("\40: %d larger than %d \n",i,j);
/ X( A. s: Q) A
else if(i EQ j)
" Q3 A' ^/ |" ^8 Cprintf("\40: %d equal to %d \n",i,j);
& E v2 P/ Q9 O( W& relse if(i SMA j)
& b, g# C* Q: ?& b7 o& K- A3 e
printf("\40:%d smaller than %d \n",i,j);
! ]* a% n5 Z$ o8 U1 ~else
2 [" _# Y& r& y. w3 _. T& Oprintf("\40: No such value.\n");
6 U* {1 K- p% Q- t4 @
}
! d& Z$ o( b4 X4 W$ H/ D==============================================================
% _- G+ Q9 F% W' t3 N( d
+ K0 s g% k- Q
作者: 白tyzb 時間: 2017-10-8 21:32
曾經自學C,最后沒有最后了
作者: moldzsdj 時間: 2017-10-10 08:41
自學。。。。收藏下來
歡迎光臨 機械社區 (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |