已知数据文件inl.dat和in2.dat中分别存有100个两位十进制数,并且已调用读函数ReadDat()把这两个文件中的数存入数组a和b中,请编写函数jsVal().实现的功能是依次对数组a和b中的数按条件重新组成一个新数,并依次存人数组c中,再对数组

admin2013-12-10  20

问题 已知数据文件inl.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
【试题程序】
    #include
    #define MAX 100
    unsigned int a[MAX],b[MAX]。e[MAX];
    int cnt=0;   /*存放符合条件数的个数*/
    void writeDat();
    void jsVal()
    {
    }
    void readDat()
    {
    int i;
    FILE*fp;
    fp=fopen(“inl.dat”。“r”);
    for(i=0;i    fscanf(fp.“%d”,&a);
    fclose(fp);
    fp=fopen(“in2.dat”,“r”);
    for(i=0;i    fseanf(fp,“%d..,&b);
fclose(fp);
}
void main()
{
  int i;
  for(i=0;i=0;
  readDat();
  jsVal();
  for(i=0;i>0Ii++)
    printf(“%d\n”,c);
  writeDat();
}
void writeDat()
{
  FILE*fp;
  int i;
  fp=fopen(“out.dat”,“W”);
  for(i=0;i>0,i++)
    fprintf(fp,“%d\n”,c);
  fclose(fp);
}

选项

答案void jsVal() {int i,j; /*定义变量*/ int temp; for(i=0;i<(MAX;++) if(a[i]%2==1&&b[i]%2==0|| a[i]%2==0&&b[i]%2==1) /*判断条件*/ c[cnt++]=(aEi3<<8)+bEi3; for(i=0;ie[j-]) {temp=c[i]; c[i]=cEj]; c[j]一temp! ) )

解析
转载请注明原文地址:https://kaotiyun.com/show/EElZ777K
0

最新回复(0)