您的位置:首页 > 职场人生

两道面试题

2006-06-15 12:13 260 查看
第一道,比较经典,用代码实现strstr()的功能.

#include <iostream>
using namespace std;
char* findasub(char str1[],int len1,char str2[], int len2)
{
if (len2>len1)return NULL;

int j=0;
int i=0;

for (;j<len2;j++)
for (;i<len1;i++)
{
if (str2[j]==str1[i])j++; //当有一个字符匹配时,子串后移一位.
else j=0; //任何一次两字符不等时,都要从头匹配.

if (j==len2) //匹配成功.这里之所以用len2而不用len2-1是因为
{ //j==len2-1 j还会自增一次.
int len=len1-i+len2;
char*str=new char[len];
for (int k=0;k<len;k++)str[k]=str1[k+i-len2+1];
return str;
break;
}

}

if(j!=len2-1) return NULL;//匹配失败.

return NULL;
}

int main(void)
{
char str1[]="femalelover is a good man";
char str2[]="lover";
char* fn=findasub(str1,strlen(str1),str2,strlen(str2));
if(fn)
{
cout<<fn<<endl;
delete fn;
}
return 0;
}

第二道:用STL接受输入的整数,当输入不是整数时,输出排序后的所有整数:
#include <list>
#include <iostream>
#include <algorithm>
using namespace std;
void main()
{
list<int>mylist;
list<int>::iterator myit;
double test=0; //这里必须用double,虽然我们要的是int
int wathch=0;
bool isint=true;

while (isint)
{
cin>>test;
if (test==int(test)) //这里判断一个数是否整数. 如果上面用int,则这里会死循环.
{
mylist.push_back(test);
wathch++;
}
else isint=false;
}
if (mylist.size()==0)
{
cout<<"The list is empty/n";
return;
}
else
{
mylist.sort();

for (myit=mylist.begin();myit!=mylist.end();myit++)
cout<<*myit<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: