题目描述
对于每个单词列表,输出一行,把每个单词都反转而不改变单词的顺序。此问题包含多个测试用例!多输入的第一行是整数N。每个输入块的格式都在问题描述中。
输入
你将获得一些测试用例。第一行包含一个正整数,表示要遵循的案例数。每个案例都在一行中给出,该行包含由一个空格分隔的单词列表,每个单词仅包含大写和小写字母。
输出
对于每个测试用例,请在一行上输出
样例输入 Copy
3 I am happy today To be or not to be I want to win the practice contest
样例输出 Copy
I ma yppah yadot oT eb ro ton ot eb I tnaw ot niw eht ecitcarp tsetnoc
提示:遇到字母入栈,遇到空格使先前入栈的字母出栈
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node
{
char s[9999];
int top;
}stack;
void push(stack *p,char c);
char pop(stack *p);
int isempty(stack p);
int main()
{
char c[9999];
stack p;
p.top=0;
int t;
scanf("%d",&t);
getchar();
while(t>0)
{
gets(c);
int len=strlen(c);
for(int i=0;i<len;i++)
{
if(c[i]!=' ')
{
push(&p,c[i]);
}
if(c[i]==' ')
{
while(isempty(p)==1)
{
printf("%c",pop(&p));
}
printf(" ");
}
}
while(isempty(p)==1)
printf("%c",pop(&p));
printf("\n");
t--;
}
return 0;
}
void push(stack *p,char c)
{
p->top++;
p->s[p->top]=c;
}
char pop(stack *p)
{
char c=p->s[p->top];
p->top--;
return c;
}
int isempty(stack p)
{
if(p.top==0)return 0;
else return 1;
}