2006年9月全國等級(jí)考試三級(jí)c語言上機(jī)題庫(五)

字號(hào):

★☆題目5(無憂id 8整數(shù)排序題)
    在文件in.dat中有200個(gè)正整數(shù),且每個(gè)數(shù)均在1000至9999之間。函數(shù)ReadDat()讀取這200個(gè)數(shù)存放到數(shù)組aa中。請(qǐng)編制函數(shù)jsSort(),其函數(shù)的功能是:要求按每個(gè)數(shù)的后三位的大小進(jìn)行升序排列,然后取出滿足此條件的前10個(gè)數(shù)依次存入數(shù)組bb中,如果后三位的數(shù)值相等,則按原先的數(shù)值進(jìn)行降序排列。最后調(diào)用函數(shù)WriteDat()把結(jié)果bb輸出到文件out.dat中。
    例:處理前 6012 5099 9012 7025 8088
    處理后 9012 6012 7025 8088 5099
    部分源程序存在文件prog1.c中。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
    #include
    #include
    #include
    int aa[200],bb[10];
    void jsSort()
    {
    int i,j,data;
    for(i=0;i<199;i++)
    for(j=i+1;j<200;j++)
    if(aa[i]%1000>aa[j]%1000||aa[i]%1000==aa[j]%1000&&aa[i]{data=aa[i];aa[i]=aa[j];aa[j]=data;}
    for(i=0;i<10;i++)
    bb[i]=aa[i];
    }
    void main()
    {
    readDat();
    jsSort();
    writeDat();
    }
    readDat()
    {
    FILE *in;
    int i;
    in=fopen("in.dat","r");
    for(i=0; i<200; i++) fscanf(in,"%d,",&aa[i]);
    fclose(in);
    }
    writeDat()
    {
    FILE *out;
    int i;
    clrscr();
    out=fopen("out.dat","w");
    for(i=0; i<10; i++){
    printf(" %d",bb[i]);
    fprintf(out,"%d\n",bb[i]);
    }
    fclose(out);
    }