我的自己的思路是先数出有几个空格,然后令count >= 1,从后往前输出单词,最后输出第一个单词,虽然也AC了,但我写起来挺麻烦的……
可以学习这种解法:
#include<cstdio>
const int length = 81;
char sen[length][length] = {};
int main()
{
int i = 0;
//一个计数的过程,利用scanf遇空格视为结束输入来计数!!!
while(scanf("%s", sen[i]) != EOF)
{
i++;
}
//直接从后往前相当简单,不用像我还要判断空格TAT
for(int j = i-1; j >= 0; j--)
{
if(j>0)
printf("%s ",sen[j]);
else
printf("%s",sen[j]);
}
return 0;
}
另一种解法也不错:
#include<stdio.h>
#include<string.h>
int main()
{
char str[90];
int i=0;
int len;
int r=0,h=0; //r为行,h为列
char ans[90][90]; //把一句话转成一个二维数组
cin.getline(str); //PTA用不了gets,只能用这个
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]!=' ')
{
ans[r][h]=str[i];
h++;
}
else
{
ans[r][h]='\0'; //注意每个单词的末尾都要存'\0'
r=r+1; //注意换行,列重新变成0
h=0;
}
}
ans[r][h]='\0'; //最后一个单词也要加'\0'
for(i=r;i>=0;i--) //从最后开始输出
{
printf("%s",ans[i]);
if(i>0)printf(" ");
}