机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2103|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38
$ f5 F) C% T4 K/ T题目:求一个3*3矩阵对角线元素之和 8 x  b; }9 |) @0 Z" k
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
6 X  S: J, c' m' n4 g# N2.程序源代码:; I$ ~, e% K. {- z' r6 u' z
main()
. B* @3 g, r* n6 A0 n{- d# {$ ~! [& d' `- P
float a[3][3],sum=0;
, f( h1 F' L  x6 [$ N; g; mint i,j;
; V$ g* w6 j: D6 L' Z9 R$ [1 Gprintf("please input rectangle element:\n");4 e" }% d. D5 e* c' n" F
for(i=0;i<3;i++)
) d! l6 l1 L' s4 o! R! x5 m8 J( D- O' o for(j=0;j<3;j++)
& c" X2 s) J/ z, _3 D' k2 G0 v scanf("%f",&a[j]);0 G* r: v# m- n
for(i=0;i<3;i++)
/ m; D- K9 E, v8 ]3 c sum=sum+a;& e6 S; h: S- @) n! |5 f
printf("duijiaoxian he is %6.2f",sum);" }: b; O- e$ f7 F% j
}
. y- W7 y/ u- Y; U==============================================================
9 T; f0 n3 d0 N6 w( v- Y' s5 _【程序39( {* _* n# {6 w" H- R3 K
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。/ w4 R- B" t" I. J" b
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后' M. U) V/ b6 @& i9 `' U
     此元素之后的数,依次后移一个位置。
7 Q# M( O7 X- b% _2.程序源代码:
- T0 p# r6 z3 o8 R( Wmain()
2 t  V8 ^% I: _  b. o{
) ^6 ^4 D. D$ Q1 h0 @: v6 ~) eint a[11]={1,4,6,9,13,16,19,28,40,100};# F, J) ?' S* z& E8 Y7 d2 {
int temp1,temp2,number,end,i,j;5 t, i+ B. r! K7 p# u
printf("original array is:\n");6 v  @% m% i& a- y! M
for(i=0;i<10;i++)1 `2 H' t! V6 b
 printf("%5d",a);
3 F+ f: l1 C5 B) iprintf("\n");* ~7 o. Q2 |+ A7 I( \0 [
printf("insert a new number:");
" ^! U9 e4 H5 n2 U& W! xscanf("%d",&number);: I6 u' W& F% {6 O0 e2 E5 z
end=a[9];* c+ `" w( O7 ]8 l5 w" V8 G
if(number>end)) q+ p7 i; A+ _! x( c' o
 a[10]=number;! n  ^+ h  R* a3 K1 ^5 B8 x
else1 x4 g- l/ S2 l5 ^3 M# v% g
 {for(i=0;i<10;i++)
4 R% F8 H$ ]( t2 C: H& j  { if(a>number)+ v9 |# S, Q/ r. I
   {temp1=a;
: `- g0 c& U& F7 {" K( x& N/ Q    a=number;, Y; W: l+ u% |6 S
   for(j=i+1;j<11;j++). d9 B# x" M/ _
   {temp2=a[j];5 r9 t2 d9 \$ X7 E, A1 Y4 e
    a[j]=temp1;4 M0 P- X/ S2 X( T7 g" x1 y
    temp1=temp2;
2 }- k6 j" }0 i/ Y/ K   }
, m# M! [* U9 c' e' S   break;2 }% P" H* c& x
   }7 G- \5 y( {( z$ a7 r' |8 c
  }1 C. K: A* a0 l' H" O
}
( P( ^8 {4 m2 T/ t% Ufor(i=0;i<11;i++)
1 q, |4 Z, s6 E: v printf("%6d",a);. Z% ?2 E0 O" D0 n$ G, `- @
}
! Q' r, U6 M: H9 r% h8 A6 Z==============================================================
9 T0 L) `/ G* E! \; c) d0 q. s【程序40( @* S0 ]- I* u" E* p
题目:将一个数组逆序输出。
+ a0 [. f  g+ w1 [( U1.程序分析:用第一个与最后一个交换。7 I- c6 U/ ^# K3 }$ c
2.程序源代码:6 }2 x; y$ k) ?% l% N0 l
#define N 5' ~+ U8 U0 h9 t) O8 F: }
main()
% T& _  N& s) N% e& k{ int a[N]={9,6,5,4,1},i,temp;
( \. U! [( q. U. P) k printf("\n original array:\n");
# T5 v& c. l7 r) _ for(i=0;i printf("%4d",a);
& W2 `' M6 A$ Y$ X& q7 X4 X for(i=0;i {temp=a;
' }- B" @$ |" R1 T- [4 v, d) v  a=a[N-i-1];1 o. }' J5 E- R: C9 ~; a: a
  a[N-i-1]=temp;* T) c" Z+ K$ k  q% }* L2 R
 }8 i8 G# p% M2 M& J( ~+ a/ D6 B
printf("\n sorted array:\n");3 B& `5 ]  A# q7 C+ t: h: u! W
for(i=0;i printf("%4d",a);) K/ A- O4 b8 S( l
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 # u4 m7 k9 u  s& E# N
题目:学习static定义静态变量的用法 9 t) }5 F5 F! [/ b* Y" q
1.程序分析:
$ i9 W2 p7 x% L2.程序源代码:
* V, H3 ~  V. `  M/ o) O#include "stdio.h"
; f4 U) Q0 `& l# T" Pvarfunc()
+ A8 P' `; A' e" m4 B6 D! U1 V0 V{
* e+ n9 L9 s* g* w  ^/ X+ hint var=0; + h' Z! ^* n/ [; C
static int static_var=0; 3 ^! X) j  {) r
printf("\40:var equal %d \n",var);
8 c/ J& X4 e' X7 u1 Dprintf("\40:static var equal %d \n",static_var);
" Q1 v6 P, }8 |' o2 c% Bprintf("\n"); 5 n) ~  y- ?* |( A) V3 J
var++; 5 U# E7 J4 V9 |" ^, W
static_var++; " U; S5 ~) [$ X% h: q
} $ _% t- }" z- O! B  f$ L4 M6 K
void main() 0 a. F7 Y) u' G3 s  q
{int i; * e" h* c! x+ f) \
for(i=0;i<3;i++) 0 L9 h- o3 K! S" j; |9 h
varfunc();
9 A: w9 E8 m0 K1 @/ p; [& Z}
5 F. B: k' b9 }. p( B. b" C============================================================== 5 Q2 L  |" }: [& X5 B& i& Y* f6 [  }9 m
【程序42
7 T6 Z" G" Q  g' \6 E6 L题目:学习使用auto定义变量的用法
0 [/ z+ m& b" L$ X6 m+ [, k1.程序分析:
" n) I! @" y& `  d6 \2.程序源代码:
3 w% i3 h& I" v8 A1 J8 f  {#include "stdio.h"
! Y6 k9 ]# h4 a$ Y. Fmain()   r$ [  s6 E7 E& g+ i3 G
{int i,num;
: u; K- u" [# V; R. s3 x  T! }4 Vnum=2;
) z5 f0 ^7 }* ]1 c, J' p! E5 dfor (i=0;i<3;i++) 5 Q# n0 ~! C/ t, S* {2 M8 P( ?$ `
{ printf("\40: The num equal %d \n",num); 6 B- S. D) S' r. E) C2 q
num++;
$ p0 ]3 f: i4 e8 a, v- ?7 w0 d. H- h9 k{ 6 z7 p: a; R6 w3 \. u3 c
auto int num=1;
* g- x* G2 Z9 {9 F# n1 F( cprintf("\40: The internal block num equal %d \n",num); ; \, Z  ?5 P/ w
num++;
: B8 f, t8 e( G9 |} ' f! L$ ~; w8 ]3 R0 e& X4 v- {" G
}
$ A4 X3 X5 s1 M4 C- r8 p9 e}   X- D6 o0 Y' q: \: q5 ?6 O! b
==============================================================
# r, P# e8 s/ K- [; e8 R【程序43  d! t6 T, r2 c" y0 h
题目:学习使用static的另一用法。 9 e8 N0 v" h5 [% S* M6 Y. d
1.程序分析:
: k; m2 p! I+ v2 N6 a2.程序源代码: 0 e7 V& t3 X3 A- N3 ~# J6 H
#include "stdio.h" ' |* D1 G# k0 i9 s6 i4 M
main()
+ d/ X% N) \+ J) e{ ( s% B3 o7 {. E! K3 S. d
int i,num;
4 S! h+ p- @! inum=2;
' Y8 u; g& m' ]( Qfor(i=0;i<3;i++) 8 X/ R7 E) \# H1 G
{ 7 e) O) S5 h) Q- [9 @. x3 _# k
printf("\40: The num equal %d \n",num);
% g) |3 G; z0 l$ t, S! x- E) [" lnum++;
6 `; ?- Z$ O5 O  {, V4 ?  ?{
; X$ z/ @( s9 Ystatic int num=1;
2 a5 k; @0 O3 L1 B: {8 `printf("\40:The internal block num equal %d\n",num);
5 T; X$ z! g# }5 I( C7 @  fnum++;
. K. ^& u9 o' D& Y- Y} 1 l7 B' Y. U  @: X3 N) g0 G6 L
} * R( T( m3 q  [
}
6 }" F! H# _, H9 o. c& J, Y==============================================================
8 l4 H9 X0 L4 K$ k【程序44
5 Q* p* w4 |+ b1 e4 Y* i  {0 A4 a题目:学习使用external的用法。
7 ?$ S( T0 L. D/ l1.程序分析:
9 s6 ~! N" h$ ^* q5 `. l3 y2.程序源代码: # i& L$ ~4 v. O6 i# U5 B
#include "stdio.h"
- y' @6 j/ p& S  e7 H; A& aint a,b,c; ' U, i) l$ L7 Z1 ^2 M
void add()
$ y# o! B+ d+ F6 f- }1 q( {{ int a;
+ e0 W$ H4 M, ?1 }" J) W7 ]a=3; & b" |# v4 N$ T9 w
c=a+b; * h) |9 j/ r' J, r
} * ^6 l# Y( i/ V4 m
void main() 0 ]  w& h1 u3 H
{ a=b=4;
, Y2 ~7 Q( V+ D- V, Z8 padd();
& D8 Q1 g2 J( p- T. t( Q( }5 a# x% o' T+ Xprintf("The value of c is equal to %d\n",c);
4 `! J* O) }$ q  B% O}
  X! a4 g4 y- d2 d0 B==============================================================
+ }, r* E2 X: ~$ i# V  ^9 S【程序45
$ W! \; U: u9 k7 B5 s+ I& t题目:学习使用register定义变量的方法。 2 M, ?/ J: p, a
1.程序分析:
; P  ?% Y1 I6 c% G, v: }5 k1 f$ O# g2.程序源代码: 5 G$ [9 B( ?5 x0 f6 F& b
void main() 3 r% u( m! K0 J7 \
{ + g  ^7 K$ M$ _) }) B* J; L
register int i; & Y2 T9 L( _" ?
int tmp=0; $ U5 Y5 g& `0 h: Q
for(i=1;i<=100;i++) % `5 i- Y4 k5 R' S6 f) Q( v
tmp+=i;
- Y8 ~: H6 F8 qprintf("The sum is %d\n",tmp); , x' W; B/ f3 J5 o
} 8 q# z7 @. y4 J) o+ U6 r- f
==============================================================
0 Y# ]. w" k6 |/ p3 Q* q% [, e/ F【程序46
! l# p1 }. `2 Z1 p& S0 D: y/ Z题目:宏#define命令练习(1) 0 d/ N* ~/ ?! U' w7 W% G- x
1.程序分析:
* B6 ]9 @& P1 T# _  Z# Q+ K2.程序源代码: ( n1 P' e0 ]1 g' I: j' Y8 |" {
#include "stdio.h" # A) K6 @' d/ w4 @% \1 E
#define TRUE 1
; U, T. R- k$ v% {& a' ]#define FALSE 0
7 m- p) v- H/ M$ ]: g' F% B& K8 G#define SQ(x) (x)*(x) 3 x3 b  [$ W+ ?5 J
void main()
" S9 B2 L3 a9 I4 y* c{
; o) }3 h+ p& Q, d. Pint num; / j" L8 V1 \4 N% F. \0 D; _0 l8 {
int again=1;
3 g" i/ x8 ?: F/ X2 O$ s0 |# Yprintf("\40: Program will stop if input value less than 50.\n");
- H1 i# a4 U2 T. d5 P' z! jwhile(again)   `. ^7 B8 H( z/ {- B- I" S
{
, }, ]0 ]% ]! U5 X9 d7 ]' vprintf("\40lease input number==>"); " \: i: T6 g4 Q8 u* o, Y9 b
scanf("%d",&num); 6 m+ [0 F6 t# _0 _
printf("\40:The square for this number is %d \n",SQ(num));
& C3 ^* z/ Q9 b- Jif(num>=50)
! _; ]7 h2 H6 L% K% ^again=TRUE;
& _; Y. [# ^) y9 G: gelse
( o; T- u- R* G5 Y( {( R1 Sagain=FALSE;
# q0 J' {  N: V7 C' [} 5 I5 R5 b! @& {9 V* G
} ! Y" _3 ~# C1 i+ D9 ^
==============================================================
! {+ B/ I9 Q& V1 e8 ~【程序47
/ k; h6 D" Z, I2 |4 r* S题目:宏#define命令练习(2) ) _; i- h, b! X1 ]
1.程序分析:
8 y% J6 _: k5 K( i2.程序源代码:
% g3 T" T6 e+ @#include "stdio.h" 2 R  r% x  k6 h$ y, ^( v
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/ + V& E0 I6 G+ w* N+ d* p' Y
int t;\   i; U/ k2 r- ~1 [5 c, P
t=a;\
; ]7 [8 v, _( L6 Ea=b;\ 2 y4 A2 s- M0 g3 s: F2 R3 L
b=t;\
" ?. e4 W# W8 e} . e3 _8 i. w. U6 U
void main(void) 9 \' M1 {' o: e! Z; t, K
{ / h$ e4 _# K. B
int x=10; ! Q9 Y5 q8 s6 n' r
int y=20;
5 g6 |, V$ f2 \6 e- X+ i( _3 k5 Qprintf("x=%d; y=%d\n",x,y);
9 I. l# K3 U% Y. d: p% ^5 |exchange(x,y);
3 @( ^: p& o6 N5 d+ mprintf("x=%d; y=%d\n",x,y); ! y5 }! G0 i7 W9 d, L
} , V0 R  O9 r& Z7 V0 H
============================================================== , E1 J) U5 N* J) j
【程序48- S. d; l& A, L8 P( z3 s" n
题目:宏#define命令练习(3)
8 T) I6 B  V' _2 J& H3 |1.程序分析: " a# b0 x$ {& h# z, p1 Y: }  o" F, d
2.程序源代码:
/ ^* x3 c% o  I2 i/ d#define LAG > ) |- R3 R* e2 j' c& [" c
#define SMA <
6 n: y% X3 e6 x$ X4 w0 [% F$ r5 I# j#define EQ ==
2 `5 v, q+ ]3 G#include "stdio.h"
. E( x( l1 O: {; zvoid main()
5 s. S8 q% }" b: r! R3 H{ int i=10;
5 ^3 b8 a) w; M8 w5 G) P* V: i. W/ {int j=20;
& h8 k; ^" W/ E, Y8 I0 d/ f* mif(i LAG j)
; f7 h3 ?8 G7 f5 xprintf("\40: %d larger than %d \n",i,j); 2 F: i3 }1 p) ]7 B
else if(i EQ j)
3 ~# U- G1 Q0 A1 K- ]printf("\40: %d equal to %d \n",i,j);
- o8 A4 L) Y, C/ \: Selse if(i SMA j)
. E% m  [. v3 o, J; Lprintf("\40:%d smaller than %d \n",i,j);
; u9 |2 ~7 Y0 N& ]else 1 [( m& D" \' P" o* b6 H
printf("\40: No such value.\n"); ' i3 Q( N0 v- l' c4 y9 D& l$ D
}
& D) A+ @/ O6 M! E' d5 x( s============================================================== 7 s2 U* |' |5 `& {* I' Z/ S% L  v9 Z$ L

2 k: e* F, \* Z7 e. L
回复

使用道具 举报

发表于 2017-10-8 21:32:49 | 显示全部楼层
曾经自学C,最后没有最后了
回复 支持 反对

使用道具 举报

发表于 2017-10-10 08:41:14 | 显示全部楼层
自学。。。。收藏下来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-4-26 17:25 , Processed in 0.058244 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表