机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2378|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38* c. l4 m7 a! }5 P( }
题目:求一个3*3矩阵对角线元素之和
' t( c% f5 _% Y4 r# k  c8 }1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。) N/ S4 h0 Q' b( u
2.程序源代码:
; z" ~8 o* k+ D3 ?main()
- L1 f- E# J) G: }' u: {{
7 @0 u$ h) O, S/ |+ b# Q6 `float a[3][3],sum=0;
. _1 w: u" w! k- V# Oint i,j;) [  h7 B+ r; ~: Q3 f
printf("please input rectangle element:\n");% S: ^: e: j" r& U/ m/ i/ h
for(i=0;i<3;i++)
5 {% C" P$ V' ]/ o" y5 [; d! G% S7 o+ s for(j=0;j<3;j++)* z5 I  w; F; a5 ~
 scanf("%f",&a[j]);
) H2 I  }% X9 {, M( Ofor(i=0;i<3;i++). G2 ]. g5 @! Q7 h# q/ K7 L
 sum=sum+a;( H! E, r" I: u8 S: Z* D! u
printf("duijiaoxian he is %6.2f",sum);
, \0 T: e) N6 f  a' C9 V}; L6 ^  X" w8 Z# ]' @) N
==============================================================. c1 Z- k0 ?4 s& v; T2 w: h+ X
【程序39
5 o. a$ z: R9 i. m题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。* a5 `) K1 ?8 x( k6 B" H' G* q9 I5 B
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
( w! N5 z/ V, C8 `     此元素之后的数,依次后移一个位置。 $ \0 g! c' B( |. O) \
2.程序源代码:! b. W, p" ^* F, E) g. p; F3 Y
main()! Q  o" a; Q8 h7 A) u( K1 J- J
{
3 l8 [3 L: Y% C9 Tint a[11]={1,4,6,9,13,16,19,28,40,100};
6 V& M" _; {. m: wint temp1,temp2,number,end,i,j;9 b9 M5 ]) e4 n8 L0 i2 f
printf("original array is:\n");; |  c% E3 @2 v0 K
for(i=0;i<10;i++)* ]- w# o9 J: s; @& o; o  X
 printf("%5d",a);
& d( I9 p5 y. O7 \# T# k2 {9 W  |printf("\n");
2 B& [" @! l2 k6 i% Fprintf("insert a new number:");9 [8 t& j! \1 w% r
scanf("%d",&number);+ r$ j/ b( M3 {% y3 s2 n
end=a[9];6 W& Y& \6 Q1 P
if(number>end)
8 Z' {* N3 W/ Z  v  b4 d" J* Y a[10]=number;8 G3 D7 J* X1 Z& k* F. O
else
' i  B3 q; V8 `7 Q1 U4 r: s* g2 g {for(i=0;i<10;i++)# y9 p6 k) O6 d6 R8 N
  { if(a>number)
* @( k$ \8 ?9 a5 `+ R   {temp1=a;
3 E- ^& `$ Z8 z    a=number;
/ C* B2 _8 \# x+ g) ?+ p   for(j=i+1;j<11;j++), i" q; B" u4 ^* f
   {temp2=a[j];# U: R& L5 \1 S4 R( J
    a[j]=temp1;
; V# `* x; I$ Z    temp1=temp2;- X4 ~# ?5 M( B' N7 f% Y
   }
/ Y1 h9 ?4 w- B# l* t- C   break;
3 `  C8 v3 p! f( r   }. _4 |- g3 t& L3 l4 V, n6 n: W
  }8 z- q' O# }" h8 M9 Z
}
3 S- a) @% d* p+ _( Cfor(i=0;i<11;i++)6 n  |  r( O3 \8 ]% v/ R
 printf("%6d",a);
( X  V( x# m+ r% F}
: L9 g6 z; e4 }9 j' n% z2 u, K==============================================================
) w# C4 O$ z4 E+ i) n【程序405 [0 [* e; n) Z; H4 U9 a7 E
题目:将一个数组逆序输出。
8 i7 V2 b4 ~& {3 ~0 m1.程序分析:用第一个与最后一个交换。
) G# f9 Y! G$ p0 e" J& g2.程序源代码:
- f6 z( {5 Q# v. R" [5 z, p$ z#define N 5! h$ J: O: [! u9 m
main()6 A# [$ b" D8 ^9 M1 h
{ int a[N]={9,6,5,4,1},i,temp;& t8 Z+ I& n1 ~, j5 V, v, f1 Q
 printf("\n original array:\n");" ~: u3 [* r0 K
 for(i=0;i printf("%4d",a);2 \& y0 A% |, C$ V- D% m; K
 for(i=0;i {temp=a;
* A8 p1 ]4 |+ _5 \  a=a[N-i-1];, W, p5 N+ @; _, @! E& m
  a[N-i-1]=temp;7 x, i0 B4 y+ {) ?' e7 U  |4 ]1 F
 }2 z4 l0 k5 _5 L& {
printf("\n sorted array:\n");5 k9 j- {1 L3 ?+ a& m% V
for(i=0;i printf("%4d",a);& h6 I3 F" N* n& k: E
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要
8 O0 S( T1 n! {* f- Z& v题目:学习static定义静态变量的用法 1 G0 Y# R0 s( r1 F2 k- j6 l
1.程序分析:
' r: l$ B4 t& \3 F2.程序源代码:
* J' i3 k/ Z" Q: C" c#include "stdio.h"
4 [4 W% H' _  pvarfunc()
* k" T* r" g+ B; b$ [! A{
2 {( `6 N; ?$ O3 M! tint var=0;
: `( F7 I/ r6 ~; Wstatic int static_var=0; ) l/ B6 |" \5 q
printf("\40:var equal %d \n",var); 8 P5 U# n9 \3 z4 v& f4 e7 `( m  @; L7 q
printf("\40:static var equal %d \n",static_var);
2 u2 I: V" z! vprintf("\n"); 5 i. N- r2 N2 z2 V9 f
var++; 1 V* q4 t: v* Q
static_var++; 3 y2 w6 Q! X* [/ b* R
}
4 w! `( K2 x; U' e" x6 Lvoid main() 1 y% e: v7 ^8 N0 v7 Q7 @
{int i; - Q! I8 O9 F5 k6 {# f9 N9 C
for(i=0;i<3;i++) . ?: c. Q5 U$ \
varfunc(); / Q5 S& B9 ?0 w$ W0 d
} $ H! m: X* {3 [* l
============================================================== ; Z) U2 x6 @3 Z5 c1 S
【程序423 _3 m* w/ p8 z- k6 ~. e) a
题目:学习使用auto定义变量的用法
$ }1 p# m1 x3 W( W% k  {; q1.程序分析: " g6 T) j! |7 S6 M
2.程序源代码:
1 h2 q  u6 l% Z7 W% G#include "stdio.h"
4 b; X- w. Z1 g3 W. smain() 9 i5 r4 Q# i4 v# J  M# M- A) B
{int i,num; : L, x; |/ ^: T& G4 [
num=2; 4 Z- O1 |& l" x  o" U
for (i=0;i<3;i++)
. B! S) V3 N, {{ printf("\40: The num equal %d \n",num); ! x8 ]0 a# t8 l& ~+ S2 ]) N
num++;
9 E9 E" U% Y$ t{ 0 U8 @) E5 M/ r$ \+ R1 Q: t
auto int num=1;
- R+ {$ R' w3 Z2 wprintf("\40: The internal block num equal %d \n",num); + m8 K1 W2 m' s# @! e
num++; ) v0 F& z. a" {8 T0 F. }) U
}
3 W) n% D" g" a  o3 b, a} ' W* O$ u" |; b! f. x
} 1 [/ }7 I6 R9 G4 A
==============================================================
$ g  e" O! P/ A" X: s【程序43+ e. o& [2 ~# z% @5 g
题目:学习使用static的另一用法。
4 q/ e& {, v/ P, z: D& p1.程序分析:   c; n9 d) b$ u. D  ^# e8 V
2.程序源代码:
1 s3 t( A" n- J; k1 k5 |#include "stdio.h"
7 P' T- k0 }1 q. e8 n/ y7 @) ]main()
6 n: I4 p! u# I% u- x$ N{
) _9 x. J% r; V# h% x6 G: e% m  I1 mint i,num;
  R8 v+ F0 }" j' dnum=2; ' l- q0 B* Q6 b$ x1 g5 O
for(i=0;i<3;i++)
* q) V7 f. p& o5 r' ^& d{ / u( o: u& q4 Y$ W/ o
printf("\40: The num equal %d \n",num);
0 W# n/ y' k6 Gnum++;
( v# E, Q& _8 a) ^9 w{
3 h4 {) }9 P2 j0 u; Z1 O7 nstatic int num=1; 2 Z9 g, K1 g* d: x
printf("\40:The internal block num equal %d\n",num);
: t$ ]1 v8 x5 B6 Z& [num++; & m6 l7 g) d+ r  b: q6 m# @4 ?* d: m
} 4 u  F3 P( Y5 \# v
}
9 O8 Y4 [: ~/ X& \& V} # d- {+ i2 \. s
============================================================== - R( N. p. p; b
【程序448 {7 x1 q  M6 }
题目:学习使用external的用法。 ! m7 L: G3 |" j1 m, w1 L9 ^
1.程序分析:
! ]+ f6 t( i( D& e7 u9 M) j" k2.程序源代码:
3 R4 e; `, J* e. R; Z#include "stdio.h" & z. G7 w/ G2 M5 V/ m' c0 `
int a,b,c; ( x0 V) s" t3 v( P( @' T6 c
void add() ' t" a. D1 A4 o# Y6 Y, Y( F
{ int a; & L' Q) j; H- J; h& O3 p* h0 R
a=3;
6 z; {" L! N3 g+ S# u# kc=a+b;
% |6 K' o* f3 Q4 I" |5 k}
1 Z8 H  \. {! n; H0 i: g# o* \void main()
* S3 _( T/ ]" s+ v. c! `{ a=b=4;
( l  a. U* n; A# E5 ladd(); , X4 I9 N1 s( x) _  H5 V9 @4 B' w
printf("The value of c is equal to %d\n",c);
# A0 p1 l. R5 r} 4 ~! P. a% q  d5 N
============================================================== * |% ^8 ~% y  ~- k5 |$ i0 I# H
【程序45
* \. |7 i( B9 g; c题目:学习使用register定义变量的方法。 3 S7 F5 f+ J) }4 T
1.程序分析: , |% I( M+ m, V- x0 p: Y/ ^# V% a' \
2.程序源代码: - v: ?: @4 v- Z: s: b. O
void main() * W! o6 @- Y# T6 g
{
% ?; C( j' f4 @0 K- |0 G  w# I( ~  m6 c# cregister int i; & ~! z2 \& k5 C
int tmp=0;
. v7 K& a0 A! D. H. n' lfor(i=1;i<=100;i++)
& I$ I7 F1 R" \2 A6 s/ g* r  gtmp+=i; + r: @  n* D2 e
printf("The sum is %d\n",tmp); : G1 |% H8 I: z" q
} & f. G& \, b1 R( ~1 k: P
============================================================== " a: ?/ d. }( A! I" o. ~
【程序46: C: f+ |0 c* J' q0 s
题目:宏#define命令练习(1) 6 x* x$ D& B; B! e; ]
1.程序分析:
* e/ C; B2 q$ z4 M' ~2.程序源代码:
5 N. N1 |+ L. g5 Q" d#include "stdio.h" - ^' J/ z$ T$ R6 @1 N. s# a
#define TRUE 1
7 k! J1 [/ k5 |8 r* c#define FALSE 0
: s2 Y! y/ w, ?- L#define SQ(x) (x)*(x) $ b( Z0 r7 d, b8 H: i6 `. m
void main()
  S7 @1 Q" Z, e) E1 H, M& X3 M{
1 E0 ^$ t+ R3 l; xint num;   d7 f2 a6 A: F2 g
int again=1; 7 p# Q, i1 |' b9 `& x1 r
printf("\40: Program will stop if input value less than 50.\n"); : a. Z8 A3 p7 @  h
while(again) 3 f- r' w$ ^) y: L4 ?
{
7 Z) q" G( w! Oprintf("\40lease input number==>"); - X* Q8 \/ i1 o& G/ X3 c" P- ^
scanf("%d",&num);   @9 R4 [: N  o  V: t
printf("\40:The square for this number is %d \n",SQ(num)); : z% G/ E1 p& Q
if(num>=50) : P7 }0 `/ O6 `; f) b" T/ p. l
again=TRUE;
' F5 ~6 u+ A; melse ; q/ ^* v, p$ |( `8 C( r/ Y
again=FALSE; 4 O: _1 X7 B) T" t0 N
} % x# y8 B; V' S6 ^3 W! C
} : q* i7 `4 _! m2 P9 W6 B
==============================================================
7 C9 ^9 p+ `) ?0 u( m【程序47
6 W9 g" `! a3 @- ~# U3 e8 D题目:宏#define命令练习(2)
7 y  r3 d" J$ g9 N+ x) Z6 L& T1.程序分析:
3 H7 Y" f+ H0 m2.程序源代码: ; E( O0 C+ W& F0 {. g
#include "stdio.h"
: r6 j4 o0 T' ?+ \, b#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
) S/ |6 C, n) d( `  _- zint t;\
% d% j) ]! ~" _& ^6 J. Vt=a;\ ) D- H0 ?% _  L% p; _  X0 R- v' v
a=b;\
6 a2 |: F5 J3 o1 U# ob=t;\ * J- m8 c2 J* ]7 v0 S
} ; y, y) Y5 ^, Q+ E9 n- ^% f
void main(void) % @" n" k9 b3 `7 J9 @! J3 O4 G- B
{
6 C! t7 R  P+ K) @( Qint x=10;
8 W4 S4 R4 j8 E$ i0 r1 Dint y=20; ; |, k8 A; c6 G8 }4 N- V
printf("x=%d; y=%d\n",x,y);
. s1 ]3 b& i  G0 {* \7 A9 [exchange(x,y); 5 e. ]0 D. d) e; r2 g( l" B% N' |
printf("x=%d; y=%d\n",x,y); & j/ S$ {$ K% ]" n  q3 J
} 6 h* l  I2 K8 i7 n% \
============================================================== 5 r$ P* y& {4 |3 ]
【程序48" k$ V6 ]+ f0 |; h' ?( d9 `
题目:宏#define命令练习(3) , `( T4 |2 h1 b2 a6 I2 e
1.程序分析:
2 L" v; X: R) s' ]9 Z2.程序源代码: 8 S+ w+ _& A: {7 [8 y8 |
#define LAG > , v) `! H3 d, F- I" E, D
#define SMA < ! m8 M. u5 e; `* h1 R. s, ?
#define EQ ==
4 \, r" Y( j# X8 \' z9 x% p#include "stdio.h"
, r0 |, O: ?+ k; s) [  u2 Hvoid main()
; g- R' I! V. @  U' y9 ~* X{ int i=10; 4 o' v' S  x5 M7 L( T7 ^
int j=20; ; S7 K8 y3 o" W# h
if(i LAG j)
% a% j2 F. B6 Dprintf("\40: %d larger than %d \n",i,j); ! q+ x7 i( |# ^! t# R- }+ e
else if(i EQ j) 8 c& J; n9 [# `
printf("\40: %d equal to %d \n",i,j);
6 G' C/ z) X0 \( s! {5 w0 {0 Celse if(i SMA j) ' J/ ?: X- C4 N: @4 `
printf("\40:%d smaller than %d \n",i,j);
7 x% m, `# s# ^+ ?else
# P7 n$ \! |  b$ e* P7 c) ]4 Lprintf("\40: No such value.\n"); # ?; r' F) w1 J* J) T
} - p9 d8 Q3 ^5 b  M- v. Q, k
============================================================== . h4 P% `* ?- I: m2 T+ o* y

! k# P' N; B* n0 U/ {
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 14:30 , Processed in 0.052260 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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