【答案】
int jsSort()
{
int i,j; /*定义循环控制变量*/
int cnt=0; /*定义计数器变量,并对其初始化*/
Data temp; /*数据交换时的暂存变量,这里是一个Data类型的结构体变量*/
for(i=0;i<200;i++)
if(aa[i].x1>aa[i].x2+aa[i].x3) /*如果每组数据中的第一个数大于第二个数加第三个数之和*/
{
bb[cnt]=aa[i]; /*把满足条件的数据存入结构体数组bb中*/
cnt++; /*同时统计满足条件的数据的个数*/
}
for(i=0;i<cnt-1;i++) /*对数组bb中的数按照每组数据的第一个数加第三个数之和的大小进行升序排列*/
for(j=i+1;j<cnt;j++)
if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3)
{
temp=bb[i];
bb[i]=bb[j];
bb[j]=temp;
}
return cnt; /*返回满足条件的数据的组数*/
}
【解析】本题考查对结构体数组中元素的各个成员的操作。
首先利用一个for循环来依次取得结构体数组中的各个元素,然后按照题目要求对当前元素的各个域进行条件判断,如果条件(第一个数大于第二个数加第三个数之和)成立,则将其存放到数组bb中去。
再按照"每组数据中的第二个数加第三个数之和的大小"进行从小到大的排序。