题目:
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例
Hello World Here I Come
输出样例
Come I Here World Hello
我的错误输出
Come I Heree World Hello
我的有问题的代码:
#include <stdio.h>
int main()
{
char the,lines[20][20],gtx[84];
int n=0,m=0,i=0;
gets(gtx);//输入一段话,准备一个字一个字分析
while(gtx[i]!='\0')
{
if((gtx[i]>='A' && gtx[i]<='Z')||(gtx[i]>='a' && gtx[i]<='z'))
{while((gtx[i]>='A'&>x[i]<='Z')||(gtx[i]>='a'&>x[i]<='z'))
{
lines[n][m]=gtx[i];
m++;
i++;
}
}//如果是英文字符,就收入一个数组中
else if(gtx[i]==' ')
{
lines[n][m+1]='\0';
n++;
m=0;
i++;
}//如果是空格,就结束这个数组的输入,跳转到下一个数组
}
for(int k=n;k>=0;k--)
{
if(k>0)
printf("%s ",lines[k]);
else if(k==0)
printf("%s",lines[k]);
}//按照倒序输出单词组
}
举例子
输入
love the world
ew ew
输出
world the love2
ewl ew4
球邱,哪里出的事啊
你在执行lines[n][m]=gtx[i];之后,已经m++了,此时m已经指向了字符串的结尾,所以你应该lines[n][m]='\0';,而不是lines[n][m+1]='\0';
如果之前恰好m的位置本来就是0,那就正常输出,而如果恰好哪里是个随机数,你就多输出了个乱码