题目描述
一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。答应用户输入出错时可以及时更正。可以约定#为退格符,以表示前一个字符无效,@为退行符,表示当前行所有字符均无效。
输出更正后的程序。
输入
whli##ilr#e(s#*s)
输出
while(*s)
样例输入 Copy
outcha@putchar(*s=#++)
样例输出 Copy
putchar(*s++)
分析:
本题的话也是简单的队列应用。通过不断的改遍Q.rear的值达到目的。要注意的是有可能会是Q.rear的值小于0,如果小于0,则要改成0。小于0的情况为第一个遇到#。
#include"stdio.h"
#include"string.h"
typedef struct {
char data[1000];
int front;
int rear;
}SqQueue;
SqQueue Q;
int main()
{
char a[100];
int i,j,k,l;
while(~scanf("%s",a))
{
Q.front=0;
Q.rear=0;
l=strlen(a);
i=0;
while(i<l)
{
Q.data[Q.rear++]=a[i];
if(a[i]=='#')
Q.rear=Q.rear-2;
if(Q.rear<0)
Q.rear=0;
if(a[i]=='@')
Q.rear=0;
i++;
}
Q.data[Q.rear]='\0';
printf("%s\n",Q.data);
}
}