在线等一个字符串反排序的问题!
作用是把xx这个2维数组的元素以空格(如果原数组中含有其他符号,那么先把符号变成空格)反排序,但是每个单词的字母顺序不变,如; i am a student变换后:student a am i
#include <string.h>
#include <stdio.h>
main()
{ char a[]="i am a student",c[]="you are a student too";
char xx[2][50];
char pp[50],ch[50];
int i,j,k,strl;
strcpy(xx[1],a);
strcpy(xx[2],c);
for(i=0;i<strlen(xx[1]);i++) /* 输出排序前的结果 */
printf("%c",xx[1][i]);
printf("\n");
for(i=0;i<strlen(xx[2]);i++)
printf("%c",xx[2][i]);
for(i=0;i<2;i++)
for(j=0;j<50;j++)
if((xx[i][j]>='A'&&xx[i][j]<='z')||(xx[i][j]>='0'&&xx[i][j]<='9')) xx[i][j]=xx[i][j];
else xx[i][j]=' ';
for(i=0;i<2;i++)
{
strl=strlen(xx[i])-1;
k=1;
while(1)
{
while((xx[i][j]>='A'&&xx[i][j]<='z')||(xx[i][j]>='0'&&xx[i][j]<='9'))
{
for(j=k;j<=0;j--)
pp[j+1]=pp[j];
pp[0]=xx[i][strl];
k++;strl--;
}
strcat(ch,pp);
strcpy(pp," ");
k=1;
if(strl==-1) break;
while(xx[i][j]==' ')
{
for(j=k;j<=0;j--)
pp[j+1]=pp[j];
pp[0]=xx[i][strl];
k++;strl--;
}
strcat(ch,pp);
strcpy(pp," ");
k=0;
if(strl==-1) break;
}
strcpy(xx[i],ch);
}
for(i=0;i<50;i++) /*输出排序后的结果*/
printf("%c",xx[1][i]);
getch();
}
我在程序前边先把xx数组输出了一下,确认xx数组有内容!又在程序最后想输出排序后的结果,可是最后总的输出只有前面xx数组的初始值,排序后的结果没有输出来,编译连接显示正确,我不知道这是怎么回事,
1.这个程序到底有没有实现按空格反排的功能?
2.如果实现了功能,那为什么没有输出?
在线等!