C语言编程基础考试试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言编程基础考试

[考前说明]本题目中不考虑头文件引用问题(假定已经包含正确的头文件),C语言的标准函数都可用;如果不特别说明,

假定程序运行环境为:操作系统Windows 2000, VC6.0编译环境,缺省为四字节对齐,X86(80586)CPU处理器(32位小字节序处理器).

一、单选题

1、给出以下定义:

char acX[ ]= "abcdefg";

char acY[ ]= {'a','b','c','d','e','f','g'};

则正确的叙述为( )

A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同

C) 数组acX的长度大于数组acY的长度 D) 数组acX的长度小于数组Y的长度

2、void example(char acHello[])

{

printf("%d", sizeof(acHello));

return;

}

void main()

{

char acHello[] = "hello";

example(acHello);

return;

}

的输出是( )

A 4

B 5

C 6 D不确定

3、以下叙述中不正确的是( )

A) 在不同的函数中可以使用相同名字的变量

B) 函数中的形式参数是在栈中保存

C) 在一个函数内定义的变量只在本函数范围内有效

D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

4、设有如下定义:

unsigned long pulArray[] = {6, 7, 8, 9, 10};

unsigned long *pulPtr;

则下列程序段的输出结果为( )

pulPtr = pulArray;

*(pulPtr + 2) += 2;

printf ("%d,%d\n", *pulPtr, *(pulPtr + 2));

A)8,10 B)6,8 C)7,9 D)6,10

5、有以下程序段

char acArr[]= "ABCDE";

char *pcPtr;

for(pcPtr = acArr; pcPtr < acArr + 5; pcPtr++)

{

printf("%s\n", pcPtr);

}

return;

输出结果是( )

A) ABCD B) A C) E D) ABCDE

B D BCDE

C C CDE

D B DE

E A E

6、void example( )

{

int i;

char acNew[20];

for(i = 0; i < 10; i++)

{

acNew[i] = '0';

}

printf("%d\n", strlen(acNew));

return;

}

的输出为( D )

A 0

B 10

C 11 D不确定

7、switch(c)中的c的数据类型可以是char、long、float、unsigned、bool. ( )

A. 正确

B. 错误

8、全局变量可以定义在被多个.C文件包含着的头文件中。( )

A. 正确

B. 错误

9、struct stu

{

int num;

char name[10];

int age;

};

void fun(struct stu *p)

{

printf("%s\n", (*p).name);

return;

}

void main()

{

struct stu students[3]={ {9801,"Zhang",20},

{9802,"Wang",19},

{9803,"Zhao",18} };

fun(students + 2);

return;

}

输出结果是( )

A) Zhang B)Zhao C) Wang D) 18

10、以下程序运行后,输出结果是( )

void main( )

{

char *szStr = "abcde";

szStr += 2;

printf("%lu \n",szStr);

return;

}

A cde

B 字符c的ASCLL码值

C "abcde"这个常串中字符c所在的地址

D 出错

11、在X86下,有下列程序

#include

void main()

{

union

{

int k;

char i[2];

}*s,a;

s = &a;

s->i[0] = 0x39;

s->i[1] = 0x38;

printf("%x\n", a.k);

}

输出结果是( )

A) 3839 B) 3938 C) 380039 D) 不可预知

12、网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信

时则须进行字节序转换;如果主机是大字节序,为了程序的一致性及可移植性,最

好也在程序中加上字节序转换的操作(空操作)。( )

A. 正确

B.错误

13、void example()

{

int i;

char acNew[20] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

for(i = 0; i < 10; i++)

{

acNew[i] = '0';

}

printf("%d\n", strlen(acNew));

return;

}

的输出为:( )

A 0

B 10

C 11 D不确定

14、在函数内部定义的变量(静态变量、寄存器变量等特殊变量除外)的内存是

在栈内存中,所以在定义函数内部的变量的时候,一定要保证栈不能够溢出。如果

临时变量占用空间较大,应该使用内存申请的方式,这样该变量指向的内存就是

在堆内存中了。( )

A. 正确

B. 错误

15、局部变量可以和全局变量重名,编译的时候不会出现错误,但一旦不小心,

就可能导致使用错误变量,所以在定时局部变量的时候,不要和全局变量重名。( )

A. 正确

B. 错误

16、设有以下宏定义:

#define N 3

#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/ 则执行语句:z = 2 * (N + Y(5 + 1));后,z的值为( )

A) 出错 B) 42 C) 48 D)54

17、int *(*ptr)();

则以下叙述中正确的是( )

A) ptr是指向一维组数的指针变量

相关文档
最新文档