我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 腾讯公司的面试题看看谁能做出来 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

依然随意



性别: 帅哥 状态: 该用户目前不在线
等级: 前途无量
家族: ⊙JAY菊爱园⊙
发贴: 5922
威望: 0
浮云: 760
在线等级:
注册时间: 2006-09-25
最后登陆: 2022-10-30

5come5帮你背单词 [ extent /iks'tent/ n. 程度,广度,范围 ]


腾讯公司的面试题看看谁能做出来

用户将输入如下格式的电话本记录:
0101001张三13888888888
0101002李四13777777777
0102001王五13666666666

其中,0101001代表编号,1/2位为公司编号,3/4位为部gate编号,5/6/7位为联系人编号
试写出C++代码导入并存储上述电话本记录,并支持按照公司/部gate/联系人查询。要求自定义数据结构存储,不得使用任何数据库。


还有一道


试题描述:
用户一个算式,算式允许包括+-*/()和任意个数的十进制数字(整数或者小数),该算式为一次性输入。要求计算出算式的结果或者提示异常算式,并且将正确结果用十进制/五进制两种方式显示出来。其中,五进制数采取以下的格式显示:
(a1 a2a3a4a5a6a7a8a9a10 a11a12a13a14a15a16)
a1为符号位,0代表正数,1代表负数
a2-a10为整数部分,十进制数的整数部分为:
a2*(5^8)+a3*(5^7)+…+a9*(5^1)+a10*(5^0)
a11-a16为小数部分,十进制数N的小数部分应该约等于(尽量精确):
a11*(5^-1)+a12*(5^-2)+…+a16^(5^-6)
例如,十进制数N=-136.56显示为五进制数(1 000001021 240000)

代码要求:
用Visual C++建立Win32工程完成,不使用MFC,并且不得使用任何额外DLL/LIB完成上述代码。输入/输出界面任意。提供源代码。


[ 此贴被依然随意在2007-07-02 15:42重新编辑 ]
顶端 Posted: 2007-06-28 17:29 | [楼 主]
lyly



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 429
威望: 0
浮云: 1136
在线等级:
注册时间: 2005-09-19
最后登陆: 2010-09-06

5come5帮你背单词 [ one /wΛn/ num. 一,一个;pron. 一个人,任何人;a. 一个的,某一…的,同一的 ]


前几天别人让我帮写了个表达式计算,和第二题比较相似,
只是没有实现小数,和进制问题,自己修改下哈,其实都很基础,第一道只要写过数据库程序就小菜了哈。。。
Copy code
//writen by sunboy
//2007.6.30
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector <string> vec_num,vec_symbol;
string transform(string headExp);     //将中缀表达式转化为后缀表达式
int CalrearExp(vector <string> &vec); //计算后缀表达式的值
int stringToint(string s)
{
int res=0,i;
int len=s.length();
for(i=0;i<len;i++)
{
res*=10;
  res+=(s[i]-'0');
  }
return res;
}

int main()
{
  string headExp,rearExp;
int ans;
cout<<"请输入表达式:"<<endl;
  cin>>headExp;
  rearExp=transform(headExp);
cout<<rearExp<<endl;
  ans=CalrearExp(vec_num);
  cout<<ans<<endl;
 
return 0;
}

/*
中缀算术表达式转后缀算术表达式
算法:

  1 读入运算对象,直接输出

  2 ( 运算符进栈

  3 ) 运算符,栈内的最上一个( 以上的运算符退栈,(也退栈
 
  4 读入运算符,进入运算栈
   
    4.1 后进栈的运算符 > 先进栈的运算符,运算符进栈 (优先级比较)
 
    4.2 后进栈的运算符 <= 先进栈的运算符,将栈内的运算符退栈输出,再进栈


  5 # 结束符

*/
string transform(string headExp)
{
string res,tmp;

int i,j,len=headExp.length();
i=0;
char ch;
int top;
while(i<len)
{
ch=headExp[i++];
switch(ch)
{
case '(':
  vec_symbol.push_back ("(");
    break;
case ')':
  top=vec_symbol.size ();
  j=top-1;
      while(vec_symbol[j]!="(")
  {
    vec_num.push_back (vec_symbol[j]);
  vec_symbol.erase(vec_symbol.begin ()+j);
    j--;
  }
  vec_symbol.erase(vec_symbol.begin ()+j);
  break;
case '+':
  case '-':
  top=vec_symbol.size ();
  j=top-1;
      while(j>=0&&vec_symbol[j]!="(")
  {
    vec_num.push_back (vec_symbol[j]);
  vec_symbol.erase(vec_symbol.begin ()+j);
    j--;
  }
      if(ch=='+')
    vec_symbol.push_back ("+");
  else
  vec_symbol.push_back ("-");
  break;
case '*':
case '/':
      top=vec_symbol.size ();
  j=top-1;
      while(j>=0&&vec_symbol[j]=="*"||vec_symbol[j]=="/")
  {
    vec_num.push_back (vec_symbol[j]);
  vec_symbol.erase(vec_symbol.begin ()+j);
    j--;
  }
      if(ch=='*')
    vec_symbol.push_back ("*");
  else
  vec_symbol.push_back ("/");

  break;
default:
  tmp="";
  while(ch>='0'&&ch<='9')
  {
  tmp+=ch;
  ch=headExp[i++];
  }
  i--;
  vec_num.push_back (tmp);
}
}
for(i=vec_symbol.size ()-1;i>=0;i--)
  vec_num.push_back (vec_symbol[i]);
for(i=0;i<vec_num.size ();i++)
{
res+=vec_num[i];
  res+=" ";
}
return res;
}




int CalrearExp(vector <string> &vec)
{
  int res,i;
  vector<int> vec_cal;

  int len=vec.size ();
  for(i=0;i<len;i++)
  {
    if(vec[i]=="+")
  {
vec_cal[vec_cal.size ()-2]=vec_cal[vec_cal.size ()-2]+vec_cal[vec_cal.size ()-1];
  vec_cal.erase (vec_cal.begin ()+vec_cal.size ()-1);
  }else if(vec[i]=="-")
  {
  vec_cal[vec_cal.size ()-2]=vec_cal[vec_cal.size ()-2]-vec_cal[vec_cal.size ()-1];
  vec_cal.erase (vec_cal.begin ()+vec_cal.size ()-1);
  }else if(vec[i]=="*")
  {
  vec_cal[vec_cal.size ()-2]=vec_cal[vec_cal.size ()-2]*vec_cal[vec_cal.size ()-1];
  vec_cal.erase (vec_cal.begin ()+vec_cal.size ()-1);
  }else if(vec[i]=="/")
  {
  if(vec_cal[vec_cal.size ()-1]==0)
  {
    cout<<"除零错误"<<endl;
    vec_cal[vec_cal.size ()-1]=1;
  }
  vec_cal[vec_cal.size ()-2]=vec_cal[vec_cal.size ()-2]/vec_cal[vec_cal.size ()-1];
  vec_cal.erase (vec_cal.begin ()+vec_cal.size ()-1);
  }else
  {
  int num=stringToint(vec[i]);
  vec_cal.push_back (num);
  }
 
  }
  res=vec_cal[0];
  return res;
}



顶端 Posted: 2007-07-01 10:17 | [1 楼]
lyly



性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 429
威望: 0
浮云: 1136
在线等级:
注册时间: 2005-09-19
最后登陆: 2010-09-06

5come5帮你背单词 [ rice /rais/ n. 稻米,米饭 ]


Quote:
引用第25楼依然随意于2007-07-01 14:47发表的:

上面那位兄弟给的代码很全面,但毕竟还用了泛型设计,我看蝈蝈很厉害的样子,不如给个
完全由自己设计的代码看看,(不要用除iostream外的其他头文件dll或lib),相信老大这么强应该很快搞定,等待!!!!!!

最近两天都没过来,vector又不是什么特殊类库,题目要求里面没说不可以用阿,
没有问题的。为表歉意,顺便将第一道写了下。也是用vector,实在想换得话,vector就是一个数组。。
Copy code
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class person
{
public:
   string m_com;
   string m_dep;
   string m_ID;
   string m_Name;
   string m_tel;
};
vector <person> vec;
void Init()
{
   string com,dep,ID,Name,tel,all;
   person tmp;
   int len;
   fstream in("c:\\1.txt");
   while(in>>all)
   {
       len=all.length ();
       
       com=all.substr(0,2);
       dep=all.substr(2,2);
       ID=all.substr (4,3);
       Name=all.substr (7,len-18);
       tel=all.substr(len-11);
       
       tmp.m_com=com;
       tmp.m_dep=dep;
       tmp.m_ID=ID;
       tmp.m_Name=Name;
       tmp.m_tel=tel;
       vec.push_back(tmp);
       
   }
}
int main()
{
   Init();
   int flag=1;
   int type,i;
   int len=vec.size();
   string key;
   while(flag)
   {
       cout<<"请输入查询方式:1.公司 2部gate 3联系人 4退出"<<endl;
       cin>>type;
       if(type!=4)
       {
           cout<<"输入查询关键字:"<<endl;
           cin>>key;
       }
       switch(type)
       {
       case 1:
           for(i=0;i<len;i++)
               if(vec[i].m_com==key)
                   cout<<"姓名:"<<vec[i].m_Name<<"   "<<"联系电话:"<<vec[i].m_tel<<endl;
               break;
       case 2:
           for(i=0;i<len;i++)
               if(vec[i].m_dep==key)
                   cout<<"姓名:"<<vec[i].m_Name<<"   "<<"联系电话:"<<vec[i].m_tel<<endl;
               break;
       case 3:
           for(i=0;i<len;i++)
               if(vec[i].m_ID==key)
                   cout<<"姓名:"<<vec[i].m_Name<<"   "<<"联系电话:"<<vec[i].m_tel<<endl;
               break;
       case 4:
           flag=0;
           break;
       default:;
       }
       
       
       
  }
   return 0;
}
顶端 Posted: 2007-07-02 11:21 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.010578(s) query 6, Time now is:11-23 08:12, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号