c语言 行编辑程序 acm提交 wrong answer 50
#include<stdio.h>voidmain(){chara[300],b[300];intt;scanf("%d",&t);while(t--){fflush(s...
#include<stdio.h>
void main(){
char a[300],b[300];
int t;
scanf("%d",&t);
while(t--){
fflush(stdin);
gets(a);
int i=0,j=0;
for(;a[i]!='\0';)
if(a[i]!='#')
b[j++]=a[i++];
else {
i++;
if(j>0)
j--;
}
b[j]='\0';
printf("%s\n",b);
for(int x=0;x!=260;x++){
a[x]='\0';
b[x]='\0';
}
}
}
Description
一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。 由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每接受一个字符即存入用户数据区”的做法显然不是最恰当的。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时,可补进一个退格符"#",以表示前一个字符无效。当然,如果前面没有字符,这个退格键无效。
Input
第一行为组数T 接下来每行输入一行的字符序列 字符总数(包含退格符和退行符)不大于250
Output
行编辑的结果 每组测试一行
Sample Input
1
whli##ilr#e(s#*s) putchar(*s=#++);
Sample Output
while(*s) putchar(*s++); 展开
void main(){
char a[300],b[300];
int t;
scanf("%d",&t);
while(t--){
fflush(stdin);
gets(a);
int i=0,j=0;
for(;a[i]!='\0';)
if(a[i]!='#')
b[j++]=a[i++];
else {
i++;
if(j>0)
j--;
}
b[j]='\0';
printf("%s\n",b);
for(int x=0;x!=260;x++){
a[x]='\0';
b[x]='\0';
}
}
}
Description
一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。 由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每接受一个字符即存入用户数据区”的做法显然不是最恰当的。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时,可补进一个退格符"#",以表示前一个字符无效。当然,如果前面没有字符,这个退格键无效。
Input
第一行为组数T 接下来每行输入一行的字符序列 字符总数(包含退格符和退行符)不大于250
Output
行编辑的结果 每组测试一行
Sample Input
1
whli##ilr#e(s#*s) putchar(*s=#++);
Sample Output
while(*s) putchar(*s++); 展开
3个回答
展开全部
如果结果为空的时候不用输出
在输入T后 需要用 gerchar()吸收 数字后的那个回车
例如
输入 10按回车
那么你输入字符串的时候 第一个字符将是回车
在输入T后 需要用 gerchar()吸收 数字后的那个回车
例如
输入 10按回车
那么你输入字符串的时候 第一个字符将是回车
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main(){
char a[300],b[300];
int t;
scanf("%d",&t);
getchar();//在这里把回车读入了
while(t--){
//fflush(stdin);这个在OJ上是没有用的,因为他是文件读入的
gets(a);
int i=0,j=0;
for(;a[i]!='\0';)
if(a[i]!='#')
b[j++]=a[i++];
else {
i++;
if(j>0)
j--;
}
b[j]='\0';
printf("%s\n",b);
for(int x=0;x!=260;x++){
a[x]='\0';
b[x]='\0';
}
}
}
void main(){
char a[300],b[300];
int t;
scanf("%d",&t);
getchar();//在这里把回车读入了
while(t--){
//fflush(stdin);这个在OJ上是没有用的,因为他是文件读入的
gets(a);
int i=0,j=0;
for(;a[i]!='\0';)
if(a[i]!='#')
b[j++]=a[i++];
else {
i++;
if(j>0)
j--;
}
b[j]='\0';
printf("%s\n",b);
for(int x=0;x!=260;x++){
a[x]='\0';
b[x]='\0';
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main(){
char a[300],b[300];
char a[300],b[300];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询