*(c+i+1)+=*(c+i)/10; //进位累加到高位
*(c+i)=*(c+i)%10; //该位的最后结果
}
}
5、删除子串(不会做),只要是原串中有相同的
子串就删掉,不管有多少个,返回子串个数。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
int delete_sub_str(const char *str,const char
*sub_str,char *result)
{
const char *p,*q; //注意最刚开始就要加 const
p=str;
q=sub_str;
int count=0;
int num=strlen(sub_str);
assert(str!=NULL&&sub_str!=NULL);
while(*p!='\0') //没有想法
{
if(*p==*q)
{
for(int i=1;i<num;i++)
{
if(*(p+i)!=*(q+i))
break;
}
if(i==num)
{
count++;
p+=num;
}
}
else if(*p!=*q)
{
*result=*p;
p++; //这里自己写错了
result++; //这里自己写错了
}
}
*result=0;
return count;
}
void main()
{
char s[100] = {'\0'};
int num =
delete_sub_str("123abc12de234fg1hi34j123k","123",s
);
printf("The number of sub_str is %d\r\n",num);
printf("The result string is %s\r\n",s);
}
//用指针实现
#include<stdio.h>
#include<assert.h>
int delete_sub_str(const char *str,const char
*sub_str,char *result)
{
const char *p,*q;
char *r;
p=str;
q=sub_str;
r=result;
int num=0,i=0,k=0;
while(*(p+i))
{
if(*(p+i)==*(q))
{
for(int j=0;*(q+j)!='\0';j++)
{
if(*(p+i+j)!=*(q+j))
break;
}
if(*(q+j)=='\0')
{
num++;
i+=j;
}
}
else
{
*(r+k)=*(p+i);
k++;
i++;
}
}
*(r+k)=0;
return num;
}
void main()
{
char s[100] = {'\0'};
int num =
delete_sub_str("a123abc123de","123",s);
printf("The number of sub_str is %d\r\n",num);
printf("The result string is %s\r\n",s);
}
6、比较一个数组的元素¿是否为回文数组
#include <stdio.h>
#include <string.h>
#include <assert.h>
int huiwen(char str[])
{
char *p=str;
int i=0;
int j=strlen(str);
assert(str!=NULL);
j--;
while(i<j)