2006年9月全國(guó)等級(jí)考試三級(jí)c語(yǔ)言上機(jī)題庫(kù)(七十五)

字號(hào):

★☆題目75 (無(wú)憂ID 10 整數(shù)各位數(shù)運(yùn)算及排序題)
    在文件in.dat中有200組數(shù)據(jù),每組有3個(gè)數(shù),每個(gè)數(shù)均是三位數(shù)。函數(shù)ReadDat()讀取這200組數(shù)據(jù)存放到結(jié)構(gòu)數(shù)組aa中,請(qǐng)編制函數(shù)jsSort(),其函數(shù)的功能是:要求在200組數(shù)據(jù)中找出條件為每組中的第一個(gè)數(shù)大于第二個(gè)數(shù)加第三個(gè)數(shù)的和,其中滿足條件的組數(shù)作為函數(shù)jsSort()的返回值,同時(shí)把滿足條件的數(shù)據(jù)存入結(jié)構(gòu)數(shù)組bb中,再對(duì)bb中的數(shù)據(jù)按照每組數(shù)據(jù)的第一個(gè)數(shù)加第三個(gè)之和的大小進(jìn)行升序排列(第一個(gè)數(shù)加第三個(gè)數(shù)的和均不相等),排序后的結(jié)果仍重新存入結(jié)構(gòu)數(shù)組bb中,最后調(diào)用函數(shù)writeDat()把結(jié)果bb輸出到
    文件out.dat中。
    部分源程序存在文件prog1.c中。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
    #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(); /*返回滿足條件的個(gè)數(shù)*/
    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 第一個(gè)數(shù)+第三個(gè)數(shù)=%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);
    }