机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2464|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38' |, `+ P) T  `- U+ \
题目:求一个3*3矩阵对角线元素之和
. T7 m: t3 k+ W1 a( }# Y6 g1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
, X! i; Y7 B! D  p2.程序源代码:
5 j9 _9 O, |  `, Z9 a9 omain()( `0 c( _. e6 M) M, o
{
0 C: W4 J' {% O/ {# {6 Sfloat a[3][3],sum=0;- b9 q: H. Z* H, m- c
int i,j;' }' F* t# ^4 h& R/ w5 v1 I
printf("please input rectangle element:\n");' A: Y: V  X# {; O
for(i=0;i<3;i++)  z- `% W0 R3 N( f, A
 for(j=0;j<3;j++)
+ O! X& `* v) S+ ]  |- \ scanf("%f",&a[j]);
6 k) F  v0 H" t0 ]! c- _* k3 dfor(i=0;i<3;i++)* p4 _" i" G9 u4 a
 sum=sum+a;
* D6 s7 F0 I6 F0 aprintf("duijiaoxian he is %6.2f",sum);
( R. e; M$ v& o: h; N* l}1 e3 c  d5 l. Z) w
==============================================================
4 o3 \' a2 v/ W  T: v7 n/ S【程序39  r& A0 D6 b: r5 f3 X2 u  r
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
: |6 y' l( p! S2 K3 {1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
" H6 [: k; i  l+ P0 t/ A     此元素之后的数,依次后移一个位置。
" b* D! I, a$ o5 P2.程序源代码:
( j6 Q4 e9 c( ymain()
8 m" j7 |0 z4 i3 W{
) `9 C8 ~* B) dint a[11]={1,4,6,9,13,16,19,28,40,100};- V8 q; v& j2 t- d, ]
int temp1,temp2,number,end,i,j;
9 f8 [) `0 n: v6 |printf("original array is:\n");! I2 @! f* e6 o" d
for(i=0;i<10;i++)" ?5 c1 Z* k3 h& l
 printf("%5d",a);7 K  C0 F% Z. w6 E* i
printf("\n");
  z! l: x9 s1 q4 ?7 \2 Z( oprintf("insert a new number:");
0 z% D* d0 B" w6 Lscanf("%d",&number);
0 F5 c  Q$ M. V8 `end=a[9];
) c% `* z; D  M2 `  a0 X+ Y. c7 y2 I$ Kif(number>end)
" I6 G4 j3 S3 w! R a[10]=number;
- j/ D1 u& f4 ~; Y% M" a  I0 helse8 W* V# O! V5 x; Y" F
 {for(i=0;i<10;i++)
; x: `' K) _& `. V' w  { if(a>number)0 V1 y5 s. P9 a: r' Y
   {temp1=a;2 P" P* u/ o7 M, A
    a=number;4 K' \- m2 i# |8 |/ T
   for(j=i+1;j<11;j++)
( k: O. ~$ W9 }$ B* E   {temp2=a[j];
2 t8 i! S! R3 \3 R    a[j]=temp1;2 Z1 f5 X7 M; W) q% q$ ~' u8 x0 D
    temp1=temp2;
( E  b+ ]4 k- ^8 i   }! w4 l/ J6 D; s# x7 I9 A0 p
   break;1 U7 T+ H. S3 D( k
   }" i7 G$ d1 Y3 ^+ }4 Y
  }% G( w1 b0 k4 M( E2 l, T3 E
}
" N7 t/ A: x# ^9 ?( Jfor(i=0;i<11;i++)
  O7 I- ~  R, ^' _0 u) V printf("%6d",a);. R. t1 E8 Z$ x0 |7 t9 G( y
}
& v* I) H! z4 ]7 d==============================================================: `+ U' C# _% E, w/ j! Q0 o; ^0 p
【程序40
6 n2 n: ?+ {% r6 E- h题目:将一个数组逆序输出。
- {& ]2 B" e! b8 J; n1.程序分析:用第一个与最后一个交换。
- u5 F9 W  g+ H0 L* @0 L5 ?2.程序源代码:
# z. z% V5 s# i' p#define N 5: p- c( J& m' e
main()7 ^) W3 D7 e2 W# B: l
{ int a[N]={9,6,5,4,1},i,temp;1 Q0 ^- }- ?6 c" [
 printf("\n original array:\n");" P( e9 ~: A- R. b
 for(i=0;i printf("%4d",a);
3 c: U1 Q4 T5 n0 P for(i=0;i {temp=a;
& w4 x" G+ ]; W' k& P( g  a=a[N-i-1];
# Z3 T3 ]- y2 X, f( _$ J# Z  a[N-i-1]=temp;& d, f2 x; O* G! D) |
 }6 y+ L: c& a/ M6 W; I  r2 m
printf("\n sorted array:\n");
% R( X1 }2 B/ y3 i0 Hfor(i=0;i printf("%4d",a);
. c: D; E: q' X0 {; |}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 $ J  M+ }9 m7 x9 Y' ^, r
题目:学习static定义静态变量的用法 : R% _4 V' l. b0 A2 \
1.程序分析:
1 s1 l! ]# v& p0 {3 K2.程序源代码:
! X6 ], O5 F# Q6 M5 O#include "stdio.h"
% M% P, w: w- G  s! M1 M$ Kvarfunc() + P# ~7 X! r5 N9 l6 [
{ 9 ^4 d' o! y% d* D" N0 m, W2 x
int var=0; # s. [; D% a6 T, u
static int static_var=0;
- t6 A- r' w# J' C4 Aprintf("\40:var equal %d \n",var); ) r7 {. Z* }- h  O$ l
printf("\40:static var equal %d \n",static_var);   d& M' Y3 `& G( k  b6 g
printf("\n"); 3 [. d0 C% [0 k! o# j* Q) M
var++;
$ o, J. c! d& Vstatic_var++;
; N6 V5 ]5 A! U1 b, N; `; _3 @} * E: ~% x+ w, H, D/ v% d
void main() ' f/ z# q8 P7 k7 \. i! E" l, d
{int i;
1 m7 J$ P7 W7 Ffor(i=0;i<3;i++)
4 m/ j$ z9 K# _8 M) [+ `varfunc();
3 A  C* P" K6 C}
' k' L6 k  @/ I==============================================================
" T/ y- Q8 s3 N! b  {【程序42' f; ]  r% }+ _/ _
题目:学习使用auto定义变量的用法 4 v- a5 S. {3 ?* ~# j' w5 Y
1.程序分析:
& g( s3 L" O6 ?7 f2.程序源代码:
6 y# [" \) V# H" N* z' y5 j# L& `9 E#include "stdio.h"
! d% |# _5 ~% X, h7 i/ ]0 S# w* A0 Omain() 8 c* B9 q6 F' ^, j) h/ J5 E
{int i,num;
: j- Z; t. Z  N( q: nnum=2; ( B# g; l. C* N  R1 \; Z
for (i=0;i<3;i++) ) n$ T/ N/ h' j6 I; J6 A* T
{ printf("\40: The num equal %d \n",num);
! |6 Z, z5 Z0 D4 ?* r1 M  cnum++; 0 u$ S- m8 [; f6 v8 d5 Q& ~
{ ' Y6 C8 B  M% J4 {4 o+ @1 H0 j
auto int num=1; ! Q5 @; C7 s3 _' _+ a
printf("\40: The internal block num equal %d \n",num); ! Q1 p1 R5 c- _8 W  B
num++; ( T6 ^& F% e- ~( C7 g# {- S  @
}
" x$ G. [, |; A( U9 J} 2 H9 q3 R) F7 J
} 9 d! U  f7 Y# l+ j* Y
==============================================================
( ^4 G, I- B2 ?: ~' k【程序436 t% ^0 D3 U3 Y; ^8 B
题目:学习使用static的另一用法。
. {9 u% o- C( ?  I: {1.程序分析:   x0 N% ]/ i( E/ p% u3 l
2.程序源代码: # f6 q# P" w5 K2 I4 _
#include "stdio.h"
, }6 R' P" U% W* Hmain()
4 D$ ^4 ]1 Y# B0 c* r; ?{ 0 `5 u+ V+ R) u5 P
int i,num;
: e% u5 d7 N) ^4 znum=2; . N' P2 L: h4 S" i' `
for(i=0;i<3;i++)
6 U4 E+ N) |- |( y4 ^3 |  q{ 4 i9 P* s/ U) {* K! Q% L
printf("\40: The num equal %d \n",num); 4 ~& X) d8 z$ Z( ?3 z; Q
num++; ; d1 E+ Z& y7 ~: m! @. E, g
{ 4 F" R- a7 s! L+ v( d; _3 O' C
static int num=1;
. W0 P; D0 t( ~  h) Z- o: M0 Nprintf("\40:The internal block num equal %d\n",num); % ?/ D3 b9 G; a+ R, S
num++;
3 z) T5 g$ E) n) v% x} / Y8 G1 Z# X' k. p2 l0 V: N
}
3 C: l4 A' @6 P- n8 h} % A) n6 t- t* }1 j1 G- I; U
============================================================== ; a. J1 Z/ i' F  ^. N
【程序44- u6 i: P* z+ p  b0 g( u3 S
题目:学习使用external的用法。
- ~% Q; S( W7 E9 s( F" ]$ c: \1.程序分析:
9 s( }  F5 v" @/ K, ]2.程序源代码: 7 r2 Z& K; t9 m$ p
#include "stdio.h"
% o" ?& }" k/ Q5 M) g$ v% ^int a,b,c; ; p) f+ E$ n5 }  C9 a6 y
void add() ' A- J, L; j8 r; d5 T  V
{ int a; 3 p6 n& `$ A/ G5 x' E3 ]
a=3;
; W( m. B. @! T& q9 S3 tc=a+b;
: m# Q/ i. F( T4 f8 t  x} & M- \1 U: I! B# Q1 U* ^( X* P3 J+ C
void main()
5 e4 G5 w( T, M- A{ a=b=4;
3 a" u/ h. r7 L* S+ D9 `add();
! A7 b: l' I5 P; V6 ~, Hprintf("The value of c is equal to %d\n",c); 0 k9 k3 Z1 p- \, D0 c3 i5 I
} & v2 b6 }* ]' Q, O
==============================================================
; a. p7 E' F2 v" t1 y. w, f【程序45: x% z  `! N! P# @2 ~
题目:学习使用register定义变量的方法。 : ?9 I8 H* `1 {' }
1.程序分析: 6 h1 e6 I& z, K" W; A
2.程序源代码:
9 T: ^, K/ {  yvoid main() 3 K2 ?8 n& ^" U* W; w. B  p. m
{
" q; ?- M- f0 v9 `/ f5 Cregister int i;
3 s* O& }: _* ?/ G8 rint tmp=0; * _$ n. k( m: J  t
for(i=1;i<=100;i++) 4 s! o9 y# U! q2 C
tmp+=i;
9 G# y0 N0 S$ Z5 @9 tprintf("The sum is %d\n",tmp);
9 t" A" Q5 g5 p% j6 g} % h; X/ K3 m8 E( N; f
==============================================================
0 L* G# p# r9 k6 a4 b4 n【程序46
* v3 |" E8 q/ _题目:宏#define命令练习(1) . X- ?6 A7 S7 z9 |' r* {) I
1.程序分析: 4 K2 Z. K0 x6 Q5 D  T: w2 y
2.程序源代码: - l: G. o2 U$ o/ h. W
#include "stdio.h" 6 H8 H7 f# X! U; z. y9 e4 T
#define TRUE 1 $ A' I3 ?" l5 e! Z+ N
#define FALSE 0
; i7 |8 {- |/ H6 o0 Y  D+ _5 _#define SQ(x) (x)*(x)
8 B9 Z9 y! `+ m2 |0 e4 Mvoid main()
8 q5 R: \: g7 W0 S{
/ M$ O1 n2 F) h7 s3 jint num;
8 Z* p& A# u# L- l# A: p" ?int again=1; , W. H6 V; ^# P0 b. @5 ]' s; ?7 @5 u  d
printf("\40: Program will stop if input value less than 50.\n");
$ i, N. x, K, }% J+ @! F! Gwhile(again) " s- M2 G. l* u' Q: x& I! v
{
6 U5 D' D2 ^% ?5 B& \& f# Tprintf("\40lease input number==>");
5 H- {( R, V9 q1 T/ {; oscanf("%d",&num);
/ i. }1 z* m) W( b, ]5 n  u5 Zprintf("\40:The square for this number is %d \n",SQ(num)); ' a- n! g. W, U
if(num>=50) - E4 }5 ]: }2 {- r  X% K+ ?  B
again=TRUE;
2 U9 q: L5 F% X: w* d% K9 Telse
" t6 U+ s4 t7 g2 B4 |5 Xagain=FALSE;
. Z+ m$ M: V! a$ u9 o9 }' r} 0 m! R9 U1 G% U* Y0 H8 a
} 5 B8 ~& w+ r, k% {* V! c
============================================================== ' [5 K! \% u( A& x* l
【程序47
8 ]( q/ u# j( K$ o4 \- ^题目:宏#define命令练习(2) 9 Z# p$ ]8 L& D; p
1.程序分析:
" f2 N1 u2 |' M- h6 ?" i4 t2.程序源代码: & A# A$ I0 m9 ?7 q, X' x  z
#include "stdio.h"
' F1 g8 j- H! v2 r/ A8 L% P#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/ $ m! V5 t9 u# T
int t;\
& S9 W$ E% O$ H8 |) Ot=a;\
4 x+ Z+ f/ i' @4 Va=b;\ $ D  b7 [* c- S0 t( D, S5 `
b=t;\
4 j) Z+ h7 s: \! F* I}
3 U# R0 H  f/ p" ^1 E( V& k' Mvoid main(void)
; x; a- N, Q* i0 ]* t% A6 L{
' |9 w( `: h+ p) {0 M( ]int x=10; 2 f6 S* T$ K  Z+ D7 n1 z! Y; @
int y=20;
3 V8 G' f- j' Eprintf("x=%d; y=%d\n",x,y); ! y) A5 W+ Y- f8 u! a
exchange(x,y); . v$ K  }0 n( h7 E5 a, `
printf("x=%d; y=%d\n",x,y); ) O/ W5 U4 o& {/ }# y, H
}
5 ]0 _+ y" g' x& A2 J! P$ |) v; g============================================================== 0 |& t! b4 x8 A' }. I8 [! U
【程序487 t+ c" }3 G3 r" [
题目:宏#define命令练习(3) 5 T# M6 r! t% K9 u+ M6 ~+ u1 x6 A0 x
1.程序分析:
* B/ V0 O! O- _9 _2.程序源代码:
* N7 u2 V% ~# F7 D0 m0 q#define LAG > : d- D1 i6 p# V( `
#define SMA < 7 b" l: q' e9 }; P9 e% I. r
#define EQ ==
) Y- J9 L; i- b' U$ [% y2 B$ [8 n#include "stdio.h" % K. _( q2 [6 V5 c# r7 G
void main()
% V8 S) H6 l8 y" n" P  R! P{ int i=10; 2 W  O- D% J3 |, u
int j=20;
/ x4 ~* y* K. y" p9 Qif(i LAG j) 6 e% ]$ c1 _% K& L1 Y
printf("\40: %d larger than %d \n",i,j);
1 V  B: }0 }1 ?2 Nelse if(i EQ j) 8 Q  ~, v! d! W! c) J2 z3 x0 a% Y# I  ?
printf("\40: %d equal to %d \n",i,j);
$ z% C7 f" U9 X: v2 V* pelse if(i SMA j) . ~* d5 U- W1 G2 j6 v/ }) y
printf("\40:%d smaller than %d \n",i,j);
% h4 Z% z6 |. f9 k3 r4 kelse # Z, R% V6 a% y" G5 I2 e
printf("\40: No such value.\n");
, s0 @$ ^5 W  T}
0 }. }7 G" w" o; V+ q==============================================================
! M) T3 w6 B) a. B
0 Q# l" _3 P& s2 o. d
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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