C语言编程问题:输入一个字符串,再输入一个字符ab,将字符串中所有的ab字符删除后输出该字符串。

回答请给出完整的代码以及大致的思考方法。注意该字符由两个或多个字母组成!... 回答请给出完整的代码以及大致的思考方法。注意该字符由两个或多个字母组成! 展开
 我来答
a774267423
2013-02-08 · TA获得超过3197个赞
知道答主
回答量:464
采纳率:80%
帮助的人:30.9万
展开全部
大致思考方法:
定义三个字符串:str[], ab[], output[],str是输入的第一个字符串,output放的是最后的结果。
设置两个下标 i,j。i指向第一个字符串,j指向第二个子符串;
i每次向后移动一个位置,i往后的strlen(ab)个字符是不是和字符串ab匹配,如果不匹配就把str[i]添到字符串output中,如果匹配,就让i直接跳过strlen(ab)个位置;
具体还是看代码吧!自己在纸上画一画就明白了。
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[30], ab[5], output[30];
scanf("%s", str);
scanf("%s", ab);
int i, j, outputIndex = 0;
for(i = 0; i < strlen(str); i ++)
{
for(j = 0; j < strlen(ab) && i + j < strlen(str); j ++)
{
if(str[i + j] != ab[j]) break;
}
if(j != strlen(ab))
output[outputIndex ++] = str[i];
else
i = i + strlen(ab) - 1;
}
output[outputIndex] = '\0';
printf("%s\n", output);
return 0;
}
安全管理人12345gf
2015-12-21 · TA获得超过5523个赞
知道大有可为答主
回答量:5473
采纳率:62%
帮助的人:1224万
展开全部
#include <stdio.h>
void delchar(char* str, char c) {
int i = 0, j = 0;
while (str[j] != 0) {
if (str[j] != c) {
str[i] = str[j];
i++;
}
j++;
}
str[i] = 0;
}
int main()
{
char s[100];
while (scanf("%s", s) != EOF) {
delchar(s, 'a');
printf("[%s]\n", s);
}
return 0;
}
想象两个下标一个i一个j。j一直向前走,如果碰到要剔除的字符就跳过去,但是i不跳过去,如果不是要剔除的字符就复制给i,然后i也前进,这样就把要剔除的字符删掉了。只用遍历一遍,用strcpy发现一个要删除的字符就复制一遍,额外多做了很多无用功。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
撒谎985
2013-02-08 · 超过15用户采纳过TA的回答
知道答主
回答量:145
采纳率:0%
帮助的人:21万
展开全部
简单,比如s1是主字符串,s2是子字符串,遍历s1判断有无s2就可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式