欢迎来到天天文库
浏览记录
ID:37768701
大小:37.96 KB
页数:14页
时间:2019-05-30
《微软笔试题目2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.改错#include#includeclassCBuffer{ char*m_pBuffer; intm_size; public: CBuffer() { m_pBuffer=NULL; } ~CBuffer() { Free(); } voidAllocte(intsize) (3) { m_size=size; m_pBuffer=newchar[size]; } private: voidF
2、ree() { if(m_pBuffer!=NULL) { deletem_pBuffer; m_pBuffer=NULL; } } public: voidSaveString(constchar*pText)const { strcpy(m_pBuffer,pText); } char*GetBuffer()const { returnm_pBuffer; }};voidmain(intargc,char*arg
3、v[]){ CBufferbuffer1; buffer1.SaveString("Microsoft"); printf(buffer1.GetBuffer());}答:改正后主要改正SaveString函数将voidSaveString(constchar*pText)const{strcpy(m_pBuffer,pText);}改为voidSaveString(constchar*pText) (1){Allocte(strlen(pText)+1); (2)strcpy(m_pBuffer,pText);}原因:(1)const成员函
4、数表示不会修改数据成员,而SaveString做不到,去掉const声明(2)m_pBuffer指向NULL,必须用Allocte分配空间才能赋值。(3)另外需要将Allocte成员函数声明为私有成员函数更符合实际2.下来程序想打印“WelcomeMSRAsia”,改正错误#include#includechar*GetName(void){ //Toreturn“MSRAsia”String charname[]="MSRAsia"; returnname;}voidmain(intargc,char*
5、argv[]){ charname[32]; //Fillinzerosintoname for(inti=0;i<=32;i++) { name[i]=' '; } //copy“Welcome”toname name="Welcome"; //Appendablankchar name[8]=""; //Appendstringtoname strcat(name,GetName()); //printout printf(name);}答:改正后为#include#include6、g.h>char*GetName(void){ //Toreturn“MSRAsia”String //charname[]="MSRAsia"; (1) char*name=(char*)malloc(strlen("MSRAsia")+1); strcpy(name,"MSRAsia"); returnname;}voidmain(intargc,char*argv[]){ charname[32]; //Fillinzerosintoname for(inti=0;i<=32;i++) { 7、 name[i]=' '; } //copy“Welcome”toname //name="Welcome"; (2) strcat(name,"Welcome"); //Appendablankchar// name[8]=''; (3) //Appendstringtoname char*p=GetName(); (4) strcat(name,p); free(p); //printout printf(name);}原因:(1)在函数内部定义的变量在函数结束时就8、清空了,必须动态分配内存(2)字符串赋值语句错误,应该用strcat(3)该语句无效,可去掉(4)定义一个指针指向动态分配
6、g.h>char*GetName(void){ //Toreturn“MSRAsia”String //charname[]="MSRAsia"; (1) char*name=(char*)malloc(strlen("MSRAsia")+1); strcpy(name,"MSRAsia"); returnname;}voidmain(intargc,char*argv[]){ charname[32]; //Fillinzerosintoname for(inti=0;i<=32;i++) {
7、 name[i]=' '; } //copy“Welcome”toname //name="Welcome"; (2) strcat(name,"Welcome"); //Appendablankchar// name[8]=''; (3) //Appendstringtoname char*p=GetName(); (4) strcat(name,p); free(p); //printout printf(name);}原因:(1)在函数内部定义的变量在函数结束时就
8、清空了,必须动态分配内存(2)字符串赋值语句错误,应该用strcat(3)该语句无效,可去掉(4)定义一个指针指向动态分配
此文档下载收益归作者所有