题如下图所示
题目意思很明显了,我们的思路其实也挺简单的,换句话说,删掉一个然后重构数组,补上那个空,一个个字符推进一格就行了嘛,不用想得太复杂(简单的来说就是偷懒)。
代码如下 |
复制代码 |
#include<stdio.h>
#include<string.h>
void delchar(char s[], char c);
int main(void)
{
char c;
char s[80];
printf("Input a string: ");
gets(s);
printf("Input a char: ");
scanf("%c", &c);
delchar(s, c);
printf("After deleted,the string is:%s", s);
return 0;
}
void delchar(char s[], char c)
{
int a, b, e;
e = strlen(s);
for(a=0; a < e; a++) {
if(s[a] == c) {
for(b = a; b < e; b++)
s[b] = s[b + 1];
a = a - 1;
}
}
}
|
算法二
代码如下 |
复制代码 |
#include <stdio.h>
char fun(char str[20],char ch)
{ int i,j;
for(i=0;str[i]!='\0';i++)
if(str[i]==ch) {for(j=i;str[j]!='\0';j++) str[j]=str[j+1]; }
}
void main()
{ char str[20],ch;
printf("enter a string :");
gets(str);
printf("enter you want delete letter : ");
ch=getchar();
fun(str,ch);
printf("%s",str);
}
|
算法三
比如删除指定的字符在字符串中第一个出现的位置
代码如下 |
复制代码 |
void strdel( char* str, char ch )
{
char *p = str;
while( *p )
{
if( *p==ch )
break;
}
if( *p )
{
while( *p )
{
*p==*(p+1);
p++;
}
}
}
|
程序是同学问我了之后我改的,所以不必太在意和我的风格不符=。= |