文档介绍:上海贝尔笔试题
上海贝尔招聘程序员,笔试时通常都是考以下这些题目,有意应聘该公司的朋友们,要多加留意了。
关于C语言的几个程序题
一、请填写B⑻L,float,指针变量与“零值”比较的 if语句。(10分)
请写出BOOLflag与“零值”比较的if语句。(3分)
标准答案:
if (flag)
if (! flag)如下写法均属不良风格,不得分。 if(flag==TRUE) if (flag==l) if (flag二FALSE) if (f la g==0)
请写出floatx与“零值”比较的if语句。(4分)
标准答案示例:
constflo atEPSINON=;
if((x>=-EPS IN0N)(x=”或“如下是错误的写法,不得分。
if (x==)
if (x!=)
请写出char郎与“零值”比较的if语句。(3分)
标准答案:
if (p==NULL)
if(p!=NULL)如下写法均属不良风格,不得分。 if (p==0) if (p!=0) if(p) if
⑴
二、以下为W indowsNT下的32位C++程序,请计算 si zeof 的值(10 分) c harstr []= “He llo”; char氺p=str; intn=10;
请计算
sizeof (st r)二6 (2 分)
size of (p)=4 (2 分)
sizeof (n) =4 (2 分)voidFunc (charstr [100 ])
请计算
sizeof (str) =4 (2 分)
void*p=mallo c (100): 请计算
si zeof (p)=4 (2 分)
三、简答题(25分)
1、 头文件中的ifnd ef/define/en dif干什么用? (5 分)
答:防止该头文件被重复引用。
2、 include 和include “”有什么区别? (5 分)
答:对于ttincliide,编译器从标准库路径开始搜索对于
tfinclude “”,编译器从用户的工作路径开始搜索
3、const有什么用途?(请至少说明两种)(5分)
答:(1)可以定义const常量
(2) co nst可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到
强制保护,可以预防意外的变动,能提高程序的健壮
4、在C++程序中调用被C编译器编译后的函数,为什
么要加 extern “C”? (5
分
)
答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与
C语言
的不同。假设某个函数的原型为:voidfo o (intx, inty):
该函数被C编译器编译后在库中的名字为_化0,而 C++编译器则会产生像_foo_int_i n t
之类的
名字。
C++提供了 C连接交换指定符号extern “C”来解决名字匹配问题。
5、请简述以下两个for循环的优缺点(5分)
for (i=0; i<N; i++)
if(conditio n) DoSomethin g();
else
DoOt herthingO :
}
if (condition )
{
for (i=0; i<N; i++)
DoSome thing();
}
els e
{
for (i=0; i<N; i++)
DoOthe rthingO :
}
优点:程序简洁
缺点:多执行了 N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能
对循环进行优化处理,降低了效率。优点:循环的效
率高
缺点:程序不简洁
四、有关内存的思考题(每小题5分,共20分)
vo idGetMemory(char氺p)
p=(char*) mallo c (100):
void Test (void)
{
c har氺str=NULL ;
GetMemory(s tr);
strcpy (str,〃hellow orld〃);
print f (str);
}
请问运行Test函数会有什么样的结果?
答:程序崩溃。
因为GetMemory并不能传递动态内存,
Tes t函数中的str —直都是NULL。
strep y (str, "hello world"):将使程序崩溃。
char氺GetM emory (void)
{
charp口=〃h elloworld";
r eturnp: void Test (void) c har*str=NULL ;
str=GetMemo ry ():
printf (str);
}
请问运行Te st