c编程 字母排序
最近有道题做不出来,是三级数据库还请高手指教
英文文章存放在xx数组中,函数StrOL()的功能以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排,最后把已处理的字符串,按行重新存入字符串xx中,最后调用函数输出。
例: You He Me
I am a student.
结果: Me He You
student a am I
void StrOL(void)
{
inti,j,k,str1,l;
char c;
for(j=0;j<strlen(xx[i]);j++)
{
c=xx[i][j];
if((c>='A'&&c<='Z')||(c>='a'&&c<='z')||c==' '&&(c>=0&&c<=9));
else xx[i][j]==' ';
}
}
for(l=0;l<maxlime;l++)
{
char ch[80]={0};
char pp[80]={0};
strl=strlen(xx[l]);
i=str1-1;
k=1;
while(l)
{
while(((xx[l][i]>='a'&&xx[l][i]<='z')||(xx[l][i]>='A'&&xx[l][i]<='Z')||xx[l] [i]>='0'&&xx[l][i]<='9'))&&i>=0) /*处理字母和数字*/
{
for(j=k;j>=0;j--) /*从当前行的最后一个字母开始取字符,直到遇到空格*/
pp[j+1]=pp[j];
pp[0]=xx[l][i]; /*这两句我有点看不懂,还请高手指教*/
k++;i--;
}
strcat(ch,pp); /*把该单词存放到数组中*/
strcpy(pp,""); /*清空数组pp*/
k=1;
if(i==-1)break; /* 如果处理完了一行,则退出循环 */
while((xx[l][i]<'0'||xx[l][i]>'9')&&(xx[l][i]<'A'||xx[l][i]>'z')&&i>=0) /*处理空格*/
{
for(j=k;j>=0;j--)
pp[j+1]=pp[j];
pp[0]=xx[l][i];
k++;
i--;
}
strcat(ch,pp); /*把空格加到数ch中*/
strcpy(pp,""); /*清空数组pp*/
k=0;
if(i==-1)break; /*如果处理完了一行,则退出循环*/
}
strcpy(xx[l],ch); /*把己处理的字符串仍按行重新存入字符串数组xx中*/
}
}