软件水平考试程序员精选题汇总(下)
37页1、软件水平考试程序员精选题汇总(下)把字符串转换成整数题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串345,则输出整数345。分析:这道题尽管不是很难,学过C/C+语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数。还是以345作为例子。当我们扫描到字符串的第一个字符3时,我们不知道后面还有多少位,仅仅知道这是第一位,因此此时得到的数字是3。当扫描到第二个数字4时,此时我们已经知道前面已经一个3了,再在后面加上一个数字4,那前面的3相当于30,因此得到的数字是3*10+4=34。接着我们又扫描到字符5,我们已经知道了5的前面已经有了34,由于后面要加上一个5,前面的34就相当于340了,因此得到的数字就是34*10+5=345。分析到这里,我们不能得出一个转换的思路:每扫描到一个字符,我们把在之前得
2、到的数字乘以10再加上当前字符表示的数字。这个思路用循环不难实现。由于整数可能不仅仅之含有数字,还有可能以+或者-开头,表示整数的正负。因此我们需要把这个字符串的第一个字符做特殊处理。如果第一个字符是+号,则不需要做任何操作;如果第一个字符是-号,则表明这个整数是个负数,在最后的时候我们要把得到的数值变成负数。接着我们试着处理非法输入。由于输入的是指针,在使用指针之前,我们要做的第一件是判断这个指针是不是为空。如果试着去访问空指针,将不可避免地导致程序崩溃。另外,输入的字符串中可能含有不是数字的字符。每当碰到这些非法的字符,我们就没有必要再继续转换。最后一个需要考虑的问题是溢出问题。由于输入的数字是以字符串的形式输入,因此有可能输入一个很大的数字转换之后会超过能够表示的最大的整数而溢出。现在已经分析的差不多了,开始考虑编写代码。首先我们考虑如何声明这个函数。由于是把字符串转换成整数,很自然我们想到:int StrToInt(const char* str);这样声明看起来没有问题。但当输入的字符串是一个空指针或者含有非法的字符时,应该返回什么值呢?0怎么样?那怎么区分非法输入和字符串本
3、身就是”0”这两种情况呢?接下来我们考虑另外一种思路。我们可以返回一个布尔值来指示输入是否有效,而把转换后的整数放到参数列表中以引用或者指针的形式传入。于是我们就可以声明如下:bool StrToInt(const char *str, int& num);这种思路解决了前面的问题。但是这个函数的用户使用这个函数的时候会觉得不是很方便,因为他不能直接把得到的整数赋值给其他整形变脸,显得不够直观。前面的第一种声明就很直观。如何在保证直观的前提下当碰到非法输入的时候通知用户呢?一种解决方案就是定义一个全局变量,每当碰到非法输入的时候,就标记该全局变量。用户在调用这个函数之后,就可以检验该全局变量来判断转换是不是成功。下面我们写出完整的实现代码。参考代码:enum Status kValid = 0, kInvalid;int g_nStatus = kValid;/ Convert a string into an integer/int StrToInt(const char* str)g_nStatus = kInvalid;longlongnum = 0;if(str != NULL
《软件水平考试程序员精选题汇总(下)》由会员jia****ihe分享,可在线阅读,更多相关《软件水平考试程序员精选题汇总(下)》请在金锄头文库上搜索。
2020届贵州省高二语文下学期线上周考试题(下载版)
陕西省西安市航空六一八中学2018-2019学年高二下学期第二次月考语文试题(扫描版无答案)
2020届宁夏中卫市语文高考二模试题
2020届普通高等学校招生伯乐马文综模拟考试试题
2020届河北省高二语文下学期线上月考试题答案(下载版)
2020届宁夏六盘山中学高二语文下学期线上月考试题(下载版)
2020届贵州省高二语文下学期线上周考试题答案(下载版)
2020届宁夏银川市高三理综生物第五次模拟考试题
山西省忻州市第二中学2018-2019学年高二10月月考语文试题
2021届山东省高二上学期语文12月月考试题
2021届山东省惠民县第二中学致远部高二语文上期十月月考试题
2020届宁夏中卫市语文高考二模试题答案
2020届山东高三物理模拟试题二及答案解析
2020届河南省洛阳市高三化学三模试题
2020届河南省洛阳市高三化学三模试题答案
2020届黑龙江省绥棱一中高二语文下学期4月试题答案
江苏省蒋王中学2018-2019学年度高二下学期5月月考语文试题(扫描版无答案)
2020届山东省聊城市政治高考二模试题答案
福建省漳平市第一中学2018-2019学年高二上学期第一次月考语文试题
2020届黑龙江省绥棱一中高二语文下学期4月试题
2022-01-19 60页
2021-11-16 27页
2021-11-16 39页
2020-02-04 32页
2019-02-19 11页
2019-02-19 49页
2019-02-19 8页
2019-02-19 11页
2019-02-19 7页
2019-02-19 30页