C++笔试题
来源:互联网 发布:中文域名有必要注册吗 编辑:程序博客网 时间:2024/06/05 04:01
今天又面试了两家公司,现在把笔试的几个题目总结一下,一来是自我总结和学习,二来是将笔试的题目与大家分享一下,说不定下一个你就遇到了同样的问题。
两道机试题:
1.完成下面的函数,将一个八进制的数(字符串表示)转化成十进制的数,如“100”返回的结果是64要求不使用库函数。(北京轩宇信息技术)
int convert(char *str);
int convert(char *str);int convert(char *str){//计算字符串的长度int size = 0;while(*str != '\0'){size ++;str ++;}//计算这八进制的值,从低位往高位加int lastIndex = 0;//字符从后信前的位数int sum = 0, temp = 0;//当前位数的值str --;//上面的循环已经将str指向'\0',向前移一位while (lastIndex < size){temp = *str - '0';temp = temp << 3*lastIndex;//左移3*i位转换成10进制的值,2^3 = 8sum += temp;lastIndex ++;str --;}return sum;}
一开始,没看到不能使用库函数。如果能使用库函数这会变得更简单,我的想法是:
int convert2(char *str){int n = strlen(str);int temp = 0;int sum = 0;for (int i =0; i<n; i++){temp = str[n-i-1] - '0';sum += (int)(temp*pow(8.0, i));}return sum;}
2.有一个字符串的形式如:a[]b[]c[]d,其中a、b、c、d为0-9中的数字,[]为+ - * /中的任意一个运算符。完成以下函数求表达式的值,不考虑括号、浮点数。如”1-6/4*5”,结果为-4。(北京轩宇信息技术)
这一题做了半天做不来,我想到是应该递归可以解决,因为总是从左到右找优先级较高的运算符,最终的跳出条件是只剩下两个运算符,但不知道怎么写!就知道这个面试肯定是没希望了(因为他考的主要就是这道题,试卷上写着建议先做第二题)。
这题对我还挺有挑战的,有知道解法的大夹求解!
下午去了另一家公司,有两题笔试题记忆犹新:
3.写一个函数,求出1+2+3+...+n的和。
这是不非常简单?学程序刚入门的都写出来,也许一看到你就会写出下面这样一段程序:
int accumulation(int n){if (n < 1){return -1;}else{int sum = 0;for (int i=1; i<=n; i++){sum += i;}return sum;}}
我看到这题目,一开始和大家的想法是一样的,后面一想,这不是一个等差数列吗?要用n次循环不是效率太低了吗?于是直接用一个等差数列求和公式就计算了,后面HR跟我说我做的是对的,这考的就是一种思维啊,虽然很简单,但你的思维是不是固定了?
int accumulation2(int n){if (n < 1){return -1;}else{return n*(1+n)/2;}}
4.有一组数据,记录了一个城市每天的最高气温,请找出最近一次连续5天盖过最高气温的时间,返回对应的下标,盖过指前面连续5天都比这一天气温低。如下表中返回的是下标10:
气温
32
34
35
31
28
25
22
18
21
24
27
24
23
下标
0
1
2
3
4
5
6
7
8
9
10
11
12
我的思路就是从前往后找,标记最后一个值为最大值,如果前面5个都小于该值,返回下标;如果不到5个发现更大的值,则重新标记最大值的位置。后来HR说我这思路也是对的,看来这次笔试还不错!
代码如下:
int getHighTemperature(vector<float> tempers){vector<float>::size_type size = tempers.size();vector<float>::size_type idx = size -1, maxIdx = size-1, count = 0;while(idx >= 0){if (count == 5){break;}if (tempers[idx] > tempers[maxIdx] && count < 5){maxIdx = idx;count = 0;idx --;} else{count ++;idx --;}}return count >= 5 ? maxIdx : -1;}
- c++/c笔试题
- c/c++笔试题
- c笔试题
- C语言笔试题
- C语言笔试题
- C/C++笔试题!!!!
- C语言笔试题
- c笔试题
- c笔试题
- c语言笔试题
- c/c++笔试题
- 若干C笔试题
- C/C++笔试题
- c语言笔试题
- 一道C笔试题
- C/C++笔试题
- c/c++笔试题
- C/C++笔试题
- 第三周作业-循环与判断语句Consdelnput
- 三心二意,助你好运?
- poj 3259 Wormholes SPFA
- 虚拟光驱
- 回收表空间
- C++笔试题
- url中的乱码
- 动态规划与分治法的小结
- VC++常规错误之21:Debug Assertion Failed!在winocc.cpp第307或329行错误
- 携程编程大赛 (预赛第一场)
- Linux shell编程基础(一)
- 关于ArrayList的5道面试题
- hdu1158 Common Subsequence
- dos2unix与静态库