找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2692|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38" n+ l, z# w7 U$ X
题目:求一个3*3矩阵对角线元素之和 $ `! F, [1 U$ {7 O3 d+ H
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。9 O0 m, E1 W. ^6 @* g  G
2.程序源代码:
: H- Z7 \# V8 Vmain()
- o% d* ^* Z/ x+ I! R# v0 e{
) ~, j3 ?/ b  e' tfloat a[3][3],sum=0;
6 S5 G: Z" I. e# D1 k% P* o* ~int i,j;
$ Q4 Z0 E6 T7 Q7 F8 R1 F, jprintf("please input rectangle element:\n");
+ L! K. ^6 v( L4 j; ~for(i=0;i<3;i++)
$ |2 R* q2 n" Z1 T8 a: G1 z3 a for(j=0;j<3;j++)" f4 n  O# O4 W
 scanf("%f",&a[j]);
% C. K4 g* E! I, n! O& Z! E8 U; Tfor(i=0;i<3;i++)
" T3 T" x4 A, y sum=sum+a;% M8 d1 Q$ e6 s- f: @2 b
printf("duijiaoxian he is %6.2f",sum);
# D; N# l: x9 m0 K) G- x; h: v3 s}8 T6 ^2 m4 e0 g7 l
==============================================================
' L+ o( i% ]7 G: P; e【程序397 I' @% C% P- a2 s- }; z" ]$ r
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。! s/ b! E5 L# d
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后# @4 \" w$ r, k
     此元素之后的数,依次后移一个位置。
( r7 h4 T/ s+ t) U# w3 y" v! Y2.程序源代码:
" j5 j, p8 u: _* Zmain()
9 o7 _! k. N* h8 v{/ v, i2 O# w# Y8 |
int a[11]={1,4,6,9,13,16,19,28,40,100};" h( E7 \5 W% u0 {4 x
int temp1,temp2,number,end,i,j;6 W2 [: ]8 g) k% |
printf("original array is:\n");# F: t7 K$ P! b) S# \4 U
for(i=0;i<10;i++)$ N. O1 |- B$ n& f
 printf("%5d",a);) I# k9 g- E6 ?" w
printf("\n");% u2 w- w! |- s5 E0 j8 d
printf("insert a new number:");: s- G+ O  N0 a2 n$ [3 F, m; B. z8 I0 u
scanf("%d",&number);
: }% S& e, }4 e$ j! V7 |end=a[9];. ?, X! o$ a, i5 R/ Q' f4 }" l/ t
if(number>end)
- R6 C( m" m1 t6 `( O8 h a[10]=number;
5 Z& Y, V' c* B8 U2 B5 E! F: Yelse1 T/ D# h9 p5 h- C% y
 {for(i=0;i<10;i++)
2 n0 u6 {! M& T9 U/ }/ S; r, f  { if(a>number)5 @, z+ ^7 ?. Y9 \6 x. j
   {temp1=a;: K, B  J, H/ a1 z6 d: B2 B
    a=number;# P* H$ K1 T! b- Y
   for(j=i+1;j<11;j++)
& y; e! n5 m: N9 F. I   {temp2=a[j];
8 v; K) i2 b2 b- `% a, h; }0 `    a[j]=temp1;, r7 J  e  }7 M5 \
    temp1=temp2;
& U- l2 u! [4 a* t! S9 j   }
. q: J3 B0 i" @7 X7 q, Z  y   break;
0 Q2 `; T3 b+ o, C8 N# `% u3 S2 y   }
9 a: F4 ~) ]3 b: _1 X  }
( e3 Z! }. v9 }" J/ ?7 K}; g2 m6 I3 t, o$ F$ U2 N
for(i=0;i<11;i++)
" M! P8 U7 p6 U( k! K  k; a printf("%6d",a);
3 M! X9 ?, B) m0 m}7 m% N# a, l" P, h6 H  H! N5 w; S
==============================================================
  ]6 i$ x" y; w8 d【程序40
- [+ ^0 a+ U. }$ u题目:将一个数组逆序输出。; p" S5 o6 n2 ~. b
1.程序分析:用第一个与最后一个交换。" e. w9 @! @- t5 e, m: q' `
2.程序源代码:6 w% `: y: e2 U
#define N 5! G* k2 P  G( Q/ M( f8 o$ J
main()( |' w) P2 O2 v, S# F: i3 b  Z+ \
{ int a[N]={9,6,5,4,1},i,temp;
6 [* R( p8 c/ N( [& [5 p1 C printf("\n original array:\n");( x6 v. |* R" S: V
 for(i=0;i printf("%4d",a);
4 u% ]+ M  r0 |7 `* P# O for(i=0;i {temp=a;6 \+ F+ e/ ?3 f: t
  a=a[N-i-1];
1 S: v: f& ~* [' s& z  a[N-i-1]=temp;
8 z( Y# w' Y/ z- n! `7 K; j }: m+ N% q" `6 }+ Q1 i" H
printf("\n sorted array:\n");
6 L) v4 `3 w1 Zfor(i=0;i printf("%4d",a);8 ?7 p1 J9 f& f
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要
2 v# l# e6 f' }- ^题目:学习static定义静态变量的用法
8 P9 b5 j0 Z4 w7 H' B1 ]* O1.程序分析:
7 D1 A0 @. M; ^6 s, C7 J% @2.程序源代码:
) J$ \1 a! ]* n1 j#include "stdio.h"
, W0 Y  J7 b/ i5 V  tvarfunc() 0 f: s4 s( U! i( t! F5 B7 y, {
{
2 _; o9 B" k, H* T+ Oint var=0;
; H5 _% n7 T: b/ p9 M( o" Sstatic int static_var=0;
# ^) x( O; g0 w) A% o( hprintf("\40:var equal %d \n",var); 1 t8 o" f1 E, K1 F+ G& g: p4 B. {
printf("\40:static var equal %d \n",static_var); ; A* y8 f9 t4 A
printf("\n");
$ |- ~/ ?; }/ i/ ~7 X+ Pvar++; 4 G) i. }4 |. e2 F0 m
static_var++; " Z+ A$ ?  `5 A3 R
} & t# @- Y# x- U" F
void main() 6 n0 m* `9 |; }1 g
{int i;
+ A, f4 o' i- X$ a& A$ ]0 h( }for(i=0;i<3;i++)
. s" a9 `, `; t! p$ p9 ?& dvarfunc(); 3 x" w* f3 w5 i; b% h4 m9 m
} 5 Y- b) F  a& O' z/ t( _) \
==============================================================
. E/ k8 W$ v6 t) k0 ?. i【程序42! N. K/ [- p  i8 s- q
题目:学习使用auto定义变量的用法 . O$ j* Y2 }1 U+ T
1.程序分析: 7 N, y# I$ b: e1 e  G7 H$ e5 d
2.程序源代码:
# C, Z: Y0 [! z#include "stdio.h" ; }  d$ J/ k) q& f. \5 u
main() 7 n  N4 g( u; F8 F& }4 |5 g
{int i,num; 8 ~8 S, e& W* p2 d; ^, ]- \
num=2;
1 b+ q0 F# i$ w2 A& _7 J, V/ Afor (i=0;i<3;i++) % p& w: v3 B, w
{ printf("\40: The num equal %d \n",num);
3 M( V/ Z- `' y$ Y0 Q% ~num++;
) X  Q& Y. h, E6 p* g{
( s7 ?4 ~1 S9 E5 |, C, O9 t# v: eauto int num=1; 8 z" G8 k8 z5 C* p. a
printf("\40: The internal block num equal %d \n",num);
8 X( l: b1 N6 u& m% ?& Vnum++;
6 n: B4 Y# C2 U% N+ x}
$ h+ k2 p* q( R0 A) q/ O% d} 4 G# D! G& q  `8 D; P* o
} 2 J, l9 _9 Z9 R0 a2 g2 v( k7 K
==============================================================
. Z8 c3 L* t2 i# m  y; h3 D  e; X【程序43! K; n6 L2 Q, d
题目:学习使用static的另一用法。
8 j' W/ x3 Z) ~% ~( |4 G1.程序分析: 6 l  N) ?. r6 T, q1 R; Y6 Z
2.程序源代码:
9 A3 W: o3 W3 v, z4 k+ D( u" x  g#include "stdio.h"
) w. p6 d: J1 M& [; x# H! F3 dmain()
5 H# m* Y" y" M- m( h1 R5 o' T+ d% r% m{
! R& b% n1 ]7 t0 @* K8 s: pint i,num; * E+ \- r9 [" U: c0 H5 u- F6 A! j
num=2;
" V7 l3 K  U/ E, C$ ?for(i=0;i<3;i++)
' A4 d; Z( n  H{ ' }: k: o9 W& K- l5 c1 \- H
printf("\40: The num equal %d \n",num);
, _2 I9 k! ~' b, k- ?num++; 8 u4 @% G/ h, U: o' G" f
{
6 c& D/ x9 \1 d) {5 y4 xstatic int num=1;
+ b& j3 m" s' q" _: C6 C0 F: `5 J: q. T- Sprintf("\40:The internal block num equal %d\n",num);
% g0 V0 P$ m- onum++; 8 i' u' Y1 `1 J' e
}
9 e/ Y5 o# T+ v* H2 ~5 ]. Z6 D}
3 q; k, ?9 N; g' d) O$ x}
: }5 i9 i! M* [3 Q+ l==============================================================
0 }% I! }. X6 K【程序44" U0 ~+ u, i7 A6 a% Y
题目:学习使用external的用法。 + j9 D8 K7 A5 e; e6 u9 I
1.程序分析: 6 Y, f; R4 m& V+ R5 F# g
2.程序源代码: 1 g: E4 ]- X! m( ~* h7 v/ U
#include "stdio.h" 0 a/ C( }' K+ w, L7 h6 @9 [/ ^
int a,b,c;
; X3 J- t  @' ?4 p0 h8 V1 Z8 Wvoid add()
/ L$ h' i4 I8 p0 ?' N{ int a; : O, o$ ?! O) o# E8 u
a=3; : e3 j3 B% D& A) T9 p0 T8 [% \
c=a+b; 0 L, j7 b9 _3 m0 @4 t) P, H2 L
}
0 o2 I1 H* d: h+ M2 j. `+ k5 Qvoid main()
; q: x# D6 b: O9 j{ a=b=4;
/ S3 s/ j6 s  ^# e; Dadd();
" Q* g' y$ v* M5 c! u. l( Qprintf("The value of c is equal to %d\n",c); 2 c. k1 V1 ^& ~0 L2 P4 Q
}
& S6 \0 e0 _- Y2 {7 U& ^============================================================== $ p4 a8 M) x" u( e* `$ ?
【程序45) u4 {( f& [  p! Y
题目:学习使用register定义变量的方法。 1 `( W  X/ i' t. G
1.程序分析: 0 y4 j4 w4 B$ B( R" f- M: J
2.程序源代码:
% h9 q+ L( i' v$ T# cvoid main() + [, s$ s( z( d7 [# q
{ ( V; ]; o) Y8 ~3 j3 y8 Z
register int i;
1 B. e6 J  z* W' M9 _int tmp=0; 7 l4 `; [/ Z" ?9 @& q$ a
for(i=1;i<=100;i++)
  c$ X3 g6 z; Atmp+=i; + f7 s1 {$ D2 ~; B$ [1 Q% W' K
printf("The sum is %d\n",tmp);
3 T# n9 V# x3 k" V2 }+ k5 N0 r$ t}
& Q8 _% K" g/ _( y  y9 i8 E3 [============================================================== , s: L' H( r, ^: }
【程序463 c8 L0 ^2 W4 c" K* Q  a
题目:宏#define命令练习(1) ' V& J0 Q: f& G/ X& }1 G7 ~
1.程序分析:
$ V9 I; q4 L. L  e" ]) e2.程序源代码: - Q1 f4 e; t) L, o3 z4 P7 a
#include "stdio.h" & r" S+ y! Q8 {( J$ o
#define TRUE 1
0 M+ z0 Z7 I: Q1 [* U& l#define FALSE 0
, R- {; [8 w3 h- P#define SQ(x) (x)*(x)
5 b5 |) c9 H; T. P# W4 Q2 H' Zvoid main() : y. q. h# W! U. Z+ O  e5 K- l0 }
{
% S, O* g  s7 a! r: r0 |int num;
* v! J1 |" j3 p2 n4 p& uint again=1;
4 J- W/ L* Y, t  G4 C9 Wprintf("\40: Program will stop if input value less than 50.\n");
& H; y! t- ^2 J" |5 b; h/ Dwhile(again) 8 A9 s3 L5 V5 Z- B2 c8 x
{ 5 t! A' ?- H* C2 E& F
printf("\40lease input number==>");
% q% ?7 ]! f- `( \scanf("%d",&num);
5 d" X2 M+ ~5 n/ d6 p1 v5 V+ oprintf("\40:The square for this number is %d \n",SQ(num)); 9 |) [4 [- p# w
if(num>=50) * ^. o3 i( |! h+ y1 w3 Y
again=TRUE; 8 s0 a" D  q' g6 z
else 5 a! U5 o$ a4 D$ F
again=FALSE;
" V9 ~  w1 h1 H} 6 s" q% Q# [! Y) ]1 x1 T0 R3 k
} . R9 Q" L* y- a: A3 M6 l
==============================================================
3 ?* p$ ^& R/ Z+ F+ W【程序472 B# h* i+ J, z3 ?/ Q9 ?
题目:宏#define命令练习(2)
  w6 _0 V, Y1 s& M1.程序分析: # {8 v* I: w/ C3 w
2.程序源代码:
9 Z- ]7 O% B) E% L+ `$ u#include "stdio.h" # j  S% t' U/ F! ~8 ?  i3 t
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
: u$ s/ Y2 |9 M2 Q3 K4 o" nint t;\ 1 \: J# q5 X9 R" W# g) u7 G/ s4 J
t=a;\ & i! |4 ^( P! U" t" F( G. h9 R2 ^
a=b;\ / C6 M4 ^3 Q# L4 U! E
b=t;\ $ X' @; s3 ^+ m1 k
}
6 z) L" m' w/ ]: r9 ovoid main(void)
8 f% w9 m' M, _& E{ 5 }! X$ x9 p( i6 ?; ~* l5 s
int x=10;
& L# }5 U. I3 a2 C" k/ \8 Q- pint y=20; & a' m$ C! g& _4 U' ^1 G& }
printf("x=%d; y=%d\n",x,y); , f3 s& Q6 a8 V  C" G  d
exchange(x,y);
$ U: Q9 O8 s. }, ?3 Y6 fprintf("x=%d; y=%d\n",x,y); 8 B9 [% _5 {9 ^" r8 `2 s2 W2 m  \  j- n
} % s2 ^  P7 `8 f! T
==============================================================
4 N( P, O& t2 A8 _( v. d" M( r6 U【程序48
& Z- Q5 F  _) d- s' z& s6 `题目:宏#define命令练习(3) 2 c$ F1 G3 Z8 F7 I
1.程序分析:
! f$ f* |- c$ y' k- K: J. P2.程序源代码:
) e# N# f  i: Z! }9 `/ a+ w#define LAG >
4 k* \6 a) n5 R, Z0 w5 j+ {& R#define SMA <
' x/ P4 L8 ?4 g1 g' k0 W. R/ n#define EQ ==
4 V5 U6 Q, v( {#include "stdio.h" 7 R9 L3 `' u3 Q3 f0 |5 c8 o4 H- [) |
void main()   k/ v, Z" t3 T8 k4 C$ v
{ int i=10;
7 o0 A  l! P5 I# Eint j=20; # r) O4 O$ T! q5 X
if(i LAG j) - O4 j& v/ v! Q! ^2 g0 B
printf("\40: %d larger than %d \n",i,j); 4 L+ I9 o6 d: U/ r0 y. w
else if(i EQ j) . O( q$ H. d+ D9 F$ j
printf("\40: %d equal to %d \n",i,j); " ?1 L) q9 Y& r7 ^3 z% A9 T
else if(i SMA j) ) x7 u3 ?% `! U6 @# c
printf("\40:%d smaller than %d \n",i,j); / R, I& z( V! f% `! n6 u& L4 a& A
else 8 N" i( X0 d" m7 e
printf("\40: No such value.\n"); / _  @. |# D1 p
}
+ ~" t- G: G1 g$ }==============================================================
  g8 F6 t  t# z. K) k' P7 {
) n, \$ q* J5 A4 i
回复

使用道具 举报

发表于 2017-10-8 21:32:49 | 显示全部楼层
曾经自学C,最后没有最后了
发表于 2017-10-10 08:41:14 | 显示全部楼层
自学。。。。收藏下来
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 07:14 , Processed in 0.065988 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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