中兴通讯2012校园招聘一道面试题---之我的解法

看到网上的中兴这两道面试题,感觉出的还不错的,尝试的解答下:

1)写一个模板函数,交换两个实参的值,并写出对这两个实参有什么要求;

 

template<class T> 
 
T swap(T &param1 T &param2) 
{ 
   T tmp=param1;
   Param2=param1;
   Param1=tmp;
} 

 

调用的时候,注意交换的实参的类型必须一致,也不知道我对这道题理解有没有问题,呵呵,大家发表下看法吧!

 

 

 

2)第二题是个用SQL语言,写一段程序。要求求出student表,分数在80-90之间有多少人,一共有两问。都是求数据库里满足一定条件的人数。

 

解法:

假设student表包含3个属性,一个是学号(no),一个姓名(name),一个乘积(score)

如果只要写SQL语句,求分数在80-90之间有多少人,就简单了。如下:

Select *from student where score>80 and score <90

 

如果要封装成函数,可以使用TSQL语言,也可以直接写一个C语言的函数;下面的函数同时考虑了实现,采用ADO连接数据库,方法如下:

void AdoConn::OnInitADOConn()

{

     ::CoInitialize(NULL);

     try

     {

         m_pConnection.CreateInstance("ADODB.Connection");

         _bstr_t strConnect = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Password=XXX;Initial Catalog=Monitor;Data Source=ip address";

         m_pConnection->Open(strConnect,"","",adModeUnknown);

     }

     catch(_com_error e)

     {

         AfxMessageBox(e.Description());

     }

}

 

//获取记录集

_RecordsetPtr& AdoConn GetRecordSet(_bstr_t bstrSQL)

{

     try

     {

         if(m_pConnection==NULL)

              OnInitADOConn();

         m_pRecordset.CreateInstance(__uuidof(Recordset));

         m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

     }

     catch(_com_error e)

     {

         e.Description();

     }

     return m_pRecordset;

}

 

其中AdoConn是封装的Ado连接数据库的类;

 

定义一个类的对象,假设为AdoConn m_AdoConn;

 

#define MINBUFF 128

Unsigned int getStudentNum(void)

{

     _RecordsetPtr m_pRs;                                        //ADO记录集对象

     _bstr_t vSQL;

     char strSQL[MINBUFF] = {0};

     char update_string[MINBUFF]={0};

 

     sprintf_s(strSQL,MINBUFF,"Select No from student Where score >80 and  score<90 ");

    vSQL=(_bstr_t)strSQL;

     m_pRs=m_AdoConn.GetRecordSet(vSQL);

 

     _variant_t var =m_pRs->GetCollect(_variant_t("No"));

     unsigned int count =0;

 

     if (var.vt!=NULL)

     {

         std::string  str_value = _bstr_t(var);

         count =atoi(str_value.c_str());

     }

 

     return count;

 

}   

 

 以上2题都是我的个人解法!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值