55.已知在文件IN.dat中存有若干个(不多于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中所有的正整数个数totNum;②求这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totave。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。 【答案】
0 J3 v4 A, E/ e6 g void CalValue(void)
; z. U- D& ]3 E1 y1 d3 i) V# ^3 I3 s { int i, thou, hun, ten, data;
: j0 q$ Y# ~! ~! {0 l7 u+ D3 ]* \ for (i=0; i 0)3 y/ w& a* S* `$ L- _8 e$ L/ N
totNum++;( t! i* X3 D" t7 H9 b9 V
thou = number/1000;
9 a V( k8 p3 O+ K% T* _7 J6 ^! \# a hun = number%1000/100;# \3 M. X$ A& o. t' M8 C7 l5 B
ten = number%100/10;
4 g9 b& q; E7 S0 w5 D7 N data = number%10;
6 H2 O# t/ N5 k" N0 X if ((thou+hun+ten+data)%2), y r4 q+ ~# k1 n
{ totCnt++;5 K6 V8 {$ h4 x+ Z
totave += number;
v, C4 ^/ R# U+ P" v! n- D2 d }4 e E$ ^9 H6 M, _
} g8 Z, `) }4 y8 L4 l
totave /= totCnt;! Q- C7 `% {1 ? A% k* n( D, C
}$ y- g$ @7 B& R- N" k5 P# f
56.下列程序的功能是:计算500~800区间内素数的个数count,并按所求素数的值从大到小的顺序排序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数primeValue()实现程序的要求。最后调用函数writeDat(),把结果count和sum输出到OUT.dat文件中。
7 O- Z2 O4 ~9 [: k5 I1 e' G, q 【答案】
/ @& n ]- j2 R* Q void primeValue()
4 o4 `8 m& l) ]8 Z7 S { int i, j, half, yy[100];
* h( E( J* C) C2 @+ V for (i=800; i>=500; i--)* D# W9 O3 X, D) H X, V! ]% K% y
{ half = i/2;; I, g" B6 v5 C$ g2 f8 T5 ~
for (j=2; j= half)8 |/ q' G: q/ I3 q! E
{ yy[count] = i;
: J: w2 j/ @) b" M6 o$ l count++;
+ ~; p# h2 u% J }# l. O! }1 v( A [) l# \
}
3 e i0 {. z, C, k1 G! u1 l for (i=0, j=1; i=1000; i--)6 O& x# x% r' T6 Z" A
{ thou = i/1000;+ `& P4 X U9 p$ w5 o
hun = i%1000/100;
% k4 F/ E" t4 m4 C+ m6 _: E$ R ten = i%100/10;
- ~ k1 P8 G: p, C% I* `+ O h data = i%10;
4 L W }! I2 s+ i3 _8 P3 w W0 }& P if (thou+hun==ten+data && thou+hun==(data-thou)*10)
% K6 o9 w$ `" t9 v* R1 j3 ?' X { count++;
: [* Z! W" B6 k- X sum += i;: J& y" K- D5 X1 D( k
}- ]+ R2 s& A" o
}
3 X9 Z) w8 ~/ Y# F3 a" t } |