7-1 使用函数删除字符串中的字符 (10分)

输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:

输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。

要求定义并调用函数delchar(str,c), 它的功能是将字符串 str 中出现的所有 c 字符删除,函数形参str的类型是字符指针,形参c的类型是char,函数类型是void。

输入输出示例:括号内为说明,无需输入输出

输入样例:

3               (repeat=3)
happy new year  (字符串"happy new year")
a               (待删除的字符'a')
bee             (字符串"bee")
e               (待删除的字符'e')
111211          (字符串"111211")
1               (待删除的字符'1')

输出样例:

result: hppy new yer    (字符串"happy new year"中的字符'a'都被删除)
result: b               (字符串"bee"中的字符'e'都被删除)
result: 2               (字符串"111211"中的字符'1'都被删除)

我的程序:


#include <stdio.h>
void delchar(char *str,char c);//它的功能是将字符串 str 中出现的所有 c 字符删除
int main() 
{ 
int  n=0,repeat;
char s[10][1000]={0},c1[10]={0};
scanf("%d",&repeat);
   for(n=0;n<repeat;n++)//循环次数 
		{   
		    getchar();       //消\n(换行符号)fflush(stdin)
		   gets(s[n]);  c1[n]=getchar();    //或者scanf("%[^\n] %c",&s[n],&c1[n]);
		}
	for(n=0;n<repeat;n++) //循环次数 	
	      delchar(s[n],c1[n]); 
return 0; 
}

void delchar(char *str,char c)
{
	char *p,*q;
	for(p=str,q=str;*p != '\0';p++)
		if(*p != c)  
		    *q++ = *p;
		    
		*q = *p;         //把后面的‘\0’赋给q,也是他本身;
		printf("result: %s\n",str); 	
}     

第二种方法:(转载https://www.cnblogs.com/hhwcg/p/10693314.html

#include<stdio.h>
void delchar(char str[],char c);
int main()
{
    int repeat;
    char str[80],c;

    scanf("%d\n",&repeat);  //要加换行符 
    while(repeat--)
    {
        gets(str);  //输入字符串 
        scanf("%c",&c); 
        printf("result: ");
        delchar(str,c);//调用函数 
    }

    return 0;
}

void delchar(char str[],char c)  //str[]相当于*p
{
    while(*str!='\0')  //不为空字符 
    {
        if(*str!=c)  //字符不相等 
        {
            putchar(*str);  //输出字符 ,要注意puts()是输出字符串,putchar()是输出一个字符 
        }
        str++;  //移动到下一个字符 
    }
}
  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值