问题描述及代码:
/*
*烟台大学计算机与控制工程学院
*作 者:马赛
*完成日期:2016年10月20日
问题描述:从串s中删除其值等于c的所有字符。如从message中删除'e',得到的是mssag。
输入描述:message
程序输出:mssag
*/
代码:
#include "sqstring.h"
void DellChar(SqString &s, char c)
{
int k=0, i=0; //k记录值等于c的字符个数
int j=StrLength(s);
while(i<j)
{
if(s.data[i]==c)
k++;
else
s.data[i-k]=s.data[i];
i++;
}
s.length =s.length-k;
}
int main()
{
SqString s;
StrAssign(s, "message");
DellChar(s, 'e');
DispStr(s);
return 0;
}
知识点总结:
删除实质上是找到相同的字符然后循环改变下标位置,形成一个新的字符串。
学习心得:
要把抽象的问题直观化,学会转换思路。