【答案】
void StrOR(void)
{
int i,j,k; /*定义循环控制变量*/
int index,str; /*定义变量*/
char ch; /*定义暂存变量*/
for(i=0;i<maxline;i++) /*逐行获取字符数据进行处理*/
{
str=strlen(xx[i]); /*求各行的长度*/
index=str;
for(j=0;j<str;j++)
/*将一行中所有小写字母o右边的字符依次向左移一位,并删除字母o*/
if(xx[i][j]=='o')
{
for(k=j;k<str-1;k++) /*o右边的字符串左移一位*/
xx[i][k]=xx[i][k+1];
xx[i][str-1]=' ';
index=j; /*记录下最后一个o所在的位置*/
}
for(j=str-1;j>=index;j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边*/
{
ch=xx[i][str-1];
for(k=str-1;k>0;k--)
xx[i][k]=xx[i][k-1];
xx[i][0]=ch;
}
}
}
【解析】在本题中,以行作为字符串处理的基本单位。首先,确定该行字符串的长度。然后使用循环结构依次对字符进行处理。先找到字符o,将o右侧的字符依次向左移,这个操作同时能够删除字符o。记录下最后一个o所在的位置,在这个o右侧的所有字符都要移到已处理字符串的左边,这个过程也是使用循环来完成的。最后,对文章中的每一行都进行这一操作即可。