1、实现一个字符串查找子串的函数
#include <iostream>
int search(char str[],char str1[])
{
int strlen1=strlen(str);
int strlen2=strlen(str1);
if(strlen1<strlen2)
return -1;
int i,j;
for(i=0;i<strlen1;i++)
{
int flag=1;
int pos=i;
if(str[i]==str1[0])
{
for(j=1;j<strlen2;j++)
{
i++;
if(str[i]!=str1[j])
{
flag=0;
}
}
if(flag==1)
return pos+1;
else
i=pos;
}
}
return -1;
}
void main()
{
std::cout<<search("abababcdefg","babc");
}
2、实现将一个输入的数字颠倒(输入12345->54321)
#include <iostream>
char *change(char *str)
{
int length=strlen(str);
int i;
char flag;
for(i=0;i<length/2;i++)
{
flag=str[length-1-i];
str[length-1-i]=str[i];
str[i]=flag;
}
return str;
}
void main()
{
char ch[6]="12345";
std::cout<<change(ch);
getchar();
}
3、 使用递归实现二分法查找
#include "stdio.h"
void Search(int p[],int low,int height,int key)
{
int middle=(low+height)/2;
if(low>height)
{
printf("没有该数!");
return;
}
if(p[middle]==key)
{
printf("%d\n",middle);
return;
}
else if(p[middle]>key)
{
Search(p,low,middle-1,key);
}
else if(p[middle]<key)
{
Search(p,middle+1,height,key);
}
}
int main()
{
int p[5]={1,2,3,4,5};
Search(p,0,4,4);
return 0;
}
4、去掉一个字符串的前后空格
#include <iostream> void removeK(char *ch) { int length=strlen(ch); int i=0; char newchar[200]; int size=0;//记录空格的数量 int flag=0;//标记是否已经开始没有空格 int j=-1; for(i=0;i<length;i++) { if(ch[i]!=' ') flag=1; if(flag==1) { if(ch[i]!=' ') { int a; for(a=0;a<size;a++) { j++; newchar[j]=' '; } size=0; j++; newchar[j]=ch[i]; } else { size++; } } } // printf("%d",strlen(newchar)); int b=0; for(b=0;b<=j;b++) printf("%c",newchar[b]); } int main() { char *ch=" hello helojh fdgdf dfdf "; removeK(ch); }