谁帮我解答下这个简单程序中的一个小疑问

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:18:44
函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。请编制函数jsSort(),其函数功能以行为对字符串变量的下标为奇数的字符按起ASCII值从小到大的顺序排序,【排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writedat()把结果xx输出到文件out.dat中例如位置0 1 2 3 4 5 6 7
原字符串a b c d e f g h
处理后字符串 a h c f e d g b
答案中jsSort()函数是这样的
char xx[20][80];

void jsSort()
{int i,j,k,strl;
char ch;
for(i=0;i<20;i++)
{ strl=strlen(xx[i]);
for(j=1;j<strl-2;j=j+2)
for(k=j+2;k<strl;k=k+2)
if(xx[i][j]>xx[i][k]) { ch=xx[i][j];xx[i][j]=xx[i][k];xx[i][k]=ch;}
}
}

请问答案中for循环j<str-2,为什么是这样的,为什么不是j<=strl-2呢?如果求出的strl是个奇数和偶数不是会不一样吗那样会有什么区别

这是南开百题中的一道题吧?我过三级的时候见过,百题中的标准答案其实也不太简洁,你说的那个地方,你的做法会丢掉一些符合条件的解,建议你掌握好冒泡法排序。三级上机肯定会用的着的。