机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2405|回复: 2
打印 上一主题 下一主题

C语言经典算法38-48

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-8 15:23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序38
; p5 S) W- o1 R4 B题目:求一个3*3矩阵对角线元素之和
" ?/ h" S4 ^' I# b1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。8 j7 C1 r. R+ s0 n
2.程序源代码:
0 f7 Q! S6 L* L+ m" ~main()0 N, z  c6 m- ]+ T, g# @
{
4 B. r; S/ X0 ?9 M' W; V  N( bfloat a[3][3],sum=0;! A+ S- Y3 p7 F7 y4 |
int i,j;1 ?  w5 m3 x  u- [
printf("please input rectangle element:\n");9 o  s9 u( T5 Z' F1 \( R
for(i=0;i<3;i++)
, d' h# Z- s2 D# E3 a for(j=0;j<3;j++)1 Q( q/ \/ I- Y, I7 \& J
 scanf("%f",&a[j]);
4 A5 l4 a+ S% a+ sfor(i=0;i<3;i++): [, i; l; y2 k0 L; m
 sum=sum+a;
- l" [3 D3 H5 [7 B: N3 Tprintf("duijiaoxian he is %6.2f",sum);
) o- `0 \* ^) i& e7 @}
( Q2 @; |, Z$ T/ z==============================================================& X7 x3 \. p; `7 n
【程序39# |' J$ ]: S6 X7 `( `4 [
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。- A3 O, }1 u/ E, e) t' U
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
- k/ r) v' W, }* f     此元素之后的数,依次后移一个位置。
( ?$ O5 @! Y! D% d* \2.程序源代码:$ a+ b7 Y6 C' i) c+ E
main()+ y% @; Y8 C4 {4 s
{
5 B# x! m" ^. V+ aint a[11]={1,4,6,9,13,16,19,28,40,100};
, Y. o' ~  y1 _9 iint temp1,temp2,number,end,i,j;
2 k$ S- E+ x- v# w9 Sprintf("original array is:\n");
/ u; Q( v  \9 m5 C* C7 m* Wfor(i=0;i<10;i++)
1 D7 s( \! s' o0 ]) G; M! |" E( L printf("%5d",a);
# e0 a6 p1 H# A" b  I/ b3 oprintf("\n");
" V5 i1 H! Z3 Dprintf("insert a new number:");
# R) g6 s2 w+ I% Y# f' p- Dscanf("%d",&number);& }6 K. S. N8 I' M% H. O
end=a[9];$ Q  p3 J4 j: D3 c4 y8 _0 u5 q
if(number>end)& F: t, e. \3 Y+ _) l
 a[10]=number;" o' i$ {7 x" V2 @! Z( a! n' v6 u: o5 [
else
  q" ?' l" ]/ i& V2 O {for(i=0;i<10;i++)
3 k! L( l2 S% {) L' e( o  z  { if(a>number)1 T" S$ ]8 \& U( a. {! J
   {temp1=a;" M$ E/ h, j5 E  E3 {
    a=number;0 x. J2 n, {  v
   for(j=i+1;j<11;j++)
* F: R( z( a0 V   {temp2=a[j];
; e$ T1 t. P; w5 H+ t( k! B* Y+ f    a[j]=temp1;
7 |0 g# |2 N  ^    temp1=temp2;
+ Z; B( G+ L& M+ c9 O# l. b   }& [( B/ ~  l4 y
   break;+ J3 Q; {# d6 ^( {1 J$ A
   }
% ]" B% M, Z- f: u/ g  }4 T0 a" N, }( m$ K; e
}
9 j- o) L; C% |  }+ s* h2 sfor(i=0;i<11;i++)% w  @+ N; L2 [+ b1 q% m& |
 printf("%6d",a);$ X$ e$ @: T8 y# F; |$ F$ y
}
, x  b, m6 G  E* z6 h==============================================================
% d& B: }5 @0 }: W  ]【程序40
( T% t( T& O; G2 {0 p题目:将一个数组逆序输出。/ H8 F* n4 @% J, Q8 Y
1.程序分析:用第一个与最后一个交换。
2 R% U- W2 H) m0 K: q; S. p; B2.程序源代码:
0 e+ w/ ?( A/ {+ @/ }#define N 5, t+ k( ~  V) Y$ l7 [6 y. h, n  c
main()
( J0 O9 \. B6 N$ a7 m- b9 }{ int a[N]={9,6,5,4,1},i,temp;
+ n$ H; ^$ I' |) Y printf("\n original array:\n");
! e0 O8 c) z, a for(i=0;i printf("%4d",a);1 m% g: r+ _& Q  d/ m( m9 d
 for(i=0;i {temp=a;' N  Y3 O& x6 f8 T; B/ R5 f
  a=a[N-i-1];. U' n+ I0 o5 U, C3 h% x
  a[N-i-1]=temp;4 r: E9 B5 t: e" w5 c
 }
! n3 _4 g2 T: E+ r4 N8 {' N  dprintf("\n sorted array:\n");4 V4 n4 L; ^, R$ X! k9 V4 O
for(i=0;i printf("%4d",a);" K1 E+ V. T, p4 D$ S8 E2 J+ U
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 2 J0 m# ^/ U" V! z1 X: O# f5 N
题目:学习static定义静态变量的用法
& `9 Y9 F7 C$ B: o- H$ z& Q1.程序分析: 2 Z8 w6 j8 c% k! \# U" I* t* X4 m9 U
2.程序源代码:
+ O4 t8 r% q0 A! I! K0 M- S3 M  t) R#include "stdio.h"
  X/ l. R) v' C+ p( X9 }) T' Rvarfunc() & e8 m! B$ ~# {/ e2 a3 ?& K& w
{
+ q6 [( G; ]: j' O( Yint var=0;
" n( U1 i2 P- y0 M4 pstatic int static_var=0;
) ]  y3 \( W% }1 {) {8 W& uprintf("\40:var equal %d \n",var); ! `7 q; A; M2 k8 s; U0 b- {
printf("\40:static var equal %d \n",static_var); + Z% [* N( {# r, x) K( Y
printf("\n"); ) ^: x# U1 Z3 G/ D, a
var++;
9 q: m7 P6 |2 f- Q% `4 vstatic_var++;
% c4 U9 \& X! s  m} : B, E$ z5 g; ~) ~5 _2 Z  \# I
void main() $ Q8 R& p7 ^7 @! q
{int i; " Y" s& b3 a' Y  ~
for(i=0;i<3;i++) 0 R2 O" B9 _' z: |% y, w, C
varfunc();
* X  Y! J1 e& V}
8 {7 t' E9 g6 L4 c! x============================================================== ) y+ ^; l. ^* G+ a; z& P6 G6 u
【程序421 \6 W3 h: x. i4 ?$ g# _9 I
题目:学习使用auto定义变量的用法 2 j  ^. d3 Y1 l; Z
1.程序分析:
  n) ^7 v( X! R; ^% j2.程序源代码:
+ g, G7 F! H$ Z( A6 K7 I# Y9 ]1 o' _#include "stdio.h"
* d; {! Q* I2 Y6 smain() ' V) ~4 _1 h- y% N6 f- J
{int i,num;
. A0 Z- a& `% U! _9 u" w1 `8 ynum=2;
- v0 [5 h- W% ^' K. J- K; Sfor (i=0;i<3;i++) 8 J1 i3 Y& N/ T& E2 |6 y! a( r
{ printf("\40: The num equal %d \n",num);
0 E/ T- w: e) \5 _  o: F. Enum++;
7 x1 T! f/ H2 y{ + o, n2 h% ]# x
auto int num=1; ' ~1 }5 c/ o0 }
printf("\40: The internal block num equal %d \n",num); 3 {% ~% ]  n  j1 Q
num++; * h, p0 h5 X  c
} 1 P$ k0 e  w6 f  u
} 4 r9 N* F1 u' C! A6 {
} 2 l2 r# A8 N8 ?# N  a% O$ b
==============================================================
) [# r0 k' h0 ?【程序43& ?; d- |2 l! r; A/ K6 `8 L. ^
题目:学习使用static的另一用法。 / O1 x) c6 R0 O' v# ^/ O  p
1.程序分析: + f6 o  @4 ^( q8 }) L4 r
2.程序源代码: . d+ k" Y, D1 x6 [$ a
#include "stdio.h"
* l& O  L: |1 Y: l; kmain() * G! Q0 {: b7 s& r3 C' g
{
+ P  `4 i+ A7 I; W* f6 ^int i,num; 5 l' U% g! K! j- ~, Z
num=2; # M. g8 k) o8 Y
for(i=0;i<3;i++) & |9 \9 w0 Z9 w: l: m: y1 N" @
{
" h% t  n  L0 u8 Sprintf("\40: The num equal %d \n",num); / k+ S+ S% w$ i+ A
num++;
- `- r' z4 V! B0 X! B  x$ e) d{   \* n* `% V) X  ~, ~5 g
static int num=1;
. ]$ V: r' W0 a: t1 G  gprintf("\40:The internal block num equal %d\n",num);
- U# x, R% D* P" _8 j- y$ tnum++;
7 E. Q4 c* V$ U' I9 w8 ^}
: Q' P" M" Q) c: @% U) U5 a} ' ]  V8 B8 M0 V0 C7 Q9 K
}
# i3 @) u5 O* U% o9 w6 ?! y============================================================== 3 u: h$ M  M2 M  S
【程序44
5 y+ D1 V2 t+ N  |题目:学习使用external的用法。 0 z' T" V  g  C
1.程序分析:
. B7 Z) {: c" E0 r+ ]2.程序源代码:
! e7 [/ n0 j' ^# W5 o& c" P# D#include "stdio.h" ' H5 `5 ~2 B4 I* B" b: ^& ?
int a,b,c; 0 o$ Q& @8 B% g- G
void add() * t! U  q6 \9 \- b; V
{ int a;
% `6 d) F' Z& t5 m( T) wa=3; * q$ n, O! T4 O2 S$ L0 F
c=a+b; / u$ z6 B- I$ R
} + J0 g; ]# U9 _/ F
void main() ; U; X8 c( w; ~6 _4 P
{ a=b=4;
6 p3 d- P4 X8 k! b7 uadd(); ( c; d5 N9 ?7 j
printf("The value of c is equal to %d\n",c); 8 B, q6 k' l+ i4 f- [! S2 P0 q5 h
}
- B- K  u. M8 ]" H' `8 V+ y) ]==============================================================
/ ^3 O* Z: M/ ]- S( o$ Y( b【程序45
/ I' j. b$ l( z5 A# q6 P2 n题目:学习使用register定义变量的方法。 ; _9 U3 `: D! O( j+ c! k8 v
1.程序分析:
; b* O8 j/ U, o2 {" o2.程序源代码:
6 s3 m( r- f. p2 k9 Ivoid main()
' |# D* Z& O: g8 q4 ]* i' W8 J{ ! K6 K- p1 v" v1 P  ^' q& _# X: n
register int i; $ a4 {* v6 F5 r0 t) j
int tmp=0; , r, M" m: p+ I$ y7 H* g$ S& l% J) Q: F
for(i=1;i<=100;i++)
# k# L  P7 Y8 `tmp+=i;
+ f' _3 A. j$ }0 }0 b) `printf("The sum is %d\n",tmp); * U7 e3 E0 ]3 r; t; l* h
} 7 C  ?8 M: I1 i$ t( b5 D1 u+ Q
==============================================================
* L! D  A2 F- o1 P7 a$ c【程序46
7 t5 A% D9 W$ g% o! s题目:宏#define命令练习(1) 9 b+ h+ v; s4 p& j, o8 v" e: J  a% X
1.程序分析:
4 l. }! n7 C$ x4 a2.程序源代码: , r1 a" b4 r, r
#include "stdio.h" ; W; c% _4 b( p2 {; W' A! y
#define TRUE 1 8 A' T: z8 N; A3 T' s) m/ n
#define FALSE 0 + w: ^( K* M% m: C
#define SQ(x) (x)*(x)
! S. r4 ]* C: {% v$ rvoid main()
% U# ~1 W' n6 |% I' S9 ^3 A4 C{
% I1 h5 ^( \% u1 w3 F$ i* wint num;
% w6 a5 }( y6 y) m1 @. N5 m/ K/ i8 R* Uint again=1;
5 ~2 W9 I) }0 |5 L1 D4 I( v3 Eprintf("\40: Program will stop if input value less than 50.\n"); 4 B4 Y* c  B3 }- r& P3 j0 d
while(again)
3 p7 v5 L( o$ L7 }+ @0 h. `{
& C' w0 v# @/ c5 F2 Sprintf("\40lease input number==>");
, X1 F( Q8 @9 D/ W7 Q: W' Uscanf("%d",&num); + f# A! N* C' E* e
printf("\40:The square for this number is %d \n",SQ(num)); ) \6 s( O4 j2 Y+ p9 _6 s
if(num>=50) + c- n8 h) A% p4 Y
again=TRUE; & }) F" ^' T) P/ ]5 ~6 u1 x% @
else
* h) f: K1 ], r( z5 \* K, {again=FALSE; % v% c  M4 `  J1 a( C8 V9 M" {( N
}
% p: b8 Y1 R: s0 d( B& H* I}
  J9 K: \" Y6 E4 Z- C8 Y==============================================================   }+ ]& t* v# c/ F1 ]$ j0 r9 I$ ]
【程序47
. o+ W7 U5 e# }, u8 Z- I题目:宏#define命令练习(2)
# s. v9 I- y. b/ b9 ]1.程序分析: * n0 f  ~5 F( T( c
2.程序源代码:
9 E% b/ p9 B  h. R, _, _1 ]#include "stdio.h" 2 B' h- d( y. O( o
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/ ( c$ h. a( E( U! @
int t;\ ! m8 H  o+ G9 a1 T
t=a;\
. |9 r: w: z: L8 w  ra=b;\
2 y  Z* C& i4 u* [6 l/ _# Zb=t;\
# ?; @8 O$ n# s& M+ {}
) T, N/ q% x2 y! z% q$ T" N! Nvoid main(void) " L  r' ^: ^2 Y; Y; F
{
! g% V1 z, |4 L6 J  {4 x/ ?int x=10;
+ {- v+ D, l6 Lint y=20; & O5 t8 A! V0 G2 D& x1 O; q
printf("x=%d; y=%d\n",x,y);
2 d! a& m0 P3 [3 r( u8 Sexchange(x,y);
* r- ~$ {5 E5 y3 K8 [printf("x=%d; y=%d\n",x,y);
4 ^* q* w" O$ B1 f} 6 F- X" ]' B: f9 y  q4 z7 K4 r
============================================================== 7 G. A: o) _: I. i9 S
【程序48
$ U: v! ?1 x3 n. `- w题目:宏#define命令练习(3)
  B9 {- W- O& V' b1.程序分析:
8 k- F5 |4 \7 s$ f3 N2.程序源代码:
: h+ r5 p$ B% t, {. |; C% G#define LAG > 8 S/ Y) o$ d% i; K
#define SMA < # j2 O" ]- H0 l# D) {& A+ _
#define EQ ==
* C0 k! Y' K, |7 C+ k# A" U$ N#include "stdio.h"
$ x* h$ N, N* U' o4 `; _& E4 Zvoid main()
: S) y+ D( ~  E# M5 X{ int i=10;
/ ~  J3 \- B& n' a7 \int j=20;
$ `- f" i; H! \1 z; N4 ?6 wif(i LAG j)
+ v4 d6 h8 G2 H$ }printf("\40: %d larger than %d \n",i,j); ; w. g3 t2 O2 F* \
else if(i EQ j) $ v: G5 ]1 ]$ n5 L: |! }/ j
printf("\40: %d equal to %d \n",i,j);
% F: A+ _3 F# i. E% Selse if(i SMA j)
9 o, @: x' w8 B& s. qprintf("\40:%d smaller than %d \n",i,j);
9 J: R$ P; o' h" O$ w7 Q6 G' ?else
( X9 U" X5 L# k. _" [; b. z" fprintf("\40: No such value.\n"); / X# @+ k4 y6 Q7 Y- A
} * }! P0 Y( W/ [6 o$ V
==============================================================
2 p7 a+ e! b/ v/ A, q5 p! A2 q4 C
0 j5 C' {/ m5 c  b& }! S
回复

使用道具 举报

2#
发表于 2017-10-8 21:32:49 | 只看该作者
曾经自学C,最后没有最后了
回复 支持 反对

使用道具 举报

3#
发表于 2017-10-10 08:41:14 | 只看该作者
自学。。。。收藏下来
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-24 20:45 , Processed in 0.051803 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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