- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上海贝尔语言笔试题 .doc
上海贝尔C语言笔试题
一、 以下为WindowsNT下的32位C++程序,请计算 sizeof 的值(10 分)
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 分)
二、 请填写B⑻L,float,指针变量与“零值”比较的 if语句。(10分)
请写出BOOLflag与“零值”比较的if语句。(3分)
标准答案:
if (fl ag)
if(!flag)如下写法均属不良风格,不得分。
if (flag —TRUE)
if (fl ag二=1)
if (flag==FALSE)
if(flag==O)
请写出floatx与“零值”比较的if语句。(4分)
标准答案示例:
const floatEPSINON =;
if ((x=-EPSIN0N) (x不可将浮点变量用“==”或“!= ” 与数字比较,应该设法转化成“〉=”或“类 形式。
如下是错误的写法,不得分。
if(x==)
if (x!=)
请写出char*p与“零值”比较的if语句。(3分)
标准答案: if (p==NULL)
if (p!=NUL L)如下写法均属不良风格,不得分。 if (p==0 ) if (p!=0) if(p) if⑴
三、简答题(25分)
1、 头文件中的ifndef/def ine/endif干什么用?(5分)
答:防止该头文件被重复引用。
2、 include 和include “” 有什么区别?(5 分)
答:对于tfinclude,编译器从标准库路径开始搜索
对于^include “”,编译器从用户的工作路径开始搜索
3、 const有什么用途?(请至少说明两种)(5分)
答:(1)可以定义const常量
(2)const可以修饰函数的参数、返回值,甚至函数的 定义体。被con st修饰的东西 都
受到
强制保护,可以预防意外的变动,能提高程序的健壮 性。
4、 在C++程序中调用被C编译器编译后的函数,为什 么要加 extern “C” ?(5
分
C语言不支持函数重载答:C++语言支持函数重载, 函数被C++
C语言不支持函数重载
C语言
的不同。假设某个函数的原型为: voidfoo(intx,inty);
该函数被C编译器编译后在库中的名字为_£00,而C++ 编译器则会产生像_foo _int_in
之类的
名字。
C++提供了 C连接交换指定符号exter n “C”来解决名 字匹配问题。
5、请简述以下两个for循环的优缺点(5分) for(i=0;i {
if(condition )
DoSomething ():
else
DoOth erthing ();
}
if (condition)
for(i=0;i Do Something ();
else for(i=0;i
DoOtherth ing ();
优点:程序简洁
缺点:多执行了 N -1次逻辑判断,并且打断了循环 “流水线”作业,使得编译器不能
对循环进行优化处理,降低了效率。优点:循环的效
率高
缺点:程序不简洁
四、有关内存的思考题(每小题5分,共20分) voidG etMemory (cha r氺p)
{
p=(ch ar*)malloc (1 00);
}
voidTes t (void)
{
char 氺str=NULL;
Ge tMemory(str);
strcpy (st r, 〃helloworl d〃);
printf (s tr);
请问运行Test函数会有什么样的结果?
答:程序崩溃。
因为G etMemory并不能传递动态内存,
Test函数中的str —直都是NULL。
strcpy (s tr, hellowor ld〃);将使程序崩溃。 char氺GetMemo ry (void)
{
c harp[]=〃hell oworld; retu rnp;
voidTes t (void)
{
char 氺str=NULL;
st r=GetMemory();
printf(str );
}
请问运行Test函数会有什么样的结果?
答:可能是乱码。
因为Ge tMemory返回的是指向“栈内存”的指针,该 指针的地址不是NULL,但其原 现
的
内容已经被清除,新内容不可知。
voi dGetMemory2 (char**p, intn um)
{
*p=(ch ar*)malloc(
文档评论(0)