学校acm赛的一道水题
字符串清除指定子串:由键盘输入一行字符(最多不超过80个字符,以回车结束),要求编程实现删除该行字符中的“bad”(小写),输出处理后的结果(结果不含bad)。输入样例
abadnewsisgoodnews,andbadisnotBad
输出样例
anewsisgoodnews,andisnotBad{:10_254:} 我的源码
#include <stdio.h>
#include <string.h>
void Clear(char * s, int i);
int main()
{
char s, b = '\0', a = '\0', d = '\0';
gets(s);
int i;
for (i = 0; s != '\0'; i++){
b = a;
a = d;
d = s;
if (b == 'b' && a == 'a' && d == 'd'){
Clear(s, i-2);
i -= 3;
}
}
printf("%s\n", s);
return 0;
}
void Clear(char * s, int i)
{
for (s = s + i; *s != '\0'; s++){
*s = *(s + 3);
}
}
不知为什么,提交到oj一直报错,希望各位朋友们指点一二 honhon 发表于 2016-12-4 19:14
我的源码
#include
#include
运行通过,不过用gets函数没问题吗 123123456 发表于 2016-12-4 23:14
运行通过,不过用gets函数没问题吗
平时提交题也有用gets, 如果scanf的话有一些不能输入吧? help!提交错十次了,期间改用getchar(),puts(),都不行{:10_266:}{:10_250:} 在开头处加上#define _CRT_SECURE_NO_WARNINGS
试试 我写的
#include <stdio.h>
#include <string.h>
int main()
{
char str,temp;
int i,j,k;
temp=0;
do
{
gets(str);
}while(strlen(str)>80);
for(i=0;i<strlen(str);i++)
{
temp=str;
temp=str;
temp=str;
if(strcmp(temp,"bad")!=0)
{
printf("%c",temp);
}
else
{
i+=2;
}
}
return 0;
} 谢谢各位的回复,问题最终是出在题意理解上!有可能情况是 bbadad
页:
[1]