各位牛人请进来帮小弟我解答下关于C语言的小疑问,下午就要三级模拟上机了,

各位牛人请进来帮我解答下关于C语言的小疑问,下午就要三级模拟上机了,急!!!!
今天上午先去模拟了一次上机,是计算机三级网络技术。


已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:
在a【】中选出符合条件的数字---那个数字的个,十,百,千四个数字两两组成2个新二位数字,其中一个数的十位是原来四位数的千位,个位是其十位;
                    另一个新数的十位是原来四位数的个位,个位是其百位。
如果这个四位数组成的两个新数均为素数且都不为零。则把这个四位数从大到小存入数组b[]中。
最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
        注意:部分源程序存在文件prog1.c中。
        程序中已定义数组:a[200],b[200],已定义变量:cnt
        请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。


#include   <stdio.h> ;
#define   MAX     200
int   a[MAX],   b[MAX],   cnt=0;
  int   isprime(int   p)

{
    int   i=0;
    for(i=0;i <p/2;i++)

    {
          if(p%i==0)
              return   0;
          else
              return     1;
      }
}

void   jsVal()
{
    int   g=0,s=0,b=0,q=0;
    int   m=0,n=0,x=0,y=0,data=0;
    int   ab=0,cd=0;
    for(m=0;m <200;m++)
      {
          q=a[m]/1000;
          b=a[m]%1000/100;
          s=a[m]%100/10;
          g=a[m]%10;
          ab=q*10+s;
          cd=g*10+b;
          if(isprime(ab)&&isprime(cd)&&ab!=0&&cd!=0)
              {
                  b[cnt]=a[m];
                  cnt++;
              }
        }
    for(x=0;x <cnt-1;x++)
      for(y=x+1;y <cnt;y++)
          if(b[x] <b[y])
              {
                data=b[x];
                b[x]=b[y];
                b[y]=data;
              }

  }

void   readDat()
{
    int   i   ;
    FILE   *fp   ;
    fp   =   fopen( "in.dat ",   "r "   ;
    for(i   =   0   ;   i   <   MAX   ;   i++)   fscanf(fp,   "%d ",   &a)   ;
    fclose(fp)   ;
}

void   main()
{
    int   i   ;
    readDat()   ;
    jsVal()   ;
    printf( "满足条件的数=%d\n ",   cnt)   ;
    for(i   =   0   ;   i   <   cnt   ;   i++)   printf( "%d   ",   b)   ;
    printf( "\n "   ;
    writeDat()   ;
}

writeDat()
{
    FILE   *fp   ;