解题思路:

注意事项:        太坑了, 题目说输入得字符串没有空格,那么就可以用scanf 读, 抱歉 依旧是错得;

                       另一个就是读入字符;  在读入字符之前,缓冲区还有上一个字符串读完之后,通过键盘键入的换行符, 如果不做处理,那么程序就是,直接把那个换行符读取,而不会读到你输入的字符;所以先要把缓冲区清理干净,在读入字符;因为上次读入之后,只留下了一个换行符;我们可以通过格式化输入scanf(“\n%c”)来进行读取输入的字符;



                    通常都是用; while(getchar() != '\n');  注意有最后那个分号,  这种的比较通用,它能把缓冲区清理了,不知只清理一个字符。



                    不懂得留言;  谢谢;

参考代码:

#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
	char s[21], t[21], ch;
	gets(s);
	scanf("\n%c", &ch);
	int i = 0, j = 0;
	for(; i < strlen(s); ++i)
	{
		if(s[i] != ch)
		{
			t[j++] = s[i];
		}
	}
	t[j] = '\0';
	puts(t);
    return 0;
}


点赞(21)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

一一 1年前 回复TA
@酷酷长 你的程序当遇到连续的需要删除的字符时删第二个会删不掉,原因是当遇到第一个需要删除的字符串时把下个字符交换到当前的位置上,倘若下一个字符也是需要删除的字符时它不会被判断,从而也不会被删除。如果我描述的不好,你用你的代码测试这串666666123666字符串就很清楚了。
sum666 4年前 回复TA
正确的!!!
5年前 回复TA
直接复制上去,然后就错了,你代码有问题吧
诚读修 5年前 回复TA
他说的是内部没有空格
后面可以有,所以用gets吸收
酷酷长 5年前 回复TA
@酷酷长 怎么错了
酷酷长 5年前 回复TA
#include <stdio.h>
#include <string.h>
int main()
{
    char ch[100];
	char a;	
	int n,i,b=0,c,d;
	char jiao;
	gets(ch);
	n=strlen(ch);
	scanf("%c",&a);
	for(i=0;i<n;i++)
	{
		if(ch[i]==a)
		{
			b++;
			for(c=i+1;c<n;c++)
			{
				jiao=ch[c];
				ch[c]=ch[c-1];
				ch[c-1]=jiao;
			}
			
		}
	}
	for(i=0;i<=n-b+1;i++)
	printf("%c",ch[i]); 
	return 0; 
}