问题 多项选择题

fclose (fp);

答案

参考答案:
void SortDat()
{ int i,j;
PRO xy;
for(i=0;i〈MAX-A;i++)
for (j=i+A;j〈MAX;j++)
if (strcmp (sell[i].dm, sell[j].dm)>0) /*按产品代码从小到大进行排列*/
{ xy=sell[i];
sell[i]=sell[j];
sell[j]=xy;
}
else if(strcmp(sell[i].dm, sell[j].dm)==0) /*若产品代码相同,则按金额从小到大进行排列*/
if(sell[i].je>sell[j].je)
{
xy=sell[i];
sell[i]=sell[j];
sell[j]=xy;
}
}

解析: 本题是有关结构体数组的排序问题。可以用选择法来实现,即用第一个元素的产品代码依次和它后面的元素的产品代码进行比较,如果发现当前元素的产品代码比后面的某个元素的产品代码对应位置的字符的ASCII码大(这里用到了字符串比较函数strcmp()),则交换这两个元素的位置,继续和后面的其他元素进行比较,最终在第一个元素中存放的是产品代码最小的元素,以此类推,就实现了从小到大排序的功能。
注意:这里要进行交换的是两个结构体变量,而不是它们的某一个域,因此,要借助第三个结构体变量来充当中间容器。若发现产品代码是相同的,则要按照金额从小到大进行排序。

单项选择题
判断题