看看这个c语言函数

来源:百度知道 编辑:UC知道 时间:2024/05/25 21:02:38
void SortDat()
{
int i,j;
PRO flag;
for (i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je<sell[j].je)
{flag=sell[i];
sell[j]=flag;
sell[i]=sell[j];
}
else if (sell[i].je==sell[j].je)
if(strcmp(sell[i].dm,sell[j].dm)<0)
{
flag=sell[i];
sell[j]=flag;
sell[i]=sell[j];
}
}这个函数为什么不对,哪里有问题了,怎么运行结果跟答案不对

void SortDat()
{
int i,j;
PRO flag;

for (i=0;i<99;i++) /*建议这里添加{}*/
for(j=i+1;j<100;j++) /*建议这里添加{}*/
if(sell[i].je<sell[j].je){
flag=sell[i];
/*sell[j]=flag;*/ /*该操作和下面的操作位置反了*/
sell[i]=sell[j];
sell[j]=flag; /*该操作应该在这里执行*/
}
else if (sell[i].je==sell[j].je)/*建议这里添加{}*/
if(strcmp(sell[i].dm,sell[j].dm)<0){
flag=sell[i];
/*sell[j]=flag;*/ /*该操作和下面的操作位置反了*/
sell[i]=sell[j];
sell[j]=flag; /*该操作应该在这里执行*/
}
}
/*建议写代码的时候不要有不良习惯,要把每一个for和if的{}都写出来,虽然空语句和一条操作的可以不写,但是那样很不容易查找问题.别人就更不容易看懂了*/
/*仅仅是建议,觉得不合适就当我什么都没说 ^_^ */

if(sell[i].je<sell[j].je)
{flag=sell[i]; //将sell[i]的值赋给flag
sell[j]=flag; //将flag的值赋给sell[j],此时的sell[j]的值和sell[i]的值一样
sell[i]=sell[j]; //到了这里相当于没有赋值
}
改为:
flag=sell[i]; //将sell[i]的值赋给flag
sell[i]=sell[j]; //将sell[j]的值赋给sell[i],此时的sell[i]的值改变成sell[j]中的值
sell[j]=flag; /