文档章节

C++笔试题

自由的角马
 自由的角马
发布于 2015/01/10 13:57
字数 958
阅读 27
收藏 0


    今天又面试了两家公司,现在把笔试的几个题目总结一下,一来是自我总结和学习,二来是将笔试的题目与大家分享一下,说不定下一个你就遇到了同样的问题。

两道机试题:

    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 = 8
		sum += 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,其中abcd0-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;
}


 

本文转载自:http://blog.csdn.net/luoweifu/article/details/23519691

自由的角马
粉丝 1
博文 269
码字总数 0
作品 0
文山
私信 提问
C++学到什么程度可以去参加信息学竞赛

经常有朋友问我,小朋友C++学到什么程度可以去参加信息学竞赛? 要回答这个问题,就得先知道信息学竞赛考察的是什么内容。信息学竞赛的主要方式是上机编写算法,算法要借助于某种编程语言比如...

海天一树X
04/25
0
0
hadoop好找工作吗

自我感觉C/C++学的很不错了,数据结构算法也掌握了不少(除了课本上的算法题都自己动手写过,还做过将近100道ACM题),自己写的小软件主要是MFC写socket网络程序,脚本语言熟悉PHP。但在北京...

荡荡
2014/11/20
610
4
为什么很多大公司的校园招聘笔试都是考C++?

一些来我们学校搞校园招聘的大公司,像华为,百度,360等等,他们的笔试题基本都是考C++,这是因为他们公司很多方面都用到C++,还是只是觉得C++可以锻炼人的编程思维,应届生到了他们公司之后...

楚兴
2014/09/03
3.7K
9
想从事IT行业的你,一定看看这篇文章

很多想从事IT行业的小伙伴都会问: 我该如何学习技术? 我应该选择什么样的方向来深入学习并以此来就业? 如何证明自己的技术很牛? 什么是程序员的核心竞争力? 如何成为一名优秀的工程师?...

蓝神100
2018/06/28
0
0
C++月薪2W的一道笔试题!入口函数不是main函数了一样编程

最近看到这样一道题,感觉很有意思吗 ,据说是月薪2W的笔试题,当然 了,肯定还有很多题了,所以 就算你会这道题并不表示你能月薪2W哈哈哈。 好了进入主题: 要求修改一下程序,写代码使整个...

诸葛青云999
2018/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kerberos 常用命令

假定前提 1:你已经知道kerberos是做什么的,有什么用了。 2:操作者叫 zhangsan 常用命令 命令 说明 kdestroy 删除票据 kinit zhangsan {需要密码}获取张三的票据 票据有效期使用的是默认值...

os_m
23分钟前
4
0
64.springboot设置默认值启动线程数量

1.springboot配置线程 1.1 springboot默认启动线程 server.port=9000#配置编码server.tomcat.uri-encoding=UTF-8#最大并发数server.tomcat.max-threads=1000 #接受和处理的最大连接...

20190513
23分钟前
5
0
磁盘存储和文件系统(三)

磁盘存储和文件系统(三) 分区工具fdisk和gdisk 清空分区表,查看分区表 dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510fdisk -l /dev/sdb 添加一块硬盘,识别添加的新硬盘 [root@Cent...

hardstudy-win
54分钟前
5
0
为什么Python无法解析此JSON数据? [关闭]

我在文件中有此JSON: { "maps": [ { "id": "blabla", "iscategorical": "0" }, { "id": "blabla", "iscateg......

技术盛宴
55分钟前
4
0
Eclipse更换炫酷黑色主题

https://blog.csdn.net/qq_32293345/article/details/81144831

天涯爪哇岛
59分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部