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

admin2021-02-03  39

问题 在文件IN.DAT中有200个四位正整数。函数ReadData()功能是读取这200个数存放到数组inBuf[]中。请编制函数select(),其功能是:要求按每个数的后3位的大小进行升序排列,如果出现后3位为相等的数,则对这些数按原始四位数进行升序排列。将排序后的前10个数存人到数组outBuf[]中,最后调用函数WriteData()把原始结果outBuf[]输出到文件OUT.DAT中。
  例如:处理前3234 4234 2234 1234
    处理后1 234  2234  3234 4234
    注意:部分源程序已给出。
    请勿改动主函数main()、读函数ReadData()和写函数Writedata()的内容。
    试题程序:
    #include
    #include
    #include
    #define INCOUNT 200
    #defineOUTCOUNT 10
    int inBufEINCOUNT],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    fscanf(in,“%d,”,&inBuf);
    felose(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”,outBufEi]);
    }
    fclose(out);
}

选项

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

最新回复(0)