华为机试题(6)
1、删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。view plaincopyprint?
[*]#include<stdio.h>
[*]
#include<stdlib.h>
[*]
#include<string.h>
[*]
[*]
intdelete_sub_str(constchar*str,constchar*sub_str,char*result)
[*]{
[*]char*p=str;
[*]char*q=sub_str;
[*]char*r=result;
[*]intsub_len=strlen(sub_str);
[*]intcmp,cnt=0;
[*]chartmp;
[*]while(*p&&(p+sub_len-1!='\0'))
[*]{
[*]if(*p==*q)
[*]{
[*]strncpy(tmp,p,sub_len);
[*]tmp='\0';
[*]cmp=strcmp(tmp,sub_str);
[*]if(cmp==0)
[*]{
[*]cnt++;
[*]p=p+sub_len;
[*]}
[*]
[*]}
[*]*result++=*p;
[*]p++;
[*]}
[*]*result='\0';
[*]returncnt;
[*]
[*]}
[*]
intmain(/*intargc,char**argv*/)
[*]{
[*]intcnt;
[*]constcharstr="hao123hello123world";
[*]constcharsub_str="123";
[*]charresult;
[*]cnt=delete_sub_str(str,sub_str,result);
[*]
[*]printf("resultis:%s\n",result);
[*]printf("cntis:%d\n",cnt);
[*]getchar();
[*]return0;
[*]}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int delete_sub_str(const char *str,const char *sub_str,char *result)
{
char *p=str;
char *q=sub_str;
char *r = result;
int sub_len = strlen(sub_str);
int cmp,cnt = 0;
char tmp;
while(*p && (p+sub_len-1 != '\0'))
{
if(*p == *q)
{
strncpy(tmp,p,sub_len);
tmp = '\0';
cmp=strcmp(tmp,sub_str);
if(cmp == 0)
{
cnt++;
p=p+sub_len;
}
}
*result++ = *p;
p++;
}
*result = '\0';
return cnt;
}
int main(/*int argc, char **argv*/)
{
int cnt;
const char str="hao123hello123world";
const char sub_str="123";
char result;
cnt = delete_sub_str(str,sub_str,result);
printf("result is :%s\n ",result);
printf("cnt is :%d\n ",cnt);
getchar();
return 0;
}
2 使用C语言实现字符串中子字符串的替换
描述:编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:
ABCDEFGHIJKLMNOPQgggUVWXYZ
view plaincopyprint?
[*]#include<stdio.h>
[*]
#include<stdlib.h>
[*]
#include<string.h>
[*]
[*]
voidStrReplace(char*strSrc,char*strFind,char*strReplace)
[*]{
[*]char*p=strSrc;
[*]char*q=strFind;
[*]char*s=strReplace;
[*]charresult;
[*]chartmp;
[*]char*r=result;
[*]intcmp;
[*]intlen=strlen(strFind);
[*]//intlen2=strlen(strSrc);
[*]while(*p)
[*]{
[*]if(*p==*q)
[*]{
[*]strncpy(tmp,p,len);
[*]tmp='\0';
[*]cmp=strcmp(tmp,strFind);
[*]if(cmp==0)
[*]{
[*]while(*s)
[*]*r++=*s++;
[*]p=p+len;
[*]if(*p=='\0')
[*]break;
[*]continue;
[*]}
[*]}
[*]*r++=*p;
[*]p++;
[*]}
[*]*r='\0';
[*]strcpy(strSrc,result);
[*]}
[*]
intmain(/*intargc,char**argv*/)
[*]{
[*]
[*]charstrSrc="abcdhelloabefg";
[*]charstrFind="hello";
[*]charstrReplace="world";
[*]printf("resultis:%s\n",strSrc);
[*]StrReplace(strSrc,strFind,strReplace);
[*]printf("resultis:%s\n",strSrc);
[*]//printf("cntis:%d\n",cnt);
[*]getchar();
[*]return0;
[*]}
页:
[1]