在数据文件in.dat中存放有200组数据,每组有3个数,每个数均是三位数。函数readDat()实现读取这200组数据并存放到结构体数组aa中。请编写函数jsSort(),其功能是:要求在200组数据中找出每组数据中的第一个数大于第二个数与第三个数之和.

admin2013-12-10  28

问题 在数据文件in.dat中存放有200组数据,每组有3个数,每个数均是三位数。函数readDat()实现读取这200组数据并存放到结构体数组aa中。请编写函数jsSort(),其功能是:要求在200组数据中找出每组数据中的第一个数大于第二个数与第三个数之和.其中满足条件的个数作为函数jsSort()的返回值,同时把满足条件的数据存入结构体数组bb中,再对bb中的数据按照每组数据的第一个数与第三个数之和的大小进行升序排列(第一个数与第三个数的和均不相等)。排序后的结果仍重新存人结构体数组bb中,最后通过调用函数writeDat(),把结果bb输出到out.dat文件中。
【试题程序】
    #include
    #include
    void readDat();
    void writeDat(int count);
    typedef struct{
    int x1,x2,x3;
    }Data;
    Data aa[200],bb[200];
    int jsSort()
    {
    }
    void main()
    {
    int count;
    readDat();
    count=jsSort(); /*返回满足条件的个数*/
    writeDat(count);
    }
    void readDat()
    {
    FILE*in;
    int i;
    in=fopen(“in.dat”,“r”);
    for(i=0;i<200;i++)
    fscanf(in,“%d,%d,%d”,&aa.x1,
&aa.x2,&aa.x3);
    fclose(in);
    }
    void writeDat(int count)
    {
    FILE*out;
    int i;
    out=fopen(“out.dat”。“W”);
    for(i=0;i    printf(“%d,%d,%d第一个数+第三
个数=%d\n”,bb.x1,bb.x2,bb.x3,
bbli].x1+bb.x3);
    fprintf(out。”%d,%d,9/6d\n”,bb.x1,
bb.x2。bb.x3);
    }
    fclose(out);
    }

选项

答案int jsSort() {int i.j; /*定义变量*/ Data temp; int cnt=0; for(i=0;i<200;i++) if(aa[i].xlS>aa[i].x2+aa[i].x3) /*判断条件R-/ bbEcnt++]=aaEi]l for(i=0;ibb[i].x1十 bb[j].x3) {temp=bb[i]; bb[i]=bb[j]; bbEj]=temp; } return cnt; /*返回函数值*/ }

解析
转载请注明原文地址:https://kaotiyun.com/show/7ElZ777K
0

最新回复(0)