一、先自我介绍一下
二、写个程序吧
【试题一】:
实现一个atoi()函数,功能和库函数atoi()的功能一致。
函数原型面试官已经给出:
int atoi(const char *pNum)
{
//由面试者来实现功能
}
注意:
最开始要对*pNum进行异常检查(pNum是否等于NULL,如果pNum等于NULL应该进行异常处理)
数字字符串的最开始是否含有"+"或者“-”、数字中是否含有0~9之外的其他字符,遇到其他非法字符该如何处理,例如pNum指向的数字字符串是"235#18"
遇到小数点"."该如何处理,比如“123.45”
同时遇到0~9之外的其他非法字符和小数点"."该如何处理,例如“123%45.678”
最开始就是0~9之外的其他非法字符该如何处理,例如“$12345”、".5567"
总之,要对库函数atoi()的功能足够熟悉,库函数atoi()对各种输入的字符串都是如何处理的,最好看一下库函数atoi()的源码,这样atoi()的功能便一目了然。
【试题二】:
写一个函数求整型数组中连续子数组的最大乘积。
这道题有点像求连续子数组的最大和、编程之美2.13子数组的最大乘积这种问题,但是这道题更为复杂一些。因为求连续子数组的最大和的重点是判断当前的连续子数组之和是否小于0,编程之美2.13子数组的最大乘积的试题不要求子数组连续,而这道题要求是连续子数组,而且因为是乘积所以要考虑子数组是否含有0,是否含有负数、负数的个数是奇数个还是偶数个等各种情况。