题目来源:大工慕课 链接
作者:Caleb Sung
要求:输入一个字符,从字符串里找到第一个该字符的位置,将其以后的字符输出,之后将字串中的该字符都删除,将删除后的字符串输出,同一字母的大、小写按不同字符处理。find
函数的返回值是字串中该字符第一次出现的位置,如果没有该字符,返回空指针,del
函数的返回值是字串首地址。
例如:若程序执行时初始字符串为:C and c++ languge is useful!
从键盘输入字符:n,则输出:“第一个n后的字串为:d c++ languge is useful!” ,接着输出“删除n后的字串:C ad c++ laguge is useful!”,也可以输入u,w 进行验证。
#include "stdio.h"
char* find(char *s,char c)
{
/*********Begin**********/ /********** End **********/
}
char* del(char *s,char c)
{/*********Begin**********/ /********** End **********/
}int main()
{char str[]="C and c++ language is useful!";char ch,*p;printf("原始字符串:%sn", str);printf("输入一个字符:");scanf("%c",&ch);//******Fill*******/*____________________ //调用函数,使p指向字符出现的第一个位置。*/p=find(str,ch);if(p){printf("第一个%c后的字串为:%sn",ch,p+1);printf("删除%c后的字串:%sn",ch,del(str,ch));}else{printf("字符在字串中不存在。n");}return 0;
}
题中划线填空的部分已经补全在题目代码的相应地方。
这道题因为没有引入string.h
而不能使用strlen()
来直接得到字符串的长度。
char* find(char *s,char c)
{
/*********Begin**********/ char *x;for(x=s; *x!=0; x++){if(*x == c){return x;}}return NULL;
/********** End **********/
}
char* del(char *s,char c)
{/*********Begin**********/ char *x, *tmp;int len;x = s;while(*x){if(*x == c){for(tmp=x+1; *tmp!='