机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2379|回复: 2

C语言经典算法38-48

[复制链接]
发表于 2017-10-8 15:23:07 | 显示全部楼层 |阅读模式
【程序38, ?  |5 V, O0 Z& U7 L( b
题目:求一个3*3矩阵对角线元素之和
  d( n* X) p- L  ]2 g: @0 i  F1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。
; L+ {" m7 s1 y# [2.程序源代码:  D" c0 y" a& n% }* i* w
main()- t* ^; f( m6 W+ z2 e2 G  X: X, @, p  Z
{3 F& P; W3 N0 `( \
float a[3][3],sum=0;
" M' O' c5 l4 Z: B5 t! A; qint i,j;' r3 V* s( x% y$ @
printf("please input rectangle element:\n");# R2 b7 p) A$ m, z) E- E7 n  ]$ r
for(i=0;i<3;i++)4 q$ @0 ], j  r$ v9 N/ E
 for(j=0;j<3;j++). S/ f* l) U) S+ T4 s
 scanf("%f",&a[j]);1 O+ C* ]. B1 D
for(i=0;i<3;i++)
+ M, D1 `7 C* q sum=sum+a;: }, @# @+ R/ z; d8 _/ u
printf("duijiaoxian he is %6.2f",sum);
! E) `, W5 U! r$ Z( |$ x}) u2 g- r/ D  U0 E4 V" [
==============================================================
- i' {$ G4 t7 F& U9 J1 g% {【程序399 ?; s+ J3 H: E6 f% }
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。' V  u. R2 Y, E$ A+ V
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
- X( v  ]1 N, y, ]2 L: L9 Y/ g     此元素之后的数,依次后移一个位置。 0 p! \! \+ @1 ~' H! H3 r  K
2.程序源代码:
* C1 U3 C! K7 j/ h4 E3 L% Gmain()
; T: d) [" z) s8 D) s5 ]6 U{8 Y' a$ b# H% R) R
int a[11]={1,4,6,9,13,16,19,28,40,100};+ H7 A% m% a8 |, G
int temp1,temp2,number,end,i,j;
# c9 c! J" ^& _+ h$ zprintf("original array is:\n");
! {: J( i0 P# W/ f6 I/ |* G+ O1 hfor(i=0;i<10;i++); p9 {' ]: C8 b3 F6 d8 O& v
 printf("%5d",a);
5 G3 U8 f0 g- C: m& {9 Eprintf("\n");
# E2 g* d# t) O9 z2 R* s7 Lprintf("insert a new number:");! Q# D4 u. `' q! g' Y. I: T$ ^
scanf("%d",&number);5 T, R5 z# h. F4 A
end=a[9];
7 R' q. `" \! Wif(number>end)6 s& @- }2 W8 m/ ]5 O
 a[10]=number;
/ y) K% y; Y8 e  R1 Q5 felse
2 k+ A' C+ m/ x3 v7 I" \ {for(i=0;i<10;i++)
' z# B5 x5 H5 m  A  { if(a>number)( q8 ?2 C/ E4 s/ N
   {temp1=a;
: a* X$ M. L  f$ B9 Q    a=number;) @. @8 r0 u% t2 z/ E1 \* P* P
   for(j=i+1;j<11;j++)1 g  |) D# X4 f& l0 i# H
   {temp2=a[j];3 k4 v0 M" ]# j* D" [) \
    a[j]=temp1;
( R! J" D) z0 U* O: l$ @& W' A    temp1=temp2;4 U6 M' ]. g+ Z+ \% w; ]
   }
5 A. X6 r; [) f0 c9 j   break;. k3 m  J. d7 I+ P9 r/ \; G
   }4 _& e8 V/ U1 y/ e0 ~8 x
  }& ~" G. e0 b  I/ ]: H9 ?7 C
}: c) `- q$ l2 w6 |6 H
for(i=0;i<11;i++)
* z7 E! ?& M. {9 p# Z% s& W4 ` printf("%6d",a);
* j" J) i$ p* N" J8 K, T}
+ F( o+ J. c  l- d9 `; q==============================================================
$ z) Q2 X$ ]& h1 F/ A+ b【程序408 J- J5 m, n; x  k6 U8 G( V$ X! c
题目:将一个数组逆序输出。2 d2 v2 d. E* J7 e7 a/ M3 w
1.程序分析:用第一个与最后一个交换。
1 M8 z. k, \5 H2 _. [, R2.程序源代码:5 ?' N- Z& C$ f( A% j) T
#define N 5
7 ]6 T! Z. ?/ \5 J% N5 `7 o/ s% }main()& m; c6 A8 q6 a( |; G' F
{ int a[N]={9,6,5,4,1},i,temp;
2 [$ ?5 |% X+ [) \2 W/ _# S printf("\n original array:\n");
8 z7 h& {- `& k1 {' r for(i=0;i printf("%4d",a);
6 U! J) w- ]  n* a$ Q9 A7 T( G% F for(i=0;i {temp=a;9 C% w9 B# y9 {  K
  a=a[N-i-1];
+ W9 _0 u0 E+ f. w2 N  a[N-i-1]=temp;
) O, A6 C1 g+ x& @$ @* s }" f* @9 p6 H: f. M0 v
printf("\n sorted array:\n");
( y7 Y( `! @( j8 Z* cfor(i=0;i printf("%4d",a);1 a4 l1 V; n: n9 n) ]. s. }9 m- N
}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要 ( U0 Z7 X% G) A4 S3 d% l
题目:学习static定义静态变量的用法 ; F0 v$ c7 C8 T9 R! {
1.程序分析:
3 [9 q1 _# `4 d2.程序源代码: 3 ?# p* E. J% {, J7 e$ U  W: Z* v
#include "stdio.h" & Z4 T- Z* L: p
varfunc()
# m9 ^% g2 p6 T- l/ e{
! Z5 z7 g4 \7 m9 E/ _0 Xint var=0;
6 J7 O# ]% o8 `! e: {* h  @static int static_var=0; ( \' c) A1 E. {
printf("\40:var equal %d \n",var);
, Y$ N/ X/ H/ P6 \. C. Q/ r" Mprintf("\40:static var equal %d \n",static_var); ( ]" d) p3 O/ I  Z' X
printf("\n");
  ?. `, q* E* }; S5 e, ^8 q/ L3 }var++;
" E3 r- t# N, K( n. tstatic_var++; / C' W7 Z6 R6 P3 X
}
" M: N  `+ \5 x+ t# p8 `6 cvoid main()
# V% l$ }6 R1 }2 ^9 G/ x{int i;
, ?$ {& Z9 b/ ~8 G2 g% W; e9 ifor(i=0;i<3;i++)
5 k0 w! ?4 }5 a, yvarfunc(); 2 j% N: j0 ]/ {# j
} ) o- `0 e/ D5 }& ~! i+ M" a: b
==============================================================
/ x% S8 t/ K$ t5 X+ a/ Y0 {【程序429 p8 A; R0 ~9 Y8 x  S) l
题目:学习使用auto定义变量的用法 . a% K9 e" ]2 M2 H
1.程序分析:
9 V/ r+ ]) f. ]4 a7 N5 c2.程序源代码: 2 V0 S7 R; A# U/ b" `' Y  |
#include "stdio.h"
9 r% s1 w: M7 k1 I% s, rmain()
8 c5 @* ^# q7 _: h1 @' s0 h+ J3 a{int i,num;
( }4 k. O, e+ ^  @3 s& mnum=2;
, H' L* k8 a. g- N# X) Q. Nfor (i=0;i<3;i++)
& A7 t' o* s; A# J{ printf("\40: The num equal %d \n",num);
6 G8 K: q2 P9 C9 f0 \( h( {5 knum++; $ a) P! m3 i! U4 x
{
( M  k; \* n2 [8 Y* Bauto int num=1; + J# M* ^) R/ \. z6 o$ ^" S
printf("\40: The internal block num equal %d \n",num); 2 c, T/ t  v8 a3 T0 D2 `
num++;
  A6 o8 ^  q- O# n8 q$ O1 L" P+ ^} 3 F  ]$ Y% v1 o( {# a' ]
}
! u0 `0 \6 `" S3 G$ Y9 Y} ) n5 i* E  W9 {& C
============================================================== # |* n3 X4 l: d
【程序43
- o8 C: X2 V% Q) s$ v3 M题目:学习使用static的另一用法。
' f- S9 b( Q8 G" ^7 ^2 @% d) S1.程序分析: 9 `* v; _. R! E/ q
2.程序源代码:
- t6 U- h9 B9 z2 d- \0 C6 x#include "stdio.h"
" E5 `, R: L/ j- W  \' v* N* bmain() 2 b2 R) `- L" i
{
% s$ t& d4 n; A& u: H5 _4 c$ `int i,num; 9 {' Y7 {+ Z7 [( I
num=2;
) n7 I, T* [7 R, vfor(i=0;i<3;i++)
! J3 U8 G0 ?1 l% |7 j{ $ u2 L( x' z6 _2 n8 P
printf("\40: The num equal %d \n",num); , N' V9 R  `" U1 e: F9 r
num++;
2 M- f0 r8 @7 t: E9 y! S# s{ 2 I% U8 |% j0 F
static int num=1; 0 C" L8 u  L$ C/ O# H5 N, M
printf("\40:The internal block num equal %d\n",num);
2 H# v- f; P; U% e- g8 Vnum++;
, y7 p9 j0 z7 p4 L} 1 }# i% a* S3 G: o; j
} / o2 h1 m  \# ]2 d& q) W
} , M( p. q; q: v9 o* L4 Q3 w3 g
============================================================== % ~' s3 `5 w9 `( w8 M
【程序44
; }% C! {* ]8 }0 d题目:学习使用external的用法。 5 C5 \% i6 u( m% Q  f* b0 ?3 y& y
1.程序分析:
. D  D. c- L( K2.程序源代码: ! `. Z% D& q& n( D& P: v( Y
#include "stdio.h" 2 Y! b7 X/ P+ d1 g) m. s$ T2 G  u4 _
int a,b,c;
$ w/ q$ W: V% z* Q( u, e' |void add() + `8 u5 I. N- {6 X; ]1 ~
{ int a;
8 C* h- w) S1 U# Ya=3; / Z1 |( Q( |$ }# v
c=a+b;
1 G& \& c  k- [7 I# x  H4 z}
1 t7 K  X' g% D0 r- Mvoid main()   F1 K- u* Z5 j6 s* x5 Z
{ a=b=4;
3 g7 ^. l6 {' Q! B$ N  v$ Wadd(); 2 W% B  e1 Q9 \8 X% G
printf("The value of c is equal to %d\n",c); 5 r, ~8 n3 N6 x2 `) f( F
}
  i1 c$ T/ W/ Q# g* l, B============================================================== 6 Q# \; C3 e% j6 F- U9 {( L
【程序454 {5 c$ Q5 l+ R
题目:学习使用register定义变量的方法。
, `# @, [, C/ c8 h1.程序分析: 0 m' D& N( E: G
2.程序源代码: + A6 b9 Q* x% l
void main() " R9 y( w0 `3 U
{
, |) j/ n, a5 Gregister int i; 3 {  m/ p4 h$ j) W$ ^( y
int tmp=0;
  p, K, O2 R$ ^) H2 [+ [for(i=1;i<=100;i++) / V1 F  `& g9 f9 ^5 X; v  j
tmp+=i; 0 U: f" k; Y! F4 {) H6 n8 q2 D; @; X
printf("The sum is %d\n",tmp);
) u5 I6 i; a5 `( R} # l1 m% J* m. w8 l
==============================================================
1 Z1 I+ T1 Y! M$ T: q; |" a【程序46
  X# j! G6 `/ X* L7 f题目:宏#define命令练习(1)
/ i% d( \* O6 u" e6 {  k1.程序分析:
: I' f0 g$ P% X) }5 Y2.程序源代码:
' g, }; }, }! g/ A% @#include "stdio.h" - \0 _) Q4 ]1 f8 ?7 y& g
#define TRUE 1
2 ?1 c  {. F0 r6 x. W. O1 ^, p#define FALSE 0
' a, A; B! ?5 r" d3 H* ]; [#define SQ(x) (x)*(x)
: A9 k' R% n( l6 T. kvoid main()
. C: F9 G- I( ~0 ^2 a{
# [3 q1 \! N- N9 |! n$ W* ~7 bint num; 2 Q. m/ M. b* q
int again=1; - O, N. F" J/ p- ^* Z
printf("\40: Program will stop if input value less than 50.\n"); , M* y- Y2 y5 }1 g
while(again) 2 X; v: L9 c* W: p- Y1 `
{ 6 x! @; S0 X2 a  D. q0 w8 p
printf("\40lease input number==>"); ) G  L% G8 d; {$ M
scanf("%d",&num);
! C+ P2 h, ]$ f: y3 K, Vprintf("\40:The square for this number is %d \n",SQ(num));
# i1 W( S# `5 h3 f3 Z8 c) Dif(num>=50)
. I, V/ ?* A- x1 J- pagain=TRUE;
2 W% H9 D4 d' nelse
: O4 \4 [; x0 B- T* Y9 B; c9 Q; w+ lagain=FALSE;
7 E. N! N/ c/ j; U7 g3 i2 j& l8 X}
) ~# ?% H; l9 f$ r; W+ |2 ^} ' J5 Q" i2 u& v0 k& m; p! Y7 C
============================================================== : n+ J; Y/ j) H6 G1 u
【程序47
, _7 _+ U+ }" |" v+ L1 s% N题目:宏#define命令练习(2) 2 \2 j3 u- j+ H# ~+ W2 h
1.程序分析: ' O2 {( k& x# n' n! j1 X
2.程序源代码:
2 g% A8 f* q% Y4 J8 c: C3 G5 }) a#include "stdio.h" . K6 p) G) z! c! b/ u0 o
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
( }; `+ [- O1 H. `int t;\ . z  n: q% k  m$ G1 }% U
t=a;\
# t8 F% X9 w9 H+ ga=b;\ , y/ n% D) d4 d) r4 h; l, J( i
b=t;\ . x% h8 x* J/ B1 |
}
4 A& F, s' P" F0 ovoid main(void) - B' r2 V- ^' x. S
{ 8 m( y% [* b( q+ S
int x=10;
2 j7 e+ n. ~* Jint y=20; % D# m" @( j  @3 A9 J6 ~9 k
printf("x=%d; y=%d\n",x,y);
: A1 h: }: w( eexchange(x,y); " d# D% v: t% [! x! x! x
printf("x=%d; y=%d\n",x,y); 6 o3 f& q# j7 F' j8 y. |! y* i. Y
}
# x  Z& m* P5 J  z" ~8 x: ?==============================================================
7 K$ R1 X8 w# V% G' ?+ i【程序487 S& y- K) c4 z$ f! @
题目:宏#define命令练习(3) - t& o( _# x# u8 s
1.程序分析: * l% W) \4 b' _  q$ y: N
2.程序源代码:
. y: Y6 J2 S' y1 j' M#define LAG >
  J* L. g" f: v- S1 a( W#define SMA < % ]& q) L' |0 V6 j
#define EQ == % g- f1 o, U; f1 a. x& P
#include "stdio.h"
$ b. P& E0 ?& V2 f: Yvoid main() / I" J9 C$ x$ o0 g' S1 Y0 V! Y
{ int i=10;
4 i' ]- K# |8 H. Z$ Iint j=20;
0 j( w9 k8 x  [- |0 Xif(i LAG j)
: R; k4 B! ]' Wprintf("\40: %d larger than %d \n",i,j); 2 b0 @" M' T3 J
else if(i EQ j)
1 T  K3 |7 e. m% f8 z) Cprintf("\40: %d equal to %d \n",i,j);
: q, o8 ]! _, }  r6 U: aelse if(i SMA j) + ~' {8 k! b& @, N! _  }
printf("\40:%d smaller than %d \n",i,j); $ |3 N7 J0 X* E9 x+ E
else
# z: `" m4 K) I' ?. S4 Z9 t, [* }2 @printf("\40: No such value.\n"); 9 e6 ?: w* V1 n$ _  n
}
+ |) I8 v$ B# q, I==============================================================
' Q) x5 N$ u3 m9 m( \# b% n

* c+ ~! j& p& E( [( I4 W
回复

使用道具 举报

发表于 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:49 , Processed in 0.058041 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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