网站空间ftp,wordpress哪里找域名,企业网站搭建教程,手机优化大师下载安装题目
习题8-6 删除字符 (20 分) 本题要求实现一个删除字符串中的指定字符的简单函数。
函数接口定义#xff1a; void delchar( char *str, char c ); 其中char *str是传入的字符串#xff0c;c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
输…题目
习题8-6 删除字符 (20 分) 本题要求实现一个删除字符串中的指定字符的简单函数。
函数接口定义 void delchar( char *str, char c ); 其中char *str是传入的字符串c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。
输入样例 a happy new year 输出样例 hppy new yer
代码
这个题需要考虑很多情况 1.有空格有删除 2.删除字符在首尾长度超过20 3.删除后字符串为空 4.被删除的字符不存在 5.字符串为空
//正确答案
#includestring.h
#include stdio.h
#define MAXN 20void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现略去不表 */void delchar( char *str, char c ){char str2[MAXN];int m strlen(str);int i,j0;for(i0;im;i){if(str[i]\0){str2[j]\0;}if(str[i]c){continue;}str2[j]str[i];j;}for(int i0;im;i){str[i]str2[i];}
}
int main()
{char str[MAXN], c;scanf(%c\n, c);ReadString(str);delchar(str, c);printf(%s\n, str);return 0;
}但是简单的后面移到前面的想法得到的答案是错的
情况答案sample等价有空格有删除答案错误删除字符在首尾长度超过20答案正确删除后字符串为空答案错误被删除的字符不存在答案正确字符串为空答案正确
//错误答案
#includestring.h
void delchar( char *str, char c ){int mstrlen(str);for(int i0;im;i){if(str[i]c){for(int ji;jm;j){str[j]str[j1];} }}
}以下这种也是错的
情况答案sample等价有空格有删除答案正确删除字符在首尾长度超过20答案错误删除后字符串为空答案正确被删除的字符不存在答案错误字符串为空答案正确
void delchar( char *str, char c ){char str2[MAXN];int m strlen(str);int i,j0;for(i0;im;i){if(str[i]\0){str2[j]str[i];}else if(str[i]!c){str2[j]str[i];j;}}strcpy(str,str2);
}