题目描述
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
输入
输入:
“I am a student.”
输出
输出:
“student. a am I”
样例输入
"You are unbreakable."
样例输出
"unbreakable. are You"
参考代码
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define SEN 100
struct sqstack
{
char *base;
char *top;
int size;
}
;
struct sqstack *initEmptyStack()
/*æ建空è¼*/
{
struct sqstack *p;
p=(struct sqstack *)malloc(sizeof(struct sqstack));
if(p!=NULL)
{
p->base=(char *)malloc(sizeof(struct sqstack)*SEN);
if(p->base!=NULL)
{
p->top=p->base;
p->size=SEN;
return p;
}
} else
free(p);
return NULL;
}
char push(struct sqstack *p,char a)
/*å
¥æ */
{
*p->top++=a;
return 0;
}
char gettop(struct sqstack *p)
/*åæ 顶å
ç´ */
{
if(p->base!=p->top)
return *(p->top-1);
return 0;
}
char pop(struct sqstack *p)
/*åºæ */
{
return *(--p->top);
}
int main()
{
struct sqstack *p1,*p2;
char c;
p1=initEmptyStack();
p2=initEmptyStack();
while(scanf("%c",&c)!=EOF)
push(p1,c);
printf("%c",pop(p1));
while(p1->base!=p1->top)
{
while(gettop(p1)!=' '&&gettop(p1)!='"')
push(p2,pop(p1));
while(p2->base!=p2->top)
printf("%c",pop(p2));
printf("%c",pop(p1));
}
printf("n");
return 0;
}
解析
暂无