C++ 要求输入this is a test 输出test a is this

#include<iostream>
#include<string>
using namespace std;

int main()
{
char a[]= "this is a test";
int n=strlen(a);
int temp=n;
int i;
for(i=n;i>=0;i--)
{
if (a[i]==' ')
{
for(int j=i+1;j<temp;j++)

cout<<a[j];
int temp =i;

cout<<" ";
}
}

system("pause");
return 0;
}
我写的代码,得不到正确结果,找人解释修改下
temp本来就已经定义了,不能在循环里再定肆粗义(否则作为局部变量,会在本次循环结束之后消失的),所裂仿镇以将int去掉,另外大悔if语句的判断范围太窄,this单词无法输出。
#include<iostream>
#include<string>
using namespace std;

int main()
{
char a[]= "this is a test";
int n=strlen(a);
int temp=n;
int i;
for(i=n;i>=-1;i--)
{
if (a[i]==' '|| i== -1)
{
for(int j=i+1;j<temp;j++)

cout<<a[j];
temp =i;

cout<<" ";
}
}

system("pause");
return 0;
}
1 #include<iostream>
2 #include <stdlib.h>
3 #include <string.h>
4 using namespace std;
5
6 int main ()
7 {
8 char a[] = "this is a test";
9 int n = strlen (a);
10 int temp = n;
11
12
13 int i;
14 for (i = n; i >= 0; i--)
15 {
16 if (a[i] == ' ')
17 {
18 for (int j = i + 1; j < temp; j++)
19 {
20 cout << a[j];
21 }
22
23 temp = i ;
24 cout << " ";
25 }
26 else if( i == 0 )
27 {
28 for (int j = i; j < temp; j++)
29 {
30 cout << a[j];
31 }
32
33 }
34 }
35 cout << endl;
36
37 return 0;
38 }
我是在你的基础上改的:
主要原因在下面:1、int temp =i;为什么要再定义一个变量呢?
2、皮吵橘你没有考虑到,等到执行到最后的时候,第一个字符不是空格,那么怎么打印出来第一个单词呢?
以上是在碰岩linux下执行的。运行燃团一次结果,再仔细考虑一下。
直接逆置字符串灶亏伍就是(不管隐或'\0').
for(i = 0, j = strlen(s)-1; i < strlen(s)/2; ++i, --j)
{
t = s[i];
s[i] = s[j];
s[j] = t;
}
边界稍空行微验证一下就是.