61.已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totAve。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。
; S& M' K9 G0 B; p1 Z 【答案】
5 z6 V0 m, X2 n! i6 ] void CalValue(void)
0 w/ E0 ]7 Q) e" l: ?* h { int i, data;5 ]+ u% S4 E) E) q6 }/ V
for (i=0; i 0)
+ h% |) C- E. r) i# w& ? totNum++;
: }' A, c0 [5 R* h data = number>>1;
+ u% b' D7 E) `8 S- b if (data%2)
' W4 z# O' i5 P" g8 Q0 p& S { totCnt++;" I% {' Z4 s7 a) h, _9 B1 u& y1 e
totAve += number; ]6 r- _1 `' c7 K( d! n
}
+ S, W# P( x# Z+ V8 C5 y }
4 p7 J7 E' H9 {8 l+ a9 j, i totAve /= totCnt;
8 E! b/ s4 R" H4 r/ x }
$ \0 l. i/ ?1 p4 ]) h 62.已知数据文件IN.dat中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请编写函数spellNum(),其功能是:把个位数字和千位数字重新组成一个新的二位数(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的二位数(新二位数的十位数字是原四位数的百位数字,新二位数的个位数字是原四位数的十位数字),如果新组成的两个二位数均是偶数并且两个二位数中至少有一个数能被9整除,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.dat文件中。
# O, v( u, L! _9 @: a% f( ]2 i 【答案】
' s* W; V) ? H void spellNum()
7 u6 d. J$ @! |, u0 [ { int i, thou, hun, ten, data, j;
: _7 ~1 Z# B8 T I0 E9 n int ab, cd;
; I8 y* w$ t+ x5 K' i
0 U7 `1 ^( C7 g6 i, t" p8 ` j for (i=0; i |