1.调用函数rwdata(),从IN.dat文件中读取10组数据(m和k值),并嵌套调用primenum函数分别得出array[]数组。请编写函数primenum(int m,int k,int array[]),该函数的功能是:将紧靠m的k个素数存入数组array并在屏幕上显示。最后把结果输出到文件OUT.dat中。 例如,若输入3 9,则应输出5 7 11 13 17 19 23 29 31。
! c0 z( x+ Z* N8 K. F! h3 Z- _: T" f. g 注意:部分程序已经给出。请勿改动主函数main()和输出数据函数rwdata()的内容。( r& z/ I0 s1 q- W. S$ _
【答案】
3 M* C$ @8 l( A void primenum(int m, int k, int array[])
) i4 N0 i+ a* v { int value = m+1;# Q2 j! R, C; [2 i X
int half, n = 0, i;2 g" L6 |3 F# F% }5 n9 K
while(1)
* z2 I1 i( `! r( F { half = value/2;
1 K) V4 i& C4 Q for (i=2; i half)
0 A* A, s1 E$ d i: v2 U0 ?# a { array[n] = value;1 V% @- N) i0 h! m* `4 ?
n++;& \! a% {2 e# O( w8 ^ Q% p
}4 b6 p% W3 V w6 _/ I4 p4 ?
if (n >= k)
8 B1 c; q7 ]0 x break;
+ ]9 O2 i9 h. v* l8 a value++;
2 s( T* M: ?8 v3 J: U/ i }
: o' Z3 q+ p$ b3 ~$ Z, I5 ? }
# r+ l# X) \6 [! L7 H$ E Z$ V 2.在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。函数RData()读取这200个数存放到数组original中。请编写函数numAscend(),其功能是:要求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。最后调用函数WData(),把结果result输出到文件OUT.dat中。 M) K# W6 [ d4 t( A# N* Y' A
例如,处理前:6012 5099 9012 7025 8088
' D2 ?9 z/ J- A; k3 f& j# L0 K, N 处理后:9012 6012 7025 8088 5099 H$ F2 U* ], `8 ^: A# g: K* }8 Q
【答案】
0 d) `. M% a. Z8 n void numascend()4 I# y2 I" O8 ]0 q+ _
{ int i, j, data;
5 P7 q' N$ w# Y. m5 [4 v* m6 z4 b$ @+ [; ?0 m8 t
for (i=0; i |