honhon 发表于 2016-12-4 19:12:44

学校acm赛的一道水题

字符串清除指定子串:由键盘输入一行字符(最多不超过80个字符,以回车结束),要求编程实现删除该行字符中的“bad”(小写),输出处理后的结果(结果不含bad)。

输入样例
abadnewsisgoodnews,andbadisnotBad


输出样例
anewsisgoodnews,andisnotBad{:10_254:}

honhon 发表于 2016-12-4 19:14:15

我的源码
#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一直报错,希望各位朋友们指点一二

123123456 发表于 2016-12-4 23:14:39

honhon 发表于 2016-12-4 19:14
我的源码
#include
#include


运行通过,不过用gets函数没问题吗

honhon 发表于 2016-12-5 13:31:18

123123456 发表于 2016-12-4 23:14
运行通过,不过用gets函数没问题吗

平时提交题也有用gets, 如果scanf的话有一些不能输入吧?

honhon 发表于 2016-12-5 20:15:31

help!提交错十次了,期间改用getchar(),puts(),都不行{:10_266:}{:10_250:}

DCO 发表于 2016-12-6 13:35:54

在开头处加上#define _CRT_SECURE_NO_WARNINGS
试试

致年轻的我们 发表于 2016-12-7 12:28:07

我写的
#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;
}

honhon 发表于 2016-12-12 18:19:30

谢谢各位的回复,问题最终是出在题意理解上!有可能情况是 bbadad
页: [1]
查看完整版本: 学校acm赛的一道水题