题如下图所示
题目意思很明显了,我们的思路其实也挺简单的,换句话说,删掉一个然后重构数组,补上那个空,一个个字符推进一格就行了嘛,不用想得太复杂(简单的来说就是偷懒)。
代码如下 | 复制代码 |
#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++; } } } |
程序是同学问我了之后我改的,所以不必太在意和我的风格不符=。=
时间: 2024-10-25 12:59:23