已知数据文件IN1.DAT和IN2.DAT中分别存有100个两位十进制数,并且已调用读函数readDat()把这两个文件中的数存入数组a和b中,请考生编制一个函数jsVal(),实现的功能是依次对数组a和b中的数按条件重新组成一个新数并依次存入数组c中,再对数组c中的数按从小到大的顺序进行排序,最后调用输出函数writeDat()把结果c输出到文件OUT.DAT中。
组成新数的条件:如果数组a和b中相同下标位置的数必须符合一个是偶数,另一个是奇数,则数组a中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数依次存入数组c中。
例如:a:12 33 24 15 21
b:32 35 17 15 18
c:6161 5394
排序后c:5394 6161
注意:部分源程序存在文件PROG1.C文件中。程序中已定义:a[100]、b[100]和c[100]。请勿改动数据文件IN1.DAT和IN2.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
【试题程序】
#include <stdio.h>
#define MAX 100
unsigned int a[MAX], b[MAX], c[MAX];
int cnt =0; /* 存放符合条件数的个数 */
void writeDat();
void jsVal()
{
}
void readDat()
{
int i ;
FILE *fp ;
fp =fopen("IN1.DAT", "r") ;
for(i =0 ; i <MAX ; i++)
fscanf(fp, "%d", &a[i]) ;
fclose(fp) ;
fp =fopen("IN2.DAT", "r") ;
for(i =0 ; i <MAX ; i++)
fscanf(fp, "%d", &b[i]) ;
fclose(fp) ;
}
void main()
{
int i ;
for(i =0 ; i <MAX ; i++)
c[i] =0;
readDat() ;
jsVal() ;
for(i =0 ; i <MAX; i++)
if (c[i] > 0)
printf("%d
writeDat() ;
}
void writeDat()
{
FILE *fp ;
int i ;
fp =fopen("OUT.DAT", "w") ;
for(i =0 ; i <MAX; i++)
if (c[i] > 0)
fprintf(fp, "%d
fclose(fp) ;
}