欢迎来到天天文库
浏览记录
ID:46828680
大小:50.00 KB
页数:4页
时间:2019-11-28
《软通动力笔试(带参考答案)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、答案仅供参考一、改错题1.找出以下两处逻辑错误(非编程规范)并改正char*getErrorString(interrcode){charerrorString[]="notexist";charerrorString2[]="notavailable";switch(errcode){case1:returnerrorString;case2:returnerrorString2;default:returnNULL;}}voidprintErrorString(interrcode){char*errorStrin
2、g=getErrorString(errcode);printf("errcode:%d,errorString:%s",errcode,errorString);}case1和case2返回了两个局部变量指针,而局部变量在函数结束后将自动释放。改正:将字符数组改为指针char*errorString="notexist";char*errorString2="notavailable";2.以下是输出“welcomehome”的程序,找出逻辑错误(非编程规范)并改正constintMAX_STR_SIZE=12;
3、intmain(intargc,char*argv[]){charstr[MAX_STR_SIZE];strcpy(str,"welcomehome");printf("%s",str);return0;}“welcomehome”字符串应该是13个字节,而str字符数组只能存储12个字符改正:constintMAX_STR_SIZE=13;二、程序填空题1.写出String类的构造函数,析构函数和赋值函数classString{public:String(constchar*str=NULL);String(cons
4、tString&other);~String();String&operator=(constString&other);private:char*m_data;};String::~String(){(1)delete[]m_data;}String::String(constchar*str){if((2)str==NULL){m_data=(3)newchar;*m_data=0;}else{intlength=(4)strlen(str);m_data=newchar[length+1];strcpy(m_da
5、ta,str);}}String&String::operator=(constString&other){if((5)this==other){return(6)*this;}(7)delete[]m_data;intlength=strlen((8)other);m_data=newchar[length+1];(9)strcpy(m_data,other.m_data)return(10)*this;}2.一个计算到指定年份有多少个“黑色星期五”(当月的13号并且是星期五)的程序,具体忘了。三、编程题1.实现以下
6、函数,把给定string中的‘[’和‘]’替换成‘(’和‘)’std::stringreplace(std::string&str){for(inti=0;i7、出10000110,按8进制输出206,按十六进制输出86voidfunc(longnum,intB){inta[100]={0};intcount=0;while(num>0){a[count++]=num%B;//保存余数num=num/B;}for(inti=count-1;i>=0;i--)//逆序输出{if(a[i]>=10)//十六进制要特殊处理{printf("%c",'A'+a[i]-10);}else{printf("%d",a[i]);}}printf("");}
7、出10000110,按8进制输出206,按十六进制输出86voidfunc(longnum,intB){inta[100]={0};intcount=0;while(num>0){a[count++]=num%B;//保存余数num=num/B;}for(inti=count-1;i>=0;i--)//逆序输出{if(a[i]>=10)//十六进制要特殊处理{printf("%c",'A'+a[i]-10);}else{printf("%d",a[i]);}}printf("");}
此文档下载收益归作者所有