【考点分析】 本题考查对结构体数组的排序,可以用起泡法来实现。考查的知识点包括:结构体成员运算,字符串比较符,数组排序。
【解题思路】 此题属于销售记录类题型;此类题型主要考查对结构体数组的排序。解题时,应注意3个关键点:关键点1本题为按产品代码从小到大排序;关键点2本题为如果产品代码相同;关键点3本题为按金额从小到大排列。
本题在每次记录比较时,首先用字符串比较函数strcmp比较两个产品的代码,如果返回的值大于0,则这两个产品进行数据交换;如果返回值等于0,再比较两个产品的金额,如果前一个产品的金额大于后一个产品的金额,则这两个产品进行数据交换。
【参考答案】
void SortDat()
{
int i,j; /*定义循环控制变量*/
PRO temp; /*定义数据交换时的暂存变量(这里是PRO类型的结构体变量)*/
for(i=0;i<99;i++) /*利用选择法进行排序*/
for(j=i+1;j<100;j++)
if (strcmp(sell[i].dm,sell[j].dm)>0) /*按产品代码从小到大进行排列*/
{
temp=sell[i];
sell [i]=sell[j];
sell[j]=temp;
}
else if(strcmp(sell[i].dm,sell[j].dm)==0) /*若产品代码相同,则按金额从小到大进行排列*/
if(sell[i].je>sell[j].je)
{
temp=sell[i];
sell[i]=sell[j];
sell[j]=temp;
}
}
【易错提示】 结构型数据对成员的访问用"."成员运算符;两个字符串的比较用字符串比较函数strcmp();if结构中的逻辑表达式。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |