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

admin2022-10-08  78

问题 在文件IN.DAT中有200个四位正整数。函数ReadData()的功能是读取这200个数存放到数组inBuf[]中。请编制函数select(),其功能是t要求按照每个数的后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*(string.h>
    #include
    #define INCOUNT 200
    #define OUTCOUNT 10
    int inBuf[INCOUNT],outBuf[OUTCOUNT];
    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    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,cE2].temp; for(i=0;ic[1]) { temp=inBufEi]; inBufEi]=inBuf[j]; inBufEj]=temp; } } for(i=0;i
解析 本题主要考查数位分解及排序。分解四位数后3位的方法是将此四位数inBuf对1000求余,所得余数即为试数据的后3位。本题排序的思想是,将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据失,则将两数据进行交换。从而使得前面的数据小于后面的数据,达到从小到大排序的目的。
转载请注明原文地址:https://kaotiyun.com/show/UUKZ777K
0

最新回复(0)