找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 125|回复: 0
打印 上一主题 下一主题

C语言经典算法67-76

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1000
跳转到指定楼层
1#
发表于 2017-10-10 09:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
【程序67: v, \! P& H$ `6 C
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 * d& L" b8 ~5 Q, ?* _  Y
1.程序分析:谭浩强的书中答案有问题。 ( }" q; q  c$ f( E, x0 ?
2.程序源代码:
- C2 Z# ?. N% _: qmain()
' ?/ e; L2 I+ j( _{
! U) A$ y3 q% K" a2 F# a! vint number[10];
. A/ l' }+ K, c$ oinput(number);
1 B9 n9 k8 r; F3 wmax_min(number);
' ~  J2 C7 p4 {7 o' W5 S% q! t' m( ^output(number); ' }# F! B/ S8 y! ]
} ) t1 M; z0 x4 V9 \6 k) r3 i) u
input(number) * f. P. O5 f6 Z3 _) ]
int number[10]; 1 M& T. x- y8 s# a
{int i;
8 A2 l3 r! U. M% @# [* @for(i=0;i<9;i++) 8 k. n6 H0 R3 N& j7 D& O
scanf("%d,",&number); 5 T- o8 S  I  k$ W
scanf("%d",&number[9]); 6 C& K* e8 E: u* E
} * T! o  C  C. N" V: T
max_min(array) + }" W) i2 b; l6 |9 ~/ Y5 r
int array[10]; ( g% ?% n7 S+ v# N" X3 |
{int *max,*min,k,l;
) ]7 h9 w. q: k8 v) bint *p,*arr_end;
& j. X! Y! V3 v8 f+ I" q! Tarr_end=array+10;
! }9 `- s+ _1 U! i" ~max=min=array;
4 D4 n  ^. I% W" s# y9 E$ zfor(p=array+1;p if(*p>*max) max=p; " _: o' D2 l8 ^, G! W
else if(*p<*min) min=p;
  U1 O% T/ |$ S: \/ K& T4 H  Ik=*max;
) O* y: F. b: C( b" Tl=*min;
& A3 A7 X9 Q' a+ b) V*p=array[0];array[0]=l;l=*p; $ A4 a$ n6 }: e8 o0 [8 k
*p=array[9];array[9]=k;k=*p; # P, z' V3 a) A( `/ J
return; : u7 b. M' v- a/ E% J
}
3 @, E$ X/ S5 m+ z0 Y7 b6 E- V. zoutput(array)
4 ]$ @& X$ c! [0 q" D+ H( |int array[10]; $ X* `, ?/ R; I- l
{ int *p;
% p% {- q5 r( U# z( t% P, sfor(p=array;p printf("%d,",*p); 7 B( p% t. r0 z3 [
printf("%d\n",array[9]);
4 ^+ E" h) h9 S9 {} - e2 H: P) Y3 Q: ]- M
==============================================================
6 ]$ T/ H$ S2 o- G9 `+ P【程序68
* C& s  s% |% V3 C题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 ' V! w8 |* j- m+ r0 O  [: }% k
1.程序分析:
" u# v% v' c2 {# }2.程序源代码: 4 x0 Q  \8 J& u$ \- J5 N. T8 ?
main() 6 G% n4 e* o# s
{ $ I: p3 _: Q4 n2 o9 J
int number[20],n,m,i;
, J  f# I7 c3 F, W" A, p& dprintf("the total numbers is:"); . ?- X4 \! q3 t. J
scanf("%d",&n);
2 S' N9 z  o# }, ~8 f+ zprintf("back m:"); - N8 y4 z# ]6 ]5 \' t) T
scanf("%d",&m);
3 z2 c1 Y! A) j. w) H* mfor(i=0;i scanf("%d,",&number);
6 c  K8 ]6 _0 _; Yscanf("%d",&number[n-1]);
" n8 K3 c" [) w3 e* wmove(number,n,m);
7 s+ I3 {; }! S; ?3 a( J5 ofor(i=0;i printf("%d,",number); : ~8 A  P) Z* q3 {3 }+ E0 J+ G2 e
printf("%d",number[n-1]);
2 z) G( d4 d; C7 G  b}
- H! v6 q9 p2 p( {$ qmove(array,n,m) . Y" a* N7 {+ e, c8 R. F
int n,m,array[20];
. P: u6 K- @. j  K1 k{ 3 E; ~- m. H$ R$ K
int *p,array_end;
2 L# u5 C/ T# sarray_end=*(array+n-1);
2 T4 n# |3 @' k0 |8 o* kfor(p=array+n-1;p>array;p--)
1 G: J+ k/ i) {6 Z8 R*p=*(p-1);
4 l+ y! ^" {( j# N6 z6 ^5 H*array=array_end; . k1 w8 M- }4 j& Q
m--; : W/ }, b( Q7 R7 ?: N
if(m>0) move(array,n,m); 0 t7 i" ], @$ K7 ]$ s$ m
} ' T0 K8 h$ u# `' h. d$ J9 v
==============================================================
7 T7 O' E9 w7 p9 ^+ c9 R【程序69
0 @$ o+ l9 _! C8 V- |: a题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从13报数),凡报到3的人退出
6 h5 s" R; v) h圈子,问最后留下的是原来第几号的那位。信盈达嵌入式企鹅要妖气呜呜吧久零就要 8 N8 q  Z0 L7 s, `, o* P2 D
1. 程序分析: ( o* I* @9 ^8 `, f+ h3 m( F
2.程序源代码:
* n5 {" W) F1 D#define nmax 50
% U4 l7 U  h6 M/ q6 Pmain()
1 x7 R% ]" I/ J0 z9 D: T: X{ 0 p, Z. @- y" @1 E$ I3 M8 A7 ?
int i,k,m,n,num[nmax],*p;
' ~6 n; ^4 i4 |/ eprintf("please input the total of numbers:");
3 ]6 S/ w6 s( _4 E2 K( l0 Q1 Dscanf("%d",&n);
" _5 E. Y" Z- q* J# y4 zp=num;
  y2 c% j3 @' V; `! Mfor(i=0;i *(p+i)=i+1;
: [' A6 ?- Y9 D8 z% }i=0; " d6 @- j/ _% Y, Q2 L
k=0; ' ?0 t; e+ W1 `; X3 u, Y
m=0; 5 v+ R& ~7 K2 w6 p7 c0 T
while(m {
3 L* r$ J5 x# ?! P( t: z2 Yif(*(p+i)!=0) k++; / c& X: `* l3 d5 D/ d
if(k==3) 7 k/ Y' Q2 n7 c5 T- h3 z. c+ N
{ *(p+i)=0;
+ u! I. Z" {( B$ e9 Q5 M5 I. U9 @k=0;
2 H1 G' ^3 V7 V2 s" B% B4 Y/ Pm++; 6 V  w4 H8 J9 S3 h" |; G
}
8 J& h7 k  d) }# S& m; n$ _i++; 7 b3 w1 v1 v# b; T; m& l
if(i==n) i=0; + H/ c1 C7 e* Z# I3 \  A
} 9 y+ @( M3 |, t2 ?, t% l
while(*p==0) p++;
$ Z- u" u8 S( A1 Y* eprintf("%d is left\n",*p);
" ~5 {* ?0 d! v& w. B9 ^" ^} " e0 C' u4 Q1 ~4 j9 }& ^' f$ F
==============================================================
  r9 m& D1 A- ?) ~【程序70
- X/ Y0 a5 ~7 p7 m0 r题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
4 m2 T, R& D4 }7 V* U7 V3 E1.程序分析:
$ d8 c4 s# W- Z4 O% H' M, b' ^2.程序源代码: , R$ B: y6 F7 E3 V. f& U4 t" z
main() # e1 z* {. A2 i& a9 @+ R& f
{
  e) S! `; Q$ S& A# `! u/ Z, S5 N% yint len;   ~6 E: _+ ?0 t8 @8 H7 ^* t- G
char *str[20];
3 g6 T. c6 o) |- @0 d, q. Q/ b* Eprintf("please input a string:\n");
  H# p0 R% s! Q2 e0 |scanf("%s",str); ! ^! I* B2 J& l# g
len=length(str); ) ~& j* k: i* W- r9 Q/ C
printf("the string has %d characters.",len); , d+ j) q8 @5 W/ g  q
}
# M( f- \5 k9 E$ j: m0 E! ?length(p)
( U3 S4 q7 n  i4 ^" P4 G: uchar *p;
1 l! \& {( H# h0 w{ 9 Y. _: z# r9 Z% }$ o4 q4 A
int n; ( Q" U1 t# g& e6 p% H! Z# x4 y( t
n=0; ! X0 V0 {1 N( p% N7 M( ]  ?6 u
while(*p!='\0')
' V; J% o/ T; m! L! L{ # N4 K  U" C- j+ z
n++; 9 U2 m! {7 w& @) W$ S$ B! Y
p++;
, ^" Q$ \0 O/ h, W: \8 X+ [} . V: ^3 e, U  [0 ]/ }
return n;
; j% ]8 P8 q. e; _}
' J1 Z3 y# H% N- B$ i: _【程序714 u2 ~/ w& u! p3 f- |+ z7 J9 `" w9 z
题目:编写input()output()函数输入,输出5个学生的数据记录。
* m5 u5 A! R7 G( Z1.程序分析: ! m6 ?4 [# ^" u( g; i! ~; z
2.程序源代码: + |- N0 Q0 V% [8 v. }  U* l9 e2 h
#define N 5
0 |9 s% _5 U0 c1 q! @6 _! lstruct student
, j( V' j0 u/ x$ B/ X9 x{ char num[6]; - D( T: J+ L- v4 B/ N4 K; T& Q0 ]' J$ F
char name[8]; , g, p. b" l& v. E* A/ q' a
int score[4];
5 k8 R% H: c% l} stu[N];
% A5 l& R6 r/ `! t% I8 Winput(stu) ' d, c/ m$ m0 A* B2 v/ e
struct student stu[]; - g7 Y3 F4 c2 @% d% \0 T" p3 E
{ int i,j;
! n% N# d5 M0 z) u  [7 I7 efor(i=0;i { printf("\n please input %d of %d\n",i+1,N);
8 i/ M0 g- [5 V% v9 pprintf("num: "); 8 E+ b, ~2 p' y, W% H$ b+ U
scanf("%s",stu.num);
( O9 l" [: l% d: L4 gprintf("name: ");
/ K' ~9 L: J2 o% J2 w4 ~( A( Kscanf("%s",stu.name); 5 T) f2 Q# }6 y& d) ]- e# v
for(j=0;j<3;j++) ' A1 f+ K" R) g& L) j- |9 k
{ printf("score %d.",j+1); 6 A3 E6 n: L2 k2 p! G( b
scanf("%d",&stu.score[j]);
8 H2 l1 P+ n2 g" ~6 c}
1 r7 M0 \! R& E( [printf("\n"); - u  H9 ]# ?1 w, J' ]( [2 u
} 5 E, E/ ^; z5 l+ [6 c
}
  f2 S" @4 |6 D' h2 _% Pprint(stu)
( }1 _4 M1 l; f+ m3 E. Estruct student stu[];
# a/ r1 A, j3 {3 P  Q! a3 H{ int i,j; / x" y5 k+ h/ z
printf("\nNo. Name Sco1 Sco2 Sco3\n");
/ n; j/ n% g3 T" W) _; h. [2 H$ a6 Ffor(i=0;i{ printf("%-6s%-10s",stu.num,stu.name);   `! Z" g5 }  V; G1 r2 h( |$ F
for(j=0;j<3;j++) - M, B/ [* u' J& e: |! }
printf("%-8d",stu.score[j]);
7 X! [6 Z7 g- x2 O4 ?/ nprintf("\n");
; g4 M4 O( Y: t6 O+ i) T1 X, X6 Y/ R} 9 D1 u9 r3 m- X* ~; r, j
}
# N, Z4 n" T1 M: K' tmain()
2 b! w- d% _  w/ r7 L% `- o, a4 F{ , d4 a0 A* j( f1 [+ {$ o
input(); 4 D, B) q0 D, I6 d. o( v* k
print();
# `2 a/ j; P& ^9 D  T' Q}   ?3 f0 |$ F# g4 S/ x
==============================================================
2 F/ R  l' Q7 z2 L! G2 l【程序72
: K1 T1 D/ j& e% X# ?+ F: C题目:创建一个链表。
9 m  o+ z. c, Y7 M1.程序分析:
( e4 D. ^8 x! B4 B2.程序源代码:
, b$ w& T& Q3 D+ F# z/*creat a list*/
# T8 N  p- L. ]8 X* _: `) W#include "stdlib.h" # `6 O; M) O# z) m* Z1 Q( G; b5 I
#include "stdio.h" 3 f+ d& [& @9 A
struct list
+ W7 y3 r; v  G( ^- V2 Q{ int data;
" B( _+ C" e. r( I8 |/ estruct list *next; # c( I: C$ S' y9 @
};
* W3 k! f& B) N4 Xtypedef struct list node; % v' h' g7 X6 \6 f3 |  g2 o$ s
typedef node *link;
6 z, P( q: ]& t  m4 b0 L# avoid main()
( G8 P1 U5 `$ X' s{ link ptr,head;
- |- m! I0 T. f5 K4 v& V( c& @int num,i; * A* U( N% }  v' d" Z- Y' k
ptr=(link)malloc(sizeof(node));
" u6 U  @  b% t+ Z  a6 pptr=head;
, N6 i! X/ s. a. W5 B/ j% {9 ~printf("please input 5 numbers==>\n"); " v% w; S) J6 k; B7 d# O! j1 z
for(i=0;i<=4;i++) ) O" \4 q  \- W& y
{ / Q- u3 x% G; {7 h8 W
scanf("%d",&num);
7 v* y0 J- V  L, m0 zptr->data=num;
4 M9 P5 a/ e3 v) Z5 q+ q9 Q' Mptr->next=(link)malloc(sizeof(node));
- J+ S; `% p4 r, t4 sif(i==4) ptr->next=NULL;
" m: o. Y  A2 M$ n7 C1 W& S) _/ K. Jelse ptr=ptr->next;
' ^' {& @- I& h# y3 m. M. |}
9 t! P8 L% O+ ~* \) C) \ptr=head;
# ~: c0 \( u* l# D, f% Ywhile(ptr!=NULL)
6 X6 a2 g3 U  G; {; n{ printf("The value is ==>%d\n",ptr->data); . B2 q+ h' c) a: a
ptr=ptr->next;
- e7 C; F: d: d/ `} 3 V6 U9 P2 _$ Z6 i6 W
} 2 q! C( M& U! D( Y, A3 C  F; `8 h
==============================================================
1 E/ ^2 N. P6 B4 A+ P! t【程序733 Q/ R9 `4 o4 L9 F# t: ]. R
题目:反向输出一个链表。
+ R( v9 x; O1 q) l6 Y( v1.程序分析:
( U7 C: B& ]  m0 p9 e& i2.程序源代码:
' Q: ?( R4 S' X1 K0 {/*reverse output a list*/ % Z/ l8 `3 b5 i( ^  f
#include "stdlib.h" ( ~4 h$ ^0 Y/ b' Z2 E9 @
#include "stdio.h" ' F# X9 B% {& Z8 H& s7 }3 A" k
struct list # ^+ L5 w9 L3 h; t  N4 e' p
{ int data;
5 H. U1 |3 k) y8 Mstruct list *next; ; @9 {5 g! p3 d" i, x
};
1 G6 t3 Z8 w/ I# Otypedef struct list node;
0 I9 z( t1 `* q' |0 n+ w9 m5 Vtypedef node *link; 4 ^1 m& u- `; Y/ n; L0 H# [
void main()
! C; r7 Q5 ]6 J4 r- q{ link ptr,head,tail;
) \3 C! s* N( _, x% x. m2 V+ Vint num,i;
" P( k/ Z& c* m* Dtail=(link)malloc(sizeof(node)); ' {, n- c- l4 d& l: p5 s
tail->next=NULL; ! f' K- J# G! o- B: Q
ptr=tail;
$ O- A0 k6 J0 A8 O  [5 D9 Lprintf("\nplease input 5 data==>\n"); 4 m" {9 a/ k$ o" i# S# d
for(i=0;i<=4;i++)
3 S2 Q7 a9 U0 {$ N2 Y{
2 g8 w6 B$ {: m3 h7 A9 \) r4 }scanf("%d",&num); 1 R$ A3 v+ c6 Q. P) h# w
ptr->data=num;
% G+ l: \! Q1 W; l& D8 p. bhead=(link)malloc(sizeof(node));
$ I( L) A2 ~0 q( p: q! W! Whead->next=ptr;
0 `/ k1 q9 Z0 v" r0 R5 }& |9 Eptr=head;
& E; g( \6 D0 s7 A4 ^5 R3 ~}
, I% F* p4 X  o4 p  Q& B1 Qptr=ptr->next; $ g( z- B, V, s
while(ptr!=NULL)
5 e6 I; a* n( g8 P# ^* W) N5 N& A{ printf("The value is ==>%d\n",ptr->data); , i' S/ ]9 z+ _! m3 Q/ }
ptr=ptr->next; 8 q6 h: I1 }7 s
}} 5 Y7 Y- {) Q* y4 {( F& e6 g; a
==============================================================
+ k( Z5 p; M0 U- u* O【程序74
8 I( ^: B) |- n1 y" B题目:连接两个链表。
* j! K  }, S& B6 ^' U9 f' \; E1.程序分析:
0 `8 {1 F( q7 `( d2.程序源代码: 1 l" u9 v  _1 G9 s; j
#include "stdlib.h" 0 X( }7 e5 s) K  V9 d$ Q
#include "stdio.h"
6 \: l6 ?$ Z. R9 h2 Sstruct list 8 w+ e" y) V' w# o) c. e+ w  R
{ int data; ' r, h2 u0 C, Y3 L% ?/ f, R
struct list *next;
( O$ s: D; E" e- _6 `1 g}; . R1 h3 q3 i' Z  u. s
typedef struct list node; + N( o( D2 w0 F4 x* m  Z" ?+ c1 I
typedef node *link; ' _9 ]0 f( b  v& s: u5 D
link delete_node(link pointer,link tmp) $ G( a0 s( G/ G6 Q# M: s$ r
{if (tmp==NULL) /*delete first node*/
/ w0 D5 U+ I# creturn pointer->next;
! p& S# Y9 S, j2 Zelse
+ ?: r7 o* A3 v0 D% w{ if(tmp->next->next==NULL)/*delete last node*/ : _1 {; C, H& M# T
tmp->next=NULL;
7 g" `3 @" d0 g+ A$ G/ p# y6 u# |4 E. lelse /*delete the other node*/ # g1 ]) D( s) i- L
tmp->next=tmp->next->next; ' Z8 r+ l7 @# l6 G  |: V' a" b
return pointer; ; P; U" y% l& @+ t$ D
} $ o) Y: o6 z1 a6 ^% O
} # S$ o! J/ F3 Z& h5 _
void selection_sort(link pointer,int num)
5 d5 P, h/ l6 c2 E8 H( W{ link tmp,btmp; 5 \, `- ?0 J9 q! ]+ y6 W- W3 Z
int i,min; . p: u) M) ]6 ~( E
for(i=0;i { # L, o& X2 x5 _$ d# [. \$ C. a$ T
tmp=pointer; ( o' \2 Z4 H1 n6 Y* b: B% V/ E
min=tmp->data; " e0 s& A" W* H" o0 |
btmp=NULL; 5 ^4 W) u6 Q7 ?* o/ ]7 ?  c$ x2 \
while(tmp->next)
) h, o3 a" B) x! [" q: j{ if(min>tmp->next->data)
  P/ |2 u3 k, A* \{min=tmp->next->data;
+ @1 J7 i' \# obtmp=tmp;
% z5 P, Q1 U% j* ]3 z}
; g9 v/ A8 y- x# _" `7 Btmp=tmp->next; 5 Z% g/ D$ W/ f  Q% y4 m
} + j  _; a, L! B! h) E& O
printf("\40: %d\n",min); 8 M5 E9 H5 P- B2 G; r
pointer=delete_node(pointer,btmp); ; G4 W, U9 r, m
}
/ V( Q$ s# I" i* D  ]} $ Y2 g' B# v0 u' Q5 Q8 V/ b3 c4 _
link create_list(int array[],int num)
/ H* C$ m- q  N2 _' v+ b+ C{ link tmp1,tmp2,pointer;
( p* A% q8 M% ?5 ]) W0 j4 N' P2 s0 tint i; 4 z0 b, A( i# [' n" w
pointer=(link)malloc(sizeof(node));
: n- t. q$ T- c2 O" i4 wpointer->data=array[0]; 4 H& b" m/ |8 c/ z
tmp1=pointer; 5 t0 v" u$ m& q2 y( N" k4 l& q
for(i=1;i{ tmp2=(link)malloc(sizeof(node)); , E$ S  G% i3 M" P5 {# k+ ~& R
tmp2->next=NULL;
+ x# w0 |5 `1 w- K# Btmp2->data=array; # }2 E* z  L  X8 T0 z  S3 m0 T$ Z
tmp1->next=tmp2;
8 c6 [/ B- h% V1 Xtmp1=tmp1->next;
2 Y' @7 g% K! K/ J} 9 o9 b$ j. ?7 c; H6 `
return pointer;   U1 }& W, {* i$ Q+ p" f# y
}
, ~2 y3 e5 z9 G1 J/ n7 tlink concatenate(link pointer1,link pointer2) 1 k# }& T; [: p& G* W
{ link tmp; / p: z# x8 l. X) \: |' i
tmp=pointer1; 0 O5 y' U# \: S8 ~4 @5 }& ]# o
while(tmp->next)
1 @# O: @: Q) ]# f  S" |/ W6 ]tmp=tmp->next;
9 j' c' I* z( w1 a3 {  W; ?+ C# D( @# Utmp->next=pointer2;
( E, t  Y2 e; O! creturn pointer1; , y" F% h4 c$ J
}
$ k3 r9 N5 w6 B  Avoid main(void) , f5 w, W9 t- Q  d, m
{ int arr1[]={3,12,8,9,11}; 8 W: J5 C) n- x. b
link ptr;
% t! x$ ~/ o8 P# N2 _) `- optr=create_list(arr1,5);
/ O: o7 E. Z; _2 i" xselection_sort(ptr,5);
3 b( _$ O) C& D} ) ~; n2 `: d- Q! R
============================================================== ( ~. r2 M5 J4 o* I- F2 |( u
【程序75
9 U4 B; c8 }  s题目:放松一下,算一道简单的题目。 9 K8 w1 O3 f1 u( a
1.程序分析: # o: ?2 R9 k' G2 ]7 ^
2.程序源代码: ; J5 K- i: {( p# n
main()
( q0 A- ]5 J" I0 i  ^1 ^0 e7 v% H{
: i2 G$ i+ _) }9 e- Iint i,n;
$ l2 z4 _- n. B2 kfor(i=1;i<5;i++)
1 p8 Y! M! f" |) w2 E3 H$ C. `; W{ n=0;
9 S4 n" _) A0 v+ z/ hif(i!=1)
% F5 q4 `# {8 F/ N. ^n=n+1;
) x* U: R/ z6 G2 Y3 m. @% e+ i$ Jif(i==3)
* `+ M/ m7 l. m9 f2 Mn=n+1;
" e8 `& S: n* K' S3 p4 q% S! Rif(i==4)
1 P: G. F1 ], K* B( Ln=n+1;
& E* ?' m6 G; r5 e3 L- F9 G0 Kif(i!=4) # h. T: o' Q/ L
n=n+1; ! p- ]# C) B! ?- x: ?, s+ ~
if(n==3) ) o) \0 K4 O( o" V
printf("zhu hao shi de shi:%c",64+i);
0 @- s8 f* M' _1 [1 z} ( p; d* X; b# \; `) p7 T
} - s& w+ U% C3 A1 F  f' S9 I
==============================================================
! O- g, B. [, o  {3 |【程序76
1 d1 O3 d5 x5 z0 d7 q题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
2 I: v  L: U! _& t) r. J1/1+1/3+...+1/n(利用指针函数) % U9 N! x- T$ w  c# m
1.程序分析:
( D5 d' y3 O. m2.程序源代码: : Z! n1 j8 m/ X) }
main()
8 M+ F: k) N! D5 k& v5 u/ c#include "stdio.h"
& N! E1 `* R( y) N  I  e, e0 omain()
& o6 H# w1 Q- s9 ~4 V{
  U9 p( n/ U- I8 ^# mfloat peven(),podd(),dcall(); ( ]; s7 s" k2 i
float sum;
4 D9 A- I) N9 w3 ^- Wint n;
4 N/ }2 p, \5 a0 S( ]1 n3 rwhile (1)
/ E/ p* m3 V  X# K6 i+ \4 V8 k% Q{ * i1 L9 Y) D6 B8 Q
scanf("%d",&n);
! e# @. X! p9 U0 _if(n>1)
$ B2 k6 \  k5 l! R0 ~. p/ bbreak; . F8 {6 t  l/ o2 F
} " w4 r) Q, n. ~1 a# ]0 a7 |2 J1 H
if(n%2==0)
2 ?) m5 t  K( ^  V+ ~0 m+ L{ 1 D7 b+ }/ B3 I6 g/ q; v- g
printf("Even=");
6 g2 t( y/ p7 o: y4 F' D$ b7 U- wsum=dcall(peven,n); : D9 C" M. B# J
} % \7 I. ^/ \9 d) a1 E  f
else
8 G* o# H1 }! b) p{ , z7 A" Y; P' X7 J
printf("Odd=");
+ ~1 Y& [, f; x$ K. I+ fsum=dcall(podd,n); # {: H$ t! d$ z# u5 w" _& s$ ]6 l
}
! x, v/ P+ y* v2 mprintf("%f",sum);
4 t. p" o% F' a* W- y$ A8 a} ! q) f: c" o4 D3 n0 X8 U/ f1 j5 I+ x$ b
float peven(int n) 5 Y: }9 @, V% ?9 c: F/ v! o
{ 7 j. T5 @/ c; w0 m
float s; ' Y+ E: H' L" i& a! }0 k
int i; ' E9 r' O( u5 E; {- W. C( }
s=1; ' \- ^/ p( [; y& Q% P/ [
for(i=2;i<=n;i+=2) " @$ Q& d+ ^+ L* {" U9 g/ b3 G% Z
s+=1/(float)i;
9 V* l4 X) q4 I  R$ ?return(s);
* u3 l8 s! ~8 r0 w3 R" j% D- j+ G}
0 W& v) a% c) u+ f; d3 n! u: mfloat podd(n)
8 z% u& p2 I% U, s, q, v: p& p& Aint n; " i+ y9 e2 g/ G4 [* |
{
; m! |6 l: K( o) ^5 F3 Cfloat s; / e# [7 w  I. F5 H
int i;
1 N+ D$ k5 k- p2 a' ps=0;
0 b( G7 `( Y# ]& N. H7 ?3 |for(i=1;i<=n;i+=2) 0 m. W# P: ~* H; S' e
s+=1/(float)i;
( \4 q& _% Y" _6 S$ Zreturn(s);
# F5 u3 {  F: b& a' d$ H' i# i}
3 y7 F$ r! {- s5 Pfloat dcall(fp,n) ; A2 f& {+ r/ \. L- B- L
float (*fp)(); * V, G3 \8 a! b; @! U7 h
int n;
  h8 ^- y( k6 R7 @& q! d- f{
) q& x6 v. t) X( v9 c' \float s; # w, W, {/ k: ]# w& H& `; R
s=(*fp)(n); " _0 n  E; q4 ?/ |
return(s);
7 O0 Q9 T9 L& p$ R( z} 6 X; E2 y$ O- C( N& d
==============================================================
: U  n6 O' f4 D8 Y

4 a, ]7 V  t' R# u" i& I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-8 23:36 , Processed in 0.085848 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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