EDA365电子工程师网
标题: C语言算法38-48 [打印本页]
作者: dilidili 时间: 2017-10-8 14:13
标题: C语言算法38-48
【程序38】' b5 H; s2 L c; c
题目:求一个3*3矩阵对角线元素之和 5 K. h1 I( F1 D) P) a6 M
1.程序分析:利用双重for循环控制输入二维数组,再将a累加后输出。: ]. U9 D# P% S3 q% B! h" \3 x
2.程序源代码:# n" y3 D8 Q6 a+ C
main()
, d3 j( l7 G9 [{. Y8 L& h0 X, n! F# C* `
float a[3][3],sum=0;% j1 z8 q" b9 m0 p" H C. S: E
int i,j;, r1 t6 _; b- _ t
printf("please input rectangle element:\n");) H, ^2 v0 L; f8 K% x; ]. i2 y
for(i=0;i<3;i++): @& b, O8 i2 N" Z: t- i
for(j=0;j<3;j++)
5 N0 z) F, d' V* W' P s5 |! l scanf("%f",&a[j]);: i J5 s$ M, {: r* k7 R5 q
for(i=0;i<3;i++)
3 z9 _% q! `$ }' z9 M1 D sum=sum+a;
/ u/ u& ]" K7 [8 \) C( K$ z3 Kprintf("duijiaoxian he is %6.2f",sum);
4 l9 |% p# H0 c5 A' Y$ `}' F0 w: P6 D1 l" y7 c0 P
==============================================================! z; c1 g# e1 \; j
【程序39】
4 M$ r/ D& y5 N: Q4 A9 w& k) c题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
9 Z T0 {5 I; T, ^* J1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后: n% P: E7 L, j' v# j. y9 K: ^
此元素之后的数,依次后移一个位置。 / K1 ~6 N3 S: \* _% q2 B, n
2.程序源代码:
+ R5 G% ~ A& U: M* R: }( T, `main()
1 s Y7 v! z( ]( t{& H; Z3 b. _3 L( {
int a[11]={1,4,6,9,13,16,19,28,40,100};9 H9 I" v$ W3 h9 \
int temp1,temp2,number,end,i,j;2 q+ Y- Y2 c6 F! ~4 `6 K9 n
printf("original array is:\n");7 Q- U; {7 H y/ U* j
for(i=0;i<10;i++)
! Q- }9 \, \7 [* p* F+ Z printf("%5d",a);
3 q3 C8 o Q q# m* Dprintf("\n");
8 S1 }1 O: i+ Y* @printf("insert a new number:");1 u3 ]2 Z6 L7 s* ^
scanf("%d",&number);
$ V2 s( L1 o, o9 U! g5 L( `+ Uend=a[9];
, b6 }) M" f4 a& @+ x7 xif(number>end)
+ n1 a8 g) L3 z, W4 i a[10]=number;0 ?! K) j5 i6 q0 G5 S
else# A* ~9 n! f" U0 o/ t. H+ O
{for(i=0;i<10;i++)* x* C8 P; ]; j8 o8 l
{ if(a>number)" a( m0 n5 G1 u. o3 b
{temp1=a;
, a0 b: q$ y+ u# R a=number;
4 Q; g% h; g/ W! m3 C1 J for(j=i+1;j<11;j++)/ w; F. [* x+ N: g1 g& {* N! @, K
{temp2=a[j];& ^" L" p6 |/ P; L$ N
a[j]=temp1;
! _3 R( B8 w6 \- G E( w temp1=temp2;
( ^6 h* M( ?. z O C }
" z. L3 V9 Q9 ~ break;3 J& p3 m" y: J( d
}3 |3 l) `1 f; _* e: N% C* z
}
* T$ P& w r0 A$ t2 {}) Y6 S& b0 l/ E: g1 e% ?
for(i=0;i<11;i++)
& r' c$ |( K+ g0 Z% \7 \( | printf("%6d",a);
7 q3 ]: [! g9 s( M}
/ G& I6 C0 I) y5 V% M% B( l, q==============================================================* N- _$ I7 @# ?
【程序40】
( w' }1 y3 }- H题目:将一个数组逆序输出。- a+ f1 N: Q/ `4 r$ V" O
1.程序分析:用第一个与最后一个交换。
$ d3 K8 S$ `( p6 x" w; D: z2.程序源代码:' m9 w4 Y8 f# j, F+ p4 u
#define N 58 y; V# f5 c2 X, X- T% h9 [
main()
3 t7 L; R& l3 [* \% _1 c$ e* [{ int a[N]={9,6,5,4,1},i,temp;) e: n3 ?* [5 M. x) j
printf("\n original array:\n");4 L! Y/ k3 _; F
for(i=0;i printf("%4d",a);
' X4 Q' e- ~) o" P for(i=0;i {temp=a;
' Q- B$ M l Y$ _6 Z! N a=a[N-i-1];
* i- m/ z8 y& M8 F, [2 ` Y9 l# L a[N-i-1]=temp;. o$ D( ]& ~5 N+ V# S
}
# O" s& g) s( L2 q; v6 b1 C/ g( cprintf("\n sorted array:\n");2 L7 f! H& G: i' C) s$ Y q2 C+ q
for(i=0;i printf("%4d",a);
8 M) u& u' n& A0 C, I8 V" z2 j. ?}
【程序41信盈达嵌入式企鹅一一起呜呜吧久零纪要】 ! K3 b$ Y9 v" k( c
题目:学习static定义静态变量的用法
3 W* x( e* { r! a1.程序分析: 3 f4 `1 M. h: \ ^/ I$ Z z
2.程序源代码:
' m6 C$ |9 F( s9 q#include "stdio.h" 1 t2 v8 F/ u G
varfunc()
: [7 z2 |5 T' p+ N; Z$ Q8 l1 X{ 1 K" b" G$ o2 R* @4 Z, Z
int var=0;
) P0 f/ O7 J Mstatic int static_var=0; ! X$ w/ S1 U, @. I: p& |6 R
printf("\40:var equal %d \n",var);
+ s* L8 J1 e6 q6 ~6 p, Yprintf("\40:static var equal %d \n",static_var);
/ F+ f( |6 ?" j* ^& s) J3 vprintf("\n"); 7 a. [* S+ p$ {* O) d
var++;
2 \; K# \+ a ^% f+ W6 R2 U7 ?static_var++; & O8 P7 h5 I) Z/ k, Z
}
2 P9 \0 G3 A) `+ v5 ?" z: f2 n% ? j+ Y" Fvoid main() 8 R6 H( O) V7 Y( N
{int i; , h2 [) ^- o2 k$ H1 j/ H& U
for(i=0;i<3;i++) # D3 J7 c( k' ~! [
varfunc();
" g/ O$ u* t! y2 {} 6 v A( n4 ]3 K3 e- W9 `+ q
============================================================== ' j7 F+ F% z9 C7 b( m2 a
【程序42】
8 \$ [! D, m" K2 T: a) H, Z, b0 A题目:学习使用auto定义变量的用法
w }# s1 B9 T3 o4 d; W( R1.程序分析: 6 \ M! K# v) t( E1 h4 w. ]
2.程序源代码:
& e. O+ d4 `# \) b1 w& W# F, q#include "stdio.h"
4 C/ G& {2 _" K: V" p2 ^8 Qmain() * j. ], Y& w2 C( _
{int i,num; ' m+ L) U4 N- q
num=2; % ]1 u" S3 D4 X( Q' @6 q
for (i=0;i<3;i++)
; |) [& n6 o1 }2 c$ J3 U% o{ printf("\40: The num equal %d \n",num); % G$ R% _8 k6 b
num++;
/ V1 a7 ^, i* H0 Y" E3 K. N9 P! O{
& k8 e8 \+ ^1 W9 ^auto int num=1;
( ?8 f) r. q) S* S' Rprintf("\40: The internal block num equal %d \n",num); 2 { B, G& X& y
num++;
9 C! C& T9 A# h7 y} 9 `# } W. }6 i" P- H% }" \" @1 L. @! C
} 4 D9 a/ C3 }) d& x, c
} 2 r' ? f3 P9 J" z9 q4 f3 [
============================================================== & R+ I" E1 q1 h# \8 Z
【程序43】
; b# Z* }# o. Y8 E) ^题目:学习使用static的另一用法。 : Z0 w+ b0 p j7 x" e
1.程序分析: 4 i' N# X5 t. q+ `6 X
2.程序源代码: 6 \, t. y& k$ W$ X7 a
#include "stdio.h" 4 z1 z. B9 ]: i; F' F
main()
' Y/ v8 V. S4 j/ Q4 Q{
& ?7 L( ]! R) F2 j# T# Nint i,num;
6 N+ o- s; r8 m* y8 S$ @2 Y0 w4 ]7 Onum=2; 9 b+ @4 ? e! D, b3 W
for(i=0;i<3;i++)
- ^; g+ _9 T' w; m3 D+ S# F! p% q{
) e3 P( I5 |! v; P4 P, dprintf("\40: The num equal %d \n",num);
% s/ t: h) {& W3 c/ r$ \$ o% Vnum++; 2 X& _$ Z" R( }: ~; p' N) a. H
{
& h: p: k" f9 pstatic int num=1;
+ R! d: P w+ X/ N% rprintf("\40:The internal block num equal %d\n",num); 7 @. c( S% n, t* o3 z1 n
num++; # | b5 s' r2 y9 }! v$ n
}
% O! S; {8 U# f5 y}
. U0 i2 l: j3 E3 R4 B5 s6 \; L} ; d! T4 e7 R- r( q6 v
==============================================================
2 Q3 j2 W4 N/ G& Z【程序44】 : X0 o% ]' |* J* d/ |
题目:学习使用external的用法。
4 D" H5 c2 ^4 k+ q6 j. X1.程序分析: 8 W5 f0 Y2 P0 ?% t3 o3 M, W' j; r
2.程序源代码: $ b% Q) s( d9 g9 k; R
#include "stdio.h"
1 ?7 e9 F2 A2 m, K, h$ O7 w# Vint a,b,c; : f9 }6 ` k' `8 t- Z; L3 \
void add() 7 r5 K" C2 F6 E8 \: p7 E5 B
{ int a;
3 h6 P! r" o$ Na=3; , N5 q* t. V3 A7 R) h! P
c=a+b;
; n5 A5 Z) u( O3 Y& U} : V, o: T6 t `5 Y8 R! J! Q
void main() * k; F, z6 ^4 y% ?5 C/ Q/ X
{ a=b=4;
: A6 |6 E% [8 E, p5 cadd(); ( y# V8 Q6 @# F, W& E
printf("The value of c is equal to %d\n",c);
7 l+ P. _- s' W# U1 \, H} r0 E6 C7 G' Q2 s8 N
============================================================== ' m6 B8 m k0 A9 |
【程序45】
# ?* k( Y: B" l) }; q, |' z) | @题目:学习使用register定义变量的方法。
2 n0 ?' m0 n9 @1.程序分析: % V1 X9 ^3 n% B- X+ b- @
2.程序源代码:
6 o- E' M2 k2 E+ X/ e0 M' ]# l7 T* @void main()
( U# B7 q3 i* r" ]5 @( F3 X) j{
$ j1 a+ H2 |/ f7 T! r' X# _3 J4 w: o3 ~register int i;
; Q/ P; s5 h2 d' V* Jint tmp=0;
, ] h I; y S( B( D* hfor(i=1;i<=100;i++)
* n6 s' x f1 Y" g- Ztmp+=i; + ?+ D% s. I* e0 Y( o
printf("The sum is %d\n",tmp);
8 r" M% y0 R+ E& G* `2 K8 {: B} * [, Y( g0 e- K( I/ k8 p
==============================================================
( K6 Z" Y7 j+ C J) G【程序46】 ' u0 T) V, R# `$ o
题目:宏#define命令练习(1)
$ u! ]4 V3 r+ x* W( P1.程序分析:
5 n$ P) j8 g/ c @! L6 k2.程序源代码:
/ s( b4 i) x: f7 r' a0 X#include "stdio.h" + @4 v$ y' S2 j4 E( t0 x
#define TRUE 1 . e. J% H! U% j+ i1 h
#define FALSE 0 / n. T) l' E! G* `; v
#define SQ(x) (x)*(x) / V6 U* h. s; \3 z
void main() 6 q% c1 ]' J! ?
{ 8 G$ i% v+ r e3 x7 P+ e8 r9 j
int num;
$ ]; L) q, G4 n' ~/ _% s) Bint again=1;
% z/ M' b# [$ @% j# A" Gprintf("\40: Program will stop if input value less than 50.\n"); , e# S' N Z; ?3 k5 X6 q
while(again)
! F# u4 @1 t! g6 a{
2 L" [: b7 z# ~3 L2 o8 Q* Pprintf("\40
lease input number==>");
- q8 V- ]: L, S- a/ ?. [# Escanf("%d",&num); ! P* |5 `8 q9 L/ n0 O: n
printf("\40:The square for this number is %d \n",SQ(num));
; e/ h6 W8 n% k+ |: x) }4 O+ Dif(num>=50)
# Y# j {& m4 oagain=TRUE; 5 l1 X+ G3 Z% z0 f' a( K
else 7 L3 \" F$ x7 _) g
again=FALSE;
P, Q8 l7 y5 f0 r" g: z# {6 M} 1 x+ e" Z+ f/ ^; R. U8 U& u; F# z0 ]
} + D8 \: N+ z1 T% D
==============================================================
1 i- I' v/ M% d0 V【程序47】
2 j W1 Q9 f8 f F" `) V题目:宏#define命令练习(2)
; s2 ?; N+ T! `# j& |& f1 [/ z1.程序分析:
9 a2 O" q' d" `- R( }2.程序源代码:
9 N: o) N& M" J! A9 j/ r4 I* I#include "stdio.h"
1 R- L% z# P9 L#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/ 5 n1 i; w' j* _4 W8 x! i
int t;\ 4 U% d3 f# V/ c0 u5 d
t=a;\
3 C$ C( n8 i) h2 F( i2 ^# _a=b;\
8 F/ M4 o4 l% e) }0 z# R2 ~b=t;\ + F) e* U5 |$ @0 _$ T6 i/ s! V) f( D
} + F* ? `* h, R- m" ~
void main(void)
6 Z& F" B1 \9 B% B* J{
0 M: K& H1 o0 ^$ P; J9 C/ Y' `# Yint x=10; % z3 o' {6 A6 D
int y=20;
- ]: e8 y+ ~9 t' t( |& z8 n* K7 l5 ^- mprintf("x=%d; y=%d\n",x,y); w/ W+ O8 N+ Z6 f6 k
exchange(x,y);
3 u5 V% ^) Y( r6 ` Y8 ?7 M* M3 jprintf("x=%d; y=%d\n",x,y); % i, w" v* ~6 Y! v ^0 c
} 8 ^# c# s4 s$ ~) b' {( x" S4 Y! S
==============================================================
+ ?% u+ k4 r( n! F【程序48】 . \, a( I" ~ l* M( Q5 m6 ~
题目:宏#define命令练习(3)
+ ^ Z" @* C$ t4 [% S1.程序分析:
; f' H8 t, V1 E9 J2.程序源代码:
( `/ L* i2 X- F$ v( @. x/ _#define LAG > 4 V+ x2 @& s3 Q- |9 X- j0 \
#define SMA < # a& a" e% @0 u3 L3 o/ u) p
#define EQ == - ?" ^0 w4 y+ j- S8 {% s: K% J/ j! `
#include "stdio.h" + r' G- M; K. i3 L, w/ s9 Z) F
void main() $ B3 H" x% [2 L8 P
{ int i=10; 1 }1 c: w+ q n5 p0 L/ }0 J. y
int j=20;
2 S/ r6 |8 h9 Zif(i LAG j) I, o! w) I2 C! K1 e5 |: W
printf("\40: %d larger than %d \n",i,j); \' z. _: L) u' q# O4 v
else if(i EQ j)
" e# F% X) k1 @6 h A) w1 a0 A% wprintf("\40: %d equal to %d \n",i,j); , `7 s$ N! S* a" f! I
else if(i SMA j) 6 Q6 d. V6 p4 B$ Q% o
printf("\40:%d smaller than %d \n",i,j);
% b% M& `0 t% a0 xelse
3 N; u3 A1 z- c# K7 k0 O( f6 Bprintf("\40: No such value.\n"); : f! ^. Q) y. Q1 N. F+ \+ O
} / k5 M* ]! h+ p8 M5 c, j
============================================================== # Y( s# O2 ~2 j* ?
9 f+ Y& M& S2 s! ~) G$ c- U- [" Z
作者: yitong7601 时间: 2017-11-25 19:59
谁都不容易啊 ~~
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) |
Powered by Discuz! X3.2 |