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

字號:

★☆題目75 (無憂ID 10 整數各位數運算及排序題)
    在文件in.dat中有200組數據,每組有3個數,每個數均是三位數。函數ReadDat()讀取這200組數據存放到結構數組aa中,請編制函數jsSort(),其函數的功能是:要求在200組數據中找出條件為每組中的第一個數大于第二個數加第三個數的和,其中滿足條件的組數作為函數jsSort()的返回值,同時把滿足條件的數據存入結構數組bb中,再對bb中的數據按照每組數據的第一個數加第三個之和的大小進行升序排列(第一個數加第三個數的和均不相等),排序后的結果仍重新存入結構數組bb中,最后調用函數writeDat()把結果bb輸出到
    文件out.dat中。
    部分源程序存在文件prog1.c中。
    請勿改動主函數main()、讀數據函數ReadDat()和輸出數據函數WriteDat()的內容。
    #include
    #include
    #include
    typedef struct{
    int x1,x2,x3;
    }data;
    data aa[200],bb[200];
    int jsSort()
    { int i,j,cnt=0;
    data xy;
    for(i=0;i<200;i++)
    if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i];
    for(i=0;i    for(j=i+1;j    if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}
    return cnt;
    }
    void main()
    {
    int count;
    readDat();
    count=jsSort(); /*返回滿足條件的個數*/
    writeDat(count);
    }
    readDat()
    {
    FILE *in;
    int i;
    in=fopen("in.dat","r");
    for(i=0; i<200; i++)
    fscanf(in,"%d %d %d",&aa[i].x1,&aa[i].x2,&aa[i].x3);
    fclose(in);
    }
    writeDat(int count)
    {
    FILE *out;
    int i;
    clrscr();
    out=fopen("out.dat","w");
    for(i=0; i    printf("%d,%d,%d 第一個數+第三個數=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x1+bb[i].x3);
    fprintf(out,"%d %d %d\n",bb[i].x1,bb[i].x2,bb[i].x3);
    }
    fclose(out);
    }