C语言计算机3(和谐)级题,帮忙 :删除字符串中的小写字母o,并对换字母o左右字符串,我看不明白答案啊
C语言计算机3(和谐)级题,帮忙 :删除字符串中的小写字母o,并对换字母o左右字符串,我看不明白答案啊题目:函数READDAT()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编制函数STROR(),其函数功能是:以行为单位把字符串中的所有小写字母O左边的字符串内容移到该串的右边存放,然后并把小写字母O删除,余下的字符串内容移到已处理字符串的左边存放.最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT()把结果XX输出到文件OUT.DAT中.
例如:原文:You can create an index on any field.
you have the correct record.
结果: n any field.You can create an index
rd.yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格.
答案如下:类型:字符串(单词)的倒置和删除。
void StrOR(void) /*标准答案*/
{
int i,j,k; /*定义循环控制变量*/
int index,str; /*定义变量*/
char temp; /*暂存变量*/
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++)
xx[i][k]=xx[i][k+1];
xx[i][str-1]=' ';
index=j; /*记录下最后一个o所在的位置*/
}
for(j=str-1;j>=index;j--) /*最后一个o右侧的所有字符都移到已处理字符串的左边*/
{
temp=xx[i][str-1];
for(k=str-1;k>0;k--)
xx[i][k]=xx[i][k-1];
xx[i][0]=temp;
}
}
}
删除o还是大概可以看懂啊,就是最后的对换的地方用了J的for循环,可是{红色字体下面的对换也没用到j啊?就是
{ch=xx[I][strl-1];
for(k=strl-1;k>0;k--)
xx[I][k]=xx[I][k-1];
xx[I][0]=ch;}
}
这块也没用到J啊?怎么回事啊