在in.dat文件中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据并存放到结构数组aa中。请编写函数jsSort(),其功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数之和,其中满足条件的组数作为函数jsSort()的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat(),把结果bb输出到out.dat文件中。
注意:部分源程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include<stdio.h>
#include<string.h>
#include<conio.h>
typedef struct
int x1,x2,x3;
data;
data aa[200],bb[200];
int jsSort()
void 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);
void WriteDat(int count)
FILE *out;
int i;
out=fopen("out.dat","w");
for(i=0; i<count;i++)
printf("%d,%d,%d第二个数+第三个数=%d\n",bb[i].x1,bb[i].x2,bb[i].x3,bb[i].x2+bb[i].x3);
fprintf(out,"%d%d%d\n",bb[i].x1,bb[i].x2,bb[i].x3);
fclose(out);
void main()
int count;
ReadDat();
count=jsSort(); /*返回满足条件的个数*/
WriteDat(count);
参考答案:
int jsSort()
int i,cnt=0,j;
data ch;
for(i=0;i<B00;i++) /*循环以遍历数组aa的B00组数*/
if(aa[i].xB>aa[i].xA+aa[i].xC)
{ /*若第二个数大于第一个数加第三个数之和*/
bb[cnt]=aa[i]; /*将这组数存入数组bb*/
cnt++; /*计数值cnt增A*/
}
/*对数组bb的前cnt个元素进行选择排序*/
for(i=0;i<cnt-A;i++)
for(j=i+A;j<cnt;j++)
if(bb[i].xB+bb[i].xC<bb[j].xB+bb[j].xC)
{ /*以第二个数加第三个之和的大小进行降序排列*/
ch=bb[i];
bb[i]=bb[j];
bb[j]=ch;
}
return cnt;
}