找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2641|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38
' p; m" ]" S/ |  g题目:求一个3*3矩阵对角线元素之和
' }& W3 G' w! D' }9 J8 t) m3 ]7 Q4 X1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。& e4 }1 T4 v  U/ D) U2 [+ h+ _1 q
2.程序源代码:# N, c* {& g$ O4 q7 j: ~
main()) O8 Y) f) q) l
{
  e8 q- d6 l+ W6 Qfloat a[3][3],sum=0;# D/ D' C% X1 z9 e
int i,j;
( B* D: c. a6 A8 N$ c1 H9 mprintf("please input rectangle element:\n");
7 \) O: ~+ a, I- t, Bfor(i=0;i<3;i++)
7 n0 Y- Y" _4 U5 w7 q for(j=0;j<3;j++)9 Q* F3 d. c( |( o" l$ O1 g. K9 x
 scanf("%f",&a[j]);6 c/ e" ]+ D9 l2 u" e# u+ V7 E
for(i=0;i<3;i++)
& u1 R% b& t  z sum=sum+a;
6 A9 l( I8 n  `5 |2 Zprintf("duijiaoxian he is %6.2f",sum);9 a; j$ ?+ {- H4 W# y  \
}
' l, l' ?% Y' E( z==============================================================5 U5 @0 P6 [0 r/ d7 k! n* d
【程序39
3 O* o9 W- Z6 k% L- `, K5 R+ d' q题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。5 X- `. O6 V6 T
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后: W$ ^' u' K5 g4 S  r
     此元素之后的数,依次后移一个位置。 ) N# ^. U/ W/ X# x2 c6 W) {$ v
2.程序源代码:
; D% U3 Z' a. @2 y1 i; L# `" @main(); k6 R6 B! y! k4 C5 U, p0 u6 j
{
9 ~; o" b' p, Oint a[11]={1,4,6,9,13,16,19,28,40,100};. u+ p: y: [/ f4 h. V# g1 m0 k  G
int temp1,temp2,number,end,i,j;- O" Q0 h5 q" G: M
printf("original array is:\n");3 ~* l& d2 p0 K5 Q
for(i=0;i<10;i++)0 j; V7 \( `# w( H
 printf("%5d",a);
& b, m  A9 J) e: @printf("\n");  l) t: F  u3 S& L2 J3 }) D
printf("insert a new number:");
( P$ [9 B4 G7 d7 P* l# m; S/ K0 ^scanf("%d",&number);
" P  g  F, m. S1 W# q( m9 lend=a[9];* h# d' F* i2 X( _9 [4 A
if(number>end)' `0 x0 y" S+ Z; `$ `
 a[10]=number;
8 c2 D0 @0 m# g2 o; k3 Yelse
' q, ~2 I" F4 w7 T {for(i=0;i<10;i++)
) ^! r% h* m. C  { if(a>number)
- |" [# t2 {1 J   {temp1=a;
/ C9 f9 K% O/ H' t4 r3 p- R6 U1 N    a=number;; u: r' p6 p6 y& U
   for(j=i+1;j<11;j++)$ f. }  k9 h' Q) O
   {temp2=a[j];% @1 S3 `, y" x4 r7 o
    a[j]=temp1;* N, s1 O6 }% w4 p+ r! b* y
    temp1=temp2;  ?3 g; g# o' r$ O4 f
   }
! l. o# Q5 P9 }  m. N% D   break;
- J2 l4 [; Q6 ?$ }9 r   }
# E, `$ g5 O2 t  D1 Z6 `; O: \  }
1 f: B+ r& H. s8 ?}
4 h7 M  L0 D8 i( b  `! U; `- {for(i=0;i<11;i++): L" }  W# f# S/ q
 printf("%6d",a);
. [; k! A% i: m9 H" z$ `. |7 }}
9 W5 q7 f; ]# x0 Q8 j==============================================================5 t& O+ z9 ?; i, J# S
【程序40
: F1 a$ {4 }' ?+ a. |题目:将一个数组逆序输出。1 c6 {- q' Y0 r$ |
1.程序分析:用第一个与最后一个交换。
( j2 {& @$ v4 p' \8 Y2.程序源代码:' M. Z. ^" A: B" K7 B( A4 o
#define N 52 j% \; t: p  L# @& Y
main()4 g' Z7 h1 Z! l& C3 J
{ int a[N]={9,6,5,4,1},i,temp;; {: D+ R' w( r7 V/ d5 u/ ?! |1 s, ^  F* V
 printf("\n original array:\n");+ S- R$ L6 `4 J% c/ H
 for(i=0;i printf("%4d",a);
2 [( U. ]( N  L: J for(i=0;i {temp=a;3 N  L9 \/ C5 ^+ h4 B
  a=a[N-i-1];$ ~, r+ k8 M) \: g4 {6 i' S/ s
  a[N-i-1]=temp;. C2 }. Z' L+ s, |
 }
' V! h2 E, F$ e0 k3 Y2 {7 ~printf("\n sorted array:\n");
/ y+ @1 L4 T& m3 afor(i=0;i printf("%4d",a);$ u: P" G8 a& `) Z
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 " x) g3 W1 t: |# D- {7 x+ p: K
题目:学习static定义静态变量的用法
4 ?" j% f6 ^* c4 c1.程序分析:
' p! P3 c* ]/ \( L5 m4 N2.程序源代码: ' {9 I, g$ e( d, h7 A
#include "stdio.h"
6 q+ W! Q9 z7 C0 B! _- rvarfunc() , }! D2 {2 q* N3 S0 s0 G
{ , m# O# W. e3 y4 w) x& C8 ?
int var=0;
; _1 u. Z" x6 c8 C0 bstatic int static_var=0;
" r+ [/ C- n2 }' K' A3 E7 hprintf("\40:var equal %d \n",var); 6 ]) i# l. \% E! m2 J
printf("\40:static var equal %d \n",static_var); $ x% X3 r" B3 u- e( \
printf("\n");
. I- P2 O; y/ w9 w' u& Hvar++;
; G: }4 s* a/ [% z7 \" Z( W! Cstatic_var++;
( W7 u* U  g/ \% }, M% z} ' D/ {& ~7 T7 l* T2 N! e* n% {1 ~  n
void main()
- v+ \/ m2 _+ |3 i1 J{int i;
: ?' {8 E" ~* ]2 w0 H" n8 e1 w' lfor(i=0;i<3;i++)
  [- |# {& q6 O9 P# p. x2 hvarfunc();
, Z/ [7 F+ _$ \3 Z$ z+ W( D}
  \1 O. O1 i( m% V5 R6 {+ v' g==============================================================
7 M9 r0 ?: `8 ?【程序42
! T+ q" v% ?9 p+ I" a  o题目:学习使用auto定义变量的用法
- q8 p" \: C* l' j3 N1.程序分析: / O% L/ G7 ?8 u7 M; \3 ^7 H
2.程序源代码:
+ @/ A7 j$ _  N" L! ~#include "stdio.h" ( n7 Z0 L, I7 A! s) `( x( r
main() 3 ~3 z* r7 p. I( V0 H
{int i,num;
5 B( Y8 @/ d, t. h" a  mnum=2; 4 i; ]. l+ I- m- W/ u! r" M3 V
for (i=0;i<3;i++) . [% p( S* E+ q9 g
{ printf("\40: The num equal %d \n",num); - g. S  q0 P9 i8 ^( k1 p- y
num++;
" X* N* A  ~$ b% r2 g{ ( H3 b- m* {" c4 Y& m
auto int num=1;
2 G6 N* Y: k6 v- T$ @printf("\40: The internal block num equal %d \n",num);
  J% L1 z$ U3 P6 R& {& v0 T' dnum++; + Q6 W9 g+ x* G% D7 f9 p* o
} / X. _& b6 ]3 R) O* H
}   Q7 L8 o& e" N& q
} 7 P" U, \: @" s1 Y" `
============================================================== 2 V8 E2 c1 `) ]9 c" r
【程序43
% y7 Y0 b" Q6 j& z5 H/ r8 g+ c题目:学习使用static的另一用法。
- f: c4 L( r( @: X1.程序分析: , q' \- m0 J  A+ n5 b
2.程序源代码:
$ W5 A+ k' G( s" I. J1 Z9 `#include "stdio.h" / I0 K1 i! i3 H8 w7 ~( V6 S! S- Z
main() 7 s5 m- `- ?, @, M2 D; Z2 S5 F
{
( B! G5 D2 f: E- t3 b+ tint i,num;
- `; C* l/ R; c6 k( Y2 Rnum=2;
4 ]1 t& D. _# B( U  H9 ifor(i=0;i<3;i++)
* |$ P" ]8 W/ N2 n{
8 d! G' o5 |1 F. s( j9 d1 xprintf("\40: The num equal %d \n",num);
- u; T* [0 s" m# `7 bnum++; 1 g. M1 b( L0 Z% X/ N0 H* }! l
{ 4 x! n1 T6 {: k, f8 I0 ~) J
static int num=1; 9 W, ^5 b. t! `! v- J; A
printf("\40:The internal block num equal %d\n",num); 0 o) D0 D# U1 T- y/ ?) o$ e, F
num++;
+ c6 e  `" I0 s+ t' E3 ]} , j" v+ C8 T" \/ s
}
* a( i1 c3 j8 F& d/ Y}
, c$ b# m7 R! `9 o( \4 Z6 j==============================================================
8 X* U. T: s: N. ~1 G) [* l6 W【程序44
+ C$ }6 G. F2 H# ?题目:学习使用external的用法。 + d; j" `$ a  e# X' J. i2 B5 a" O
1.程序分析:
& B, \- z+ w$ B2.程序源代码: : ~; g, u$ j" f; S
#include "stdio.h"
0 K: E8 Z3 t! i, N7 r. r/ fint a,b,c;
( n- {* I- R( X  D/ Z: u- hvoid add() : h- q8 j9 R8 B3 P: L0 m
{ int a;
3 S* W  q8 T" b  f8 U% {( b% o: ra=3;
3 i5 d6 N! g# g# V0 Xc=a+b; / Q% v- Y+ R! U" u# _: A0 d
} " ?" r9 f& A/ ]! E, R1 c' R
void main()
8 J! G% R1 w/ |6 \, K6 P{ a=b=4;
. H! s: e& u% l& k1 e8 L* B' madd();
" A) X* B$ {1 |  R) F( ^1 n- D- o- H; Mprintf("The value of c is equal to %d\n",c); 4 o2 X) w7 J& }! _7 X
}
4 j2 t4 S' Y- V- l) z/ ?$ k3 v==============================================================
- D/ ~; t4 t4 }# |  J【程序453 }% m! F  C( k+ ]
题目:学习使用register定义变量的方法。 $ B* e2 \; _7 S  o$ F! Z, k
1.程序分析: 1 g% F& h' V+ ?8 x  _, `
2.程序源代码: 1 u) b" N; `( G/ G  K1 S/ e
void main() 4 X9 L* T7 J$ j: X2 H/ J6 e7 A
{
5 F+ b  R( R  G  [9 G3 ?; Cregister int i; ) S3 `7 @. Y6 X3 }$ \/ W4 G
int tmp=0; ) ~8 P/ Q9 u" o$ W" d1 n3 O
for(i=1;i<=100;i++) , z+ {, F) E. I7 O  p8 [
tmp+=i;
, E+ U' k! u, o2 t) F- n; u, }printf("The sum is %d\n",tmp); ' l. }  m3 C4 X6 {
} 7 t! E# q) j2 L0 q4 X: v$ c
==============================================================
/ v/ s9 K/ L: _  L2 U. U; \5 O7 B【程序46
5 ~" ^. T5 O' O2 s$ _' M; r0 T题目:宏#define命令练习(1) 9 R! ~- z# g& {3 [  [! m
1.程序分析: 3 F# ?- z8 Q7 _/ v4 T! r
2.程序源代码: , A% U4 I+ s; Q# C
#include "stdio.h" / K4 J$ k8 K& m& Y! k
#define TRUE 1
; E, V' L' a" a  S9 N( T1 l#define FALSE 0
/ @3 J" W' [. J) y7 h: f5 Z#define SQ(x) (x)*(x) 8 o- K4 P! s  X' S! z( j
void main()
5 H; C* d: h' r0 _8 H! _/ x{
  V# v3 T1 Y2 J6 [int num; / Z4 X2 Z1 l5 U8 g3 t  F
int again=1;
+ \3 r) T" l  i/ m: Uprintf("\40: Program will stop if input value less than 50.\n");
1 c( z% B$ r8 [. W2 pwhile(again) % K% @8 \2 p: p
{
2 S0 @( K; O: Q& j6 D) x: Jprintf("\40lease input number==>"); 3 G* T+ z2 k1 B: B: u2 V7 y
scanf("%d",&num); 3 |' E5 h9 G, w- R
printf("\40:The square for this number is %d \n",SQ(num)); 1 x  X+ O3 G4 R
if(num>=50)   S/ ]+ u, X( \8 E& L- t1 M1 n1 r
again=TRUE;
2 ]4 |- d% V7 K( q4 {1 y1 Relse ! L; X8 |2 G% i6 g0 f4 A
again=FALSE;
7 M$ L( e8 @+ C6 N  r4 W. h}
. k1 q2 o% l9 k! B) C6 R0 r}
2 o& H# a( s& Y/ S# `8 B==============================================================
' v) E1 ?# U$ v* ]【程序47
( t" L, }- F* e8 W+ L$ R& l, s6 }% x题目:宏#define命令练习(2) # c+ i% S. [# ]* K/ h
1.程序分析:
* d5 _2 M, M: e/ ~6 D7 O% Z2.程序源代码:
9 k8 l. P% `+ o9 u! U3 {#include "stdio.h" 5 f$ F. g6 F% @
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
' n" u% e' ]. e! }int t;\ 5 x$ X- `6 x/ ^: e9 E  a
t=a;\
1 q7 k" H! P* o# a$ Za=b;\ ) T3 M% z+ C/ P+ D
b=t;\ - s3 Z: R- f3 f2 B" |* W
}
. w! h8 Z7 {& bvoid main(void) % e! P* N8 e6 P* _
{ ' n" v8 H; l+ H
int x=10;
5 l  `# ], h$ e) y* U) @7 nint y=20;
& ]- }2 f  Q! r# `- @, r: |printf("x=%d; y=%d\n",x,y); 8 ^; d2 |4 y* E+ c# l
exchange(x,y);
6 e/ C8 ^; e: P1 N4 oprintf("x=%d; y=%d\n",x,y); & Q. c: G* y' P( D7 l
} . w3 A; y3 W) w" W* C; M8 c
============================================================== 7 ], j* [8 w$ l4 ]/ C, ?
【程序48! |1 o+ M5 P& ^; U; t" `
题目:宏#define命令练习(3)
: e: z# e% Q# m% f$ j! K( w1.程序分析:
3 F+ _0 w% G% }  I) c3 Y, k2.程序源代码: 0 J$ |% Q" P9 p+ d) o2 _
#define LAG >
  v8 O2 t, G& j( l# O9 m' s' Z' c#define SMA <
5 `9 B. S. x" u#define EQ == ' f  S; Y" P: {: s  |
#include "stdio.h" 3 ^$ o: a. Q3 {$ u' Y6 |
void main()
6 o4 e' ~2 K: ]5 W{ int i=10;
% D3 D; n3 }0 E$ U: T: L. r; Uint j=20; # g6 \4 g" Z' a0 d) X
if(i LAG j)
2 X8 |# e* ?5 y8 Q8 uprintf("\40: %d larger than %d \n",i,j); 5 k: u/ B" I# h- I9 t  n$ V
else if(i EQ j)
: R2 z  q% W& e: {1 wprintf("\40: %d equal to %d \n",i,j);
  I! ]; l- s( E: h: S! f# }else if(i SMA j)
/ E+ {/ Z3 O7 m+ eprintf("\40:%d smaller than %d \n",i,j);
, Z0 |) U$ @# Q- [6 i" Xelse
. J+ N9 O! M" K# [- eprintf("\40: No such value.\n");
4 t# C+ J; a: A' u5 K} & ?. K* m5 }$ Q
============================================================== 9 p. k2 r% b6 A0 V4 L) I0 g
  l: K- X! p0 c" z0 i9 c* i- O  e
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-5 14:55 , Processed in 0.066388 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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