在文件IN.DAT中有200个四位正整数。函数ReadData()功能是读取这200个数存放到数组inBuf[]中。请编制函数select(),其功能是;要求按每个数的后3位的大小进行升序排列,如果出现后3位为相等的数,则对这些数按原始四位数进行升序排列。

admin2012-07-20  31

问题 在文件IN.DAT中有200个四位正整数。函数ReadData()功能是读取这200个数存放到数组inBuf[]中。请编制函数select(),其功能是;要求按每个数的后3位的大小进行升序排列,如果出现后3位为相等的数,则对这些数按原始四位数进行升序排列。将排序后的前10个数存人到数组outBuf[]中,最后调用函数WriteData()把原始结果outBuf[]输出到文件OUT.DAT中。
  例如;处理前3234 4234 2234 1234
  处理后1234  2234  3234 4234
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadData()和写函数Writedata()的内容。
试题程序;
    #include
    #include
    #include
    #define INCOUNT 200
    #define OUTCOUNT 1 0
    int  inBuf[INCOUNT], outBuf[OUTCOUNT];
    void ReadData();
    void WriteData();
    void select()
    {
    }
    void main()
    {
    ReadData();
    select();
    WriteData();
    }
    void ReadData()
    {
    FILE*in;
    int 1;
    in=fopen("IN.DAT","r");
    for(i=0;i    fseanf(in,"%d,",&inBuf);
    fclose(in);
}
void WriteData()
{
  FILE*out;
  int i;
  out=fopen("OUT.DAT","w");
  system("CLS");
  for(i=0;i  {
    printf("i=%d,%d\n",i+1,outBuf);
    fprintf(out,"%d\n",outBuf);
    }
    fclose(out);
}

选项

答案   void select() { int i,j,c[2],temp; for(i=0;iinBuf[j])) { temp=inBuf[i]; inBuf[i]=inBuf[j]; inBuf[j]=temp; } } } for(i=0;i
解析 本题主要考查数位分解及排序。分解四位数后3位的方法是将此四位数inBuf[j]对1000求余,所得余数即为该数据的后3位。本题排序的思想是,将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。
转载请注明原文地址:https://kaotiyun.com/show/i24Z777K
0

最新回复(0)