江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
全国计算机等级考试上机题库2

在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。函数RData()读取这200个数存放到数组original中。请编写函数numAscend(),其功能是:要求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。最后调用函数WData(),把结果result输出到文件OUT.dat中。
例如,处理前:6012 5099 9012 7025 8088
处理后:9012 6012 7025 8088 5099
注意:部分程序已给出。请勿改动主函数main()、读数据函数RData()和输出数据函数WData()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int  original[200], result[10];
void numascend()
{

}
void RData()
{ FILE  *in;
 int  i;
 in = fopen("IN.dat", "r");
 for (i=0; i<200; i++)
  fscanf(in, "%d,", &original[i]);
 fclose(in);
}
void WData()
{ FILE  *out;
 int  i;
 out = fopen("OUT.dat", "w");
 for (i=0; i<10; i++)
 { printf(" %d", result[i]);
  fprintf(out, "%d\n", result[i]);
 }
 fclose(out);
}
void main()
{ RData();
 numascend();
 WData();
}