下载此文档

经典C语言测试题.doc


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
该【经典C语言测试题 】是由【泰山小桥流水】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【经典C语言测试题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。经典C语言测试题经典C语言测试题经典C语言测试题一个很牛的人出的被众多有名IT企业用作面试题的看似很简单语言测试题C++/C试题本试题仅用于观察C++/C程序员的基本编程技术。内容限于C++/C常用语法,不涉及数据构造、算法以及高深的语法。考试成绩能反响出考生的编程质量以及对C++/C的理解程度,但不可以反响考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿小瞧。一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)提示:这里“零值”可以是0,,FALSE也许“空指针”。比方int变量n与“零值”比较的if语句为:if(n==0)if(n!=0)以此类推。请写出BOOLflag与“零值”比较的if语句:请写出floatx与“零值”比较的if语句:请写出char*p与“零值”比较的if语句:二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)charstr[]=“Hello”;char*p=str;intn=10;请计算sizeof(str)=sizeof(p)=sizeof(n)=voidFunc(charstr[100]){请计算sizeof(str)=}void*p=malloc(100);请计算sizeof(p)=经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,、简答题(25分)1、头文件中的ifndef/define/endif干什么用?2、#include<>和#include“”什么差别?3、const有什么用途?(请最少说明两种)4、在C++程序中调用被C编译器编译后的函数,为何要加extern“声C”明?5、请简述以下两个for循环的优弊端//第一个//第二个for(i=0;i<N;i++)if(condition){{if(condition)for(i=0;i<N;i++)DoSomething( );DoSomething( );else}DoOtherthing( );else}{for(i=0;i<N;i++)DoOtherthing( );}长处:长处:弊端:弊端:四、有关内存的思虑题(20分)voidGetMemory(char*p)char*GetMemory(void){{p=(char*)malloc(100);charp[]="helloworld";}returnp;voidTest(void)}{voidTest(void)char*str=NULL;{GetMemory(str);char*str=NULL;strcpy(str,"helloworld");str=GetMemory( );printf(str);printf(str);经典C语言测试题经典C语言测试题经典C语言测试题2001Page2of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,}}请问运转Test函数会有什么样的结果?请问运转Test函数会有什么样的结果?答:答:VoidGetMemory2(char**p,intnum)voidTest(void){{*p=(char*)malloc(num);char*str=(char*)malloc(100);}strcpy(str,“hello”);voidTest(void)free(str);{if(str!=NULL)char*str=NULL;{GetMemory(&str,100);strcpy(str,“world”);strcpy(str,"hello");printf(str);printf(str);}}}请问运转Test函数会有什么样的结果?请问运转Test函数会有什么样的结果?答:答:五、编写strcpy函数(10分)已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);此中strDest是目的字符串,strSrc是源字符串。(1)不调用C++/C的字符串库函数,请编写函数strcpy2)strcpy能把strSrc的内容复制到strDest,为何还要char*种类的返回值?六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:classString{public:String(constchar*str=NULL);//一般构造函数String(constString&other);//拷贝构造函数~String(void);//析构函数String&operate=(constString&other);//赋值函数private:经典C语言测试题经典C语言测试题经典C语言测试题2001Page3of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,*m_data;//用于保存字符串};请编写String的上述4个函数。经典C语言测试题经典C语言测试题经典C语言测试题2001Page4of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,:C++/C试题的答案与评分标准一、请填写BOOL,float,指针变量与“零值”比较的if语句。(10分)请写出BOOLflag与“零值”比较的if语句。(3分)标准答案:以下写法均属不良风格,不得分。if(flag)if(flag==TRUE)if(!flag)if(flag==1)if(flag==FALSE)if(flag==0)请写出floatx与“零值”比较的if语句。(4分)经典C语言测试题经典C语言测试题经典C语言测试题标准答案示例:constfloatEPSINON=;if((x>=-EPSINON)&&(x<=EPSINON)不行将浮点变量用“==”或“!=”与数字比较,应当想法转变为“>=”或“<=”此类形式。以下是错误的写法,不得分。if(x==)if(x!=)经典C语言测试题经典C语言测试题经典C语言测试题请写出char*p与“零值”比较的if语句。(3分)标准答案:以下写法均属不良风格,不得分。if(p==NULL)if(p==0)if(p!=NULL)if(p!=0)if(p)if(!)二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)经典C语言测试题经典C语言测试题经典C语言测试题charstr[]=“Hello”;char*p=str;intn=10;请计算sizeof(str)=6(2分)sizeof(p)=4(2分)sizeof(n)=4(2分)voidFunc(charstr[100]){请计算sizeof(str)=4(2分)}void*p=malloc(100);请计算sizeof(p)=4(2分)经典C语言测试题经典C语言测试题经典C语言测试题2001Page5of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,、简答题(25分)1、头文件中的ifndef/define/endif干什么用?(5分)答:防范该头文件被重复引用。2、#include<>和#include“”什么差别?(5分)答:对于#include<>,#include“,”、const有什么用途?(请最少说明两种)(5分)答:(1)可以定义const常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强迫保护,可以预防不测的改动,能提升程序的强壮性。4、在C++程序中调用被C编译器编译后的函数,为何要加extern“?C”(5分)答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不一样。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++供给了C连接交换指定符号extern“C”来解决名字般配问题。5、请简述以下两个for循环的优弊端(5分)for(i=0;i<N;i++)if(condition){{if(condition)for(i=0;i<N;i++)DoSomething( );DoSomething( );else}DoOtherthing( );else}{for(i=0;i<N;i++)DoOtherthing( );}长处:程序简洁长处:循环的效率高弊端:多执行了N-1次逻辑判断,而且弊端:程序不简洁打断了循环“流水线”作业,使得编译器不可以对循环进行优化办理,降低了效率。经典C语言测试题经典C语言测试题经典C语言测试题2001Page6of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,、有关内存的思虑题(每题5分,共20分)voidGetMemory(char*p)char*GetMemory(void){{p=(char*)malloc(100);charp[]="helloworld";}returnp;voidTest(void)}{voidTest(void)char*str=NULL;{GetMemory(str);char*str=NULL;strcpy(str,"helloworld");str=GetMemory( );printf(str);printf(str);}}请问运转Test函数会有什么样的结果?请问运转Test函数会有什么样的结果?答:程序崩溃。答:可能是乱码。因为GetMemory其实不可以传达动向内存,因为GetMemory返回的是指向“栈内存”Test函数中的str向来都是NULL。的指针,该指针的地址不是NULL,但其原strcpy(str,"helloworld");将使程序崩现的内容已经被除去,新内容不行知。溃。voidGetMemory2(char**p,intnum)voidTest(void){{*p=(char*)malloc(num);char*str=(char*)malloc(100);}strcpy(str,“hello”);voidTest(void)free(str);{if(str!=NULL)char*str=NULL;{GetMemory(&str,100);strcpy(str,“world”);strcpy(str,"hello");printf(str);printf(str);}}}请问运转Test函数会有什么样的结果?请问运转Test函数会有什么样的结果?答:答:窜改动向内存区的内容,结果难以预(1)可以输出hello料,特别危险。(2)内存泄漏因为free(str);以后,str成为野指针,if(str!=NULL)语句不起作用。经典C语言测试题经典C语言测试题经典C语言测试题2001Page7of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,、编写strcpy函数(10分)已知strcpy函数的原型是char*strcpy(char*strDest,constchar*strSrc);此中strDest是目的字符串,strSrc是源字符串。(1)不调用C++/C的字符串库函数,请编写函数strcpychar*strcpy(char*strDest,constchar*strSrc);{assert((strDest!=NULL)&&(strSrc!=NULL));//2分char*address=strDest;//2分while((*strDest++=*strSrc++)!=‘\0’)//2分NULL;returnaddress;//2分}(2)strcpy能把strSrc的内容复制到strDest,为何还要char*种类的返回值?答:为了实现链式表达式。//2分比方intlength=strlen(strcpy(strDest,“helloworld”));六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:classString{public:String(constchar*str=NULL);//一般构造函数String(constString&other);//拷贝构造函数~String(void);//析构函数String&operate=(constString&other);//赋值函数private:char*m_data;//用于保存字符串};请编写String的上述4个函数。标准答案://String的析构函数String::~String(void)//3分{delete[]m_data;//因为m_data是内部数据种类,也可以写成deletem_data;}经典C语言测试题经典C语言测试题经典C语言测试题2001Page8of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,//String的一般构造函数String::String(constchar*str)//6分{if(str==NULL){m_data=newchar[1];//若能加NULL判断则更好*m_data=‘\0’;}else{intlength=strlen(str);m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,str);}}拷贝构造函数String::String(constString&other)//3分{intlength=strlen();m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,);}//赋值函数String&String::operate=(constString&other)//13分{//(1)检查自赋值//4分if(this==&other)return*this;//(2)开释原有的内存资源//3分delete[]m_data;//(3)分配新的内存资源,并复制内容//3分intlength=strlen();m_data=newchar[length+1];//若能加NULL判断则更好strcpy(m_data,);//(4)返回本对象的引用//3分return*this;}经典C语言测试题经典C语言测试题经典C语言测试题2001Page9of10经典C语言测试题经典C语言测试题经典C语言测试题高质量C++/C编程指南,++/C试题(不要看答案),观察自己的编程质量终归如何。而后参照答案严格打分。1)假如你只得了几十分,请不要张扬,也不要太悲伤。编程质量差常常是因为不良****惯造成的,与人的智力、能力没有多大关系,还是有药可救的。成绩越差,可以进步的空间就越大,中国不就是在落后中赶超发达资本主义国家吗?只要你能下信心改掉不良的编程****惯,第二次考试就能及格了。2)假如你考及格了,表示你的技术基础不错,希望你能虚心学****不停进步。假如你还没有找到适合的工作单位,不如到上海贝尔试一试。(3)假如你考出85分以上的好成绩,你有义务和资格为你所在的团队作“C++/C编程”培训。希望你能和我们多多交流、互相促进。半年前我以前发现一颗好苗子,就把他挖到我们小组来。(4)假如你在没有任何提示的状况下考了满分,希望你能收我做你的徒弟。经典C语言测试题经典C语言测试题经典C语言测试题2001Page10of10经典C语言测试题经典C语言测试题经典C语言测试题

经典C语言测试题 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
最近更新