最近准备复试,做一下C的程序设计题目,记录一下我觉得比较有价值记录的部分:
#include <iostream>
#include<string.h>
using namespace std;
//题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
//存储字符串:char* string ,转化成下标
int main(void)
{
char * DeleteString(char *str,char *substr);
char str[4]="abc";
char substr[2]="a";
cout<<DeleteString(str,substr);
system("pause");
return 0;
}
char * DeleteString(char *str,char *substr)
{
int hash[256];
if(substr==NULL)
{return str;}
for(int i=0;i<256;i++)
{hash[i]=0;}
for(int i=0;i<strlen(substr);i++)
{//cout<<"hash[substr[i]]"<<hash[substr[i]]<<endl;//测试输出
hash[substr[i]]=1;
//cout<<(int)substr[i]<<"hash[substr[i]]"<<hash[substr[i]]<<endl;
}
int currentindex=0;
for(int i=0;i<strlen(str);i++)
{if(hash[str[i]]==0)//字符ASCII码对应数组中的值为0时存储该字符到最终结果数组
str[currentindex++]=str[i];
}
str[currentindex]='\0';//字符串和字符数组区别在于字符数组得加\0
return str;}