【答案】
void jsSort()
{
int i,j,k; /*定义计数器变量*/
int str,half; /*定义存储字符串长度的变量*/
char temp; /*定义数据交换时的暂存变量*/
for(i=0;i<20;i++) /*逐行对数据进行处理*/ {
str=strlen(xx[i]); /*求字符串的长度*/
half=str/2; /*确定各行中字符串的中间位置*/
for(j=0;j<half-1;j++) /*对中间位置以前的字符进行升序排序*/
for(k=j+1;k<half;k++)
if(xx[i][j]>xx[i][k])
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
for(j=half-1,k=str-1;j>=0;j--,k--) /*将左边部分与右边部分对应的字符进行交换*/
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
【解析】本题考查对二维字符数组的处理。
首先要求得各行字符串的长度(利用求字符串长度的strlen()函数),然后利用循环结构逐个访问各行中的每一个字符。
在本题中,应先确定各行中字符串的中间位置,然后用选择法先对中间位置以前的字符进行升序排序。接着把中间位置前的一个位置定为初始位置,字符串中的最后一个位置也视为初始位置,使两个位置所对应的字符进行交换,交换过后,这两个对应位置(也就是下标值)分别前移,再进行对应位置字符的交换。