37.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数RData()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WData(),把结果输出到OUT.dat文件中。 【答案】) n: G! b+ m9 ]4 c' H
void SortDat()% Q) k* a7 t# j, u$ @# E
{ int i, j;* q4 f1 l5 Q- x/ N7 |% E/ ~% i" p
PRO temp;
3 v9 J( Q8 }# k* q for (i=0; i sell[j].sum)& Z1 E/ u2 u' C1 v8 _
{ temp = sell;
: s( V6 t5 l1 P# O& L sell = sell[j];, x- T7 t Q# s! g
sell[j] = temp;
! }9 S# c" X5 W1 G( | }0 l& C% x" q/ z, t! U8 E
}' X" r0 \- T# d7 l& N: O# Y) f
}
8 C5 {. E: z+ M 38.已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数RData()读取若干个正整数并存入数组original中。请编写函数CalValue(),其功能要求是:①求出这个文件中共有多少个正整数totNum;②求这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totave。最后调用函数WData()把所求的结果输出到OUT.dat文件中。+ x( k4 o! d" A4 ^
【答案】
$ T7 p: e1 I' L0 Z: v* b3 b* d+ d" h1 {& T void CalValue(void)
" c8 G7 v" ~. l9 V+ \ { int i, thou, hun, ten, data;3 u8 x# N% {6 i' A4 z
int ab;
' l3 r9 ^& ^$ d4 `' d long sum = 0;
" d% ?% C7 C) U- O' g9 y& V for (i=0; i 0): K/ x" s- }) d _' H# t9 L
totNum++;
- ^8 D! t; P/ k. j- P thou = original/1000;( U8 [# K5 u8 _9 z
hun = original%1000/100;; y! o) U' |1 L X
ten = original%100/10;
, d. M+ d2 T! V: R% s9 S data = original%10;0 N G) v/ U; A1 [
ab = thou+hun+ten+data;
8 ?3 V2 \" t, i' ^ if (ab%2 == 0)1 |5 P9 z7 h" B1 m6 G+ C" W
{ totCnt++;5 J% @6 t9 Z2 X
sum = sum+original;0 V/ D) D% b2 }7 Y: I
}
' D: P& p f2 A; ^* P- G7 {0 s }8 ]0 p! E8 Z% h. r3 c
totave = (double)sum/totCnt;9 A2 q# I$ m* V
}8 [& u7 {8 q' w" S) N+ ^
39.下列程序的功能是:计算出自然数SIX和NINE、它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和sum,请编写函数countValue()实现程序的要求。最后调用函数WData(),把结果cnt和sum,输出到OUT.dat文件中。
; D1 k1 h. i. E3 ] 其中的S、I、X、N、E各代表一个十进制数。7 W \& w, b. d ?) D
【答案】
# ^7 B9 Y2 }5 o) K$ l/ R void countValue()
1 o- {! D6 ]; \ { int S, I, X, N, E;
`( j1 I9 h# E* S+ f! [ int SIX, NINE;
- V5 c' P9 Z9 o# J6 n
4 F7 V6 K% g# Q$ u7 H for (S=1; S |