满意答案
fttuyfc
2013.08.28
采纳率:54% 等级:12
已帮助:7212人
题目1:
#include
//使用不同的IDE环境,int类型数据占的字节数是不同的,我这个
//函数可以自动的根据编译环境调整调整
//long类型的数据还不够保存一个int类型的数字的二进制形式,
//所以这里使用字符数组来保存一个int类型数字的二进制结果
char* dectobin(int n){
int size_int=sizeof(int);
unsigned int temp=1;
char*result=new char[size_int*8+1];
int index;
for(index=1;index
temp=temp<<1;
index=0;
while(temp!=0){
if(n&temp)result[index]='1';
else result[index]='0';
index++;
temp=temp>>1;
}
result[size_int*8]='\0';
return result;
}
int main(){
//调用函数dectobin时,下面两步是必须的,如果你要获取结果
//而不是仅仅输出到屏幕
int size_int=sizeof(int);
char*result=new char[size_int*8+1];
result=dectobin(43);
printf("%s\n",result);
result=dectobin(-120);
printf("%s\n",result);
getchar();
return 0;
}
题目2:
#include
#include
//这个方法比较笨,适用于字符串比较小的情况
//判断字符串main_str是否包含字符串sub,如果包含返回1,
//参数start_index记录sub在main_str中出现的开始位置
//否则返回0,start_index的值就置为-1
int isSubstring(char*main_str,char*sub,int&start_index){
int length1=strlen(main_str);
int length2=strlen(sub);
if(length2>length1){
start_index=-1;
return 0;
}
if(length1==0||length2==0){
start_index=-1;
return 0;
}
for(int i=0;i<=length1-length2;i++){
if(main_str[i]==sub[0]){
int temp=i,j;
for(j=0;j
if(main_str[temp]==sub[j])continue;
break;
}
if(j==length2){
start_index=i;
return 1;
}
}
}
start_index=-1;
return 0;
}
//这个是KMP串匹配算法,适用于字符串很长的情况
//判断字符串main_str是否包含字符串sub,如果包含返回1,
//参数start_index记录sub在main_str中出现的开始位置
//否则返回0,start_index的值就置为-1
int KMPSubstring(char*main_str,char*sub,int&start_index){
int length1=strlen(main_str);
int length2=strlen(sub);
if(length2>length1){
start_index=-1;
return 0;
}
if(length1==0||length2==0){
start_index=-1;
return 0;
}
int*next=new int[length2];
next[0]=0;
for(int i=1;i
for(int j=i-1;j>=0;j--)
if(sub[next[j]+1]==sub[i]){
j=next[j]+2;
break;
}
next[i]=j==-1?0:j;
}
int n=0;
for(int m=0;m
if(sub[n]==main_str[m]){
n++;
if(n==length2){
start_index=m-length2+1;
return 1;
}
}
else n=next[n];
}
start_index=-1;
return 0;
}
int main(){
int start_index;
KMPSubstring("onetwothreeforth","for",start_index);
printf("%d",start_index);
getchar();
return 0;
}
00分享举报