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

admin2012-07-20  21

问题 在文件IN.DAT中有200个四位正整数。函数ReadData()的功能是读取这200个数存放到数组inBuf[]中。请编制函数select(),其功能是;要求按照每个数的后3位的大小进行升序排列,如果出现后3位相等的数,则对这些数按原始四位数顺序进行排列。将排序后的前10个数存人数组outBuf[]中,最后调用函数WriteData()把结果outBuf[]输出到文件OUT.DAT中。
例如;处理前  7011  9011  5011  1015  9011  5019
处理后  7011  9011  5011  9011  1015  5019
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。
试题程序;
    #include
    #include
    #include
    #define INCOUNT 200
    #define OUTCOUNT 1 0
  int inBuf[INCOUNT],  outBuf E 0UTCOUNT];
  void ReadData();
  void WriteData();
  void select()
  {
  }
  void main()
  {
    ReadData();
    select();
    WriteData();
   }
    void ReadData()
{
  FILE*in;
  int i;
  in=fopen("IN.DAT","r");
  for(i=0;i  fscanf(in,"%d,",&inBuf);
  fclose(in);
}
void WriteData()
{
  FILE*out;
  int i;
  out=fopen("0UT.DAT","w");
  system("CLS");
  for(i=0;i<0UTCOUNT;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;ic[1]) { temp=inBuf[i]; inBuf[i]=inBuf[j]; inBuf[j]=temp; } } for(i=0;i
解析 本题主要考查数位分解及排序。分解四位数后3位的方法是将此四位数inBuf对1000求余,所得余数即为该数据的后3位。本题排序的思想是,将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。
转载请注明原文地址:https://jikaoti.com/ti/n8R7FFFM
0

最新回复(0)