《软通动力笔试带参考答案》由会员分享,可在线阅读,更多相关《软通动力笔试带参考答案(4页珍藏版)》请在金锄头文库上搜索。
1、答案仅供参考一、 改错题1. 找出以下两处逻辑错误(非编程规范)并改正 char* getErrorString(int errcode)char errorString = not exist; char errorString2 = not available;switch(errcode) case 1: return errorString; case 2: return errorString2; default: return NULL;void printErrorString(int errcode)char *errorString = getErrorString(errc
2、ode);printf(errcode:%d, errorString:%sn, errcode, errorString); case1和case2返回了两个局部变量指针,而局部变量在函数结束后将自动释放。改正:将字符数组改为指针 char *errorString= not exist; char *errorString2 = not available;2. 以下是输出“welcome home”的程序,找出逻辑错误(非编程规范)并改正 const int MAX_STR_SIZE = 12; int main(int argc, char *argv) char strMAX_STR
3、_SIZE; strcpy(str,welcome home); printf(%s, str);return 0; “welcome home”字符串应该是13个字节,而str字符数组只能存储12个字符 改正: const int MAX_STR_SIZE = 13;二、 程序填空题1. 写出String类的构造函数,析构函数和赋值函数 class Stringpublic:String(const char *str = NULL);String(const String &other);String();String& operator =(const String &other);pr
4、ivate:char *m_data;String:String()(1)delete m_data;String:String(const char *str)if( (2)str=NULL ) m_data = (3)new char;*m_data = 0;else int length = (4)strlen(str);m_data = new charlength+1;strcpy(m_data, str);String& String:operator =(const String &other)if( (5) this = other) return (6)*this;(7) d
5、elete m_data;int length = strlen( (8)other );m_data = new charlength+1;(9)strcpy(m_data,other.m_data)return (10)*this;2. 一个计算到指定年份有多少个“黑色星期五”(当月的13号并且是星期五)的程序,具体忘了。三、 编程题1. 实现以下函数,把给定string中的和替换成(和)std:string replace(std:string &str) for(int i = 0; i 0) acount+=num%B; /保存余数 num=num/B; for(int i = count - 1; i =0; i-) /逆序输出 if(ai=10)/十六进制要特殊处理 printf(%c,A+ai-10); else printf(%d,ai); printf(n);