1 / 11
文档名称:

C C++语言程序设计笔试面试题7.doc

格式:doc   大小:1,659KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C C++语言程序设计笔试面试题7.doc

上传人:2024678321 2020/4/27 文件大小:1.62 MB

下载得到文件列表

C C++语言程序设计笔试面试题7.doc

文档介绍

文档介绍:技巧题试题2:写一个函数返回1+2+3+,+n的值(假定结果不会超过长整型变量的范围)解答:intSum(intn){return((long)1+n)*n/2;//或return(1l+n)*n/2;}剖析:对于这个题,只能说,也许最简单的答案就是最好的答案。下面的解答,或者基于下面的解答思路去优化,不管怎么“折腾”,其效率也不可能与直接return(1l+n)*n/2相比!intSum(intn){longsum=0;for(inti=1;i<=n;i++){sum+=i;}returnsum;}一、请写出BOOLflag与“零值”比较的if语句。(3分)标准答案:如下写法均属不良风格,不得分。if(flag)if(flag==TRUE)if(!flag)if(flag==1)if(flag==FALSE)if(flag==0)请写出floatx与“零值”比较的if语句。(4分)标准答案示例:如下是错误的写法,不得分。constfloatEPSINON=;if(x==)if((x>=-EPSINON)&&(x<=EPSINON)if(x!=)不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。请写出char*p与“零值”比较的if语句。(3分)标准答案:如下写法均属不良风格,不得分。ifif(p==0)(p==NULL)if(p!=0)ifif(p)(p!=NULL)if(!)二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分)char*p=str;voidFunc(charstr[100])intn=10;{charstr[]=“Hello”;请计算sizeof(str)=4请计算sizeof(str)=6}sizeof(p)=4(2分)void*p=malloc(100);(2分)(2分)请计算sizeof(p)=4sizeof(n)=4(2分)(2分)三、简答题(25分)1、头文件中的ifndef/define/endif干什么用?(5分)答:防止该头文件被重复引用。#include,#include“”,?(请至少说明两种)(5分)答:在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?(5分)答:请简述以下两个for循环的优缺点(5分)for(i=0;iif(condition){{if(condition)for(i=0;iDoSomething();DoSomething();else}DoOtherthing();else}{for(i=0;iDoOtherthing();}优点:程序简洁优点:循环的效率高缺点:多执行了N-1次逻辑判断,并且打缺点:程序不简洁断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。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返回的是指向“栈内存”的指针,该指针的地址不是NULL,但其原现的内Test函数中的str一直都是NULL。容已经被清除,新内容不可知。strcpy(str,"helloworld");将使程序崩溃。GetMemory并不能传递动态内存,voidGetMemory2(char**p,intnum)voidTest(void){{*p=(char*)malloc(num);char*str=(char*)malloc(100);}strcpy(str,voidTest(void)free(str);{if(str!=NULL)char*str=NULL;{GetMemory(&str,100);strcpy(str,strcpy(str,"hello");printf(str);printf(str);}}}请问运行Test函数会有什么样的结果?请问运行Test函数会有什么样的结果?答:答:篡改动态内存区的内容,后果难以预料,非常危