第一范文网 - 专业文章范例文档资料分享平台

软通动力笔试(带参考答案)

来源:用户分享 时间:2025/10/2 7:05:44 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

答案仅供参考

一、改错题

1. 找出以下两处逻辑错误(非编程规范)并改正 char* getErrorString(int errcode) { char errorString[] = \

char errorString2[] = \ switch(errcode) { case 1:

return errorString; case 2:

return errorString2; default:

return NULL; } }

void printErrorString(int errcode) { char *errorString = getErrorString(errcode); printf(\ }

case1和case2返回了两个局部变量指针,而局部变量在函数结束后将自动释放。 改正:将字符数组改为指针

char *errorString= \

char *errorString2 = \

2. 以下是输出“welcome home”的程序,找出逻辑错误(非编程规范)并改正 const int MAX_STR_SIZE = 12; int main(int argc, char *argv[]) {

char str[MAX_STR_SIZE];

strcpy(str,\ printf(\ return 0; }

“welcome home”字符串应该是13个字节,而str字符数组只能存储12个字符 改正: const int MAX_STR_SIZE = 13; 二、程序填空题

1. 写出String类的构造函数,析构函数和赋值函数 class String

{ public:

String(const char *str = NULL);

精选文库

String(const String &other); ~String();

String& operator =(const String &other); private:

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 char[length+1]; strcpy(m_data, str); }

}

String& String::operator =(const String &other) { if( (5) this == other) { return (6)*this; }

(7) delete [] m_data;

int length = strlen( (8)other ); m_data = new char[length+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 < str.size();i++) — 2

{

if(str[i]=='[') {

str[i]='('; }

if(str[i]==']') {

str[i]=')'; } }

return str; }

2. 实现函数,使数字num按B进制输出

int main(int argc, char *argv[]) {

long num = 134; int B = 8; func(num, B); return 0; }

例如134按2进制输出10000110,按8进制输出206,按十六进制输出86

void func(long num,int B) {

int a[100] ={0};

int count=0; while(num>0) {

a[count++]=num%B; //保存余数 num=num/B; }

for(int i = count - 1; i >=0; i--) //逆序输出 {

if(a[i]>=10)//十六进制要特殊处理 {

printf(\ } else {

printf(\ } }

printf(\

}

— 精选文库

3

— 精选文库

4

搜索更多关于: 软通动力笔试(带参考答案) 的文档
软通动力笔试(带参考答案).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3uxig6y3303ibqw7s1xb7s7tu43ow500ts6_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top