C语言综合测试试题,c语言综合测试试题‌.doc

综合测试试题

第一部分:C语言

一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。

提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:

if ( n == 0 )

if ( n != 0 )

以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:

If(flag==FALSE)

请写出 float x 与“零值”比较的 if 语句:

if(x==0.0)

请写出 char *p 与“零值”比较的 if 语句:

If(p==NULL)

二、以下为Windows NT下的32位C++程序,请计算sizeof的值

char str[] = “Hello” ;

char *p = str ;

int n = 10;

请计算

sizeof (str ) = 6;

sizeof ( p ) = 4;

sizeof ( n ) =4;

void Func ( char str[100])

{

请计算

sizeof( str ) = 4;

}

void *p = malloc( 100 );

请计算

sizeof ( p ) =4;

三、简答题

1、头文件中的 ifndef/define/endif 干什么用?

防止头文件重复包含

2、#include 和 #include “filename.h” 有什么区别?

<>表示系统直接按照系统指定的目录检索filename.h

“”系统先在filename.c所在的当前目录下查找filename.h 如果找不到,再按系统指定的目录进行检索

(

<>通常包含库函数的头文件;” ”通常包含自定义的头文件

)

3、const 有什么用途?(请至少说明两种)

可以定义const常量,具有不可变性;可以修饰函数参数,防止意外修改增强程序健壮性

4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?

extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的,实现C++与C混合编程。

5、请简述以下两个for循环的优缺点

// 第一个

for (i=0; i

{

if (condition)

DoSomething();

else

DoOtherthing();

}

// 第二个

if (condition)

{

for (i=0; i

DoSomething();

}

else

{

for (i=0; i

DoOtherthing();

}

优点:程序较为简洁

缺点:多执行了N-1次判断降低了效率

优点:只判断一次,效率高

缺点:程序不简洁

四、有关内存的思考题

void GetMemory(char *p)

{

p = (char *)malloc(100);

}

void Test(void)

{

char *str = NULL;

GetMemory(str);

strcpy(str, "hello world");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:段错误

char *GetMemory(void)

{

char p[] = "hello world";

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

请问运行Test函数会有什么样的结果?

答:hello world

Void GetMemory2(char **p, int num)

{

*p = (char *)malloc(num);

}

void Test(void)

{

char *str = NULL;

GetMemory(&str, 100);

strcpy(str, "hello");

printf(str);

}

请问运行Test函数会有什么样的结果?

答:hello

void Test(void)

{

char *str = (char *) malloc(100);

strcpy(str, “hello”);

free(str);

if(str != NULL)

{

strcpy(str, “world”);

printf(str);

}

}

请问运行Test函数会有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值