C_C语言笔试面试题目含答案

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

C语言试题

一:单项选择题

1.

void Example(char acHello[])

{

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

return;

}

void main()

{

char acHello[] = "hello";

Example(acHello);

return;

}

的输出是( )

A 4

B 5

C 6 D不确定

2.网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。( )

A. 正确

B.错误

3. int *(*ptr)();

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

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

B) ptr是指向int型数据的指针变量

C) ptr是指向函数的指针,该函数返回一个int型数据

D) ptr是指向函数的指针,该函数的返回值是指向int型数据的指针

4.此函数实现把32位IP地址(网络序)以字符串的方式打印出来:

char *IpAddr2Str(unsigned long ulIpAddr)

{

char szIpAddr[32];

unsigned long ulLocIpAddr = ntohl(ulIpAddr);//把网络序转话为主机序

(void)VOS_sprintf(szIpAddr, "%d.%d.%d.%d", ulLocIpAddr >> 24,

(ulLocIpAddr >> 16) & 0xff, (ulLocIpAddr >> 8) & 0xff, ulLocIpAddr & 0xff);

return szIpAddr;

}

下面描述正确的是():

A、数组szIpAddr空间不够;

B、函数返回局部数组szIpAddr变量地址;

C、输出的IP地址次序颠倒;

5.

#define OK 0

#define ERR 1

#define ERROR (-1)

#define BUFFER_SIZE 256

char *GetMemory(unsigned long ulSize)

{

char *pcBuf = NULL;

pcBuf = (char *)malloc(ulSize);

if(NULL == pcBuf)

{

return ERROR;

}

return pcBuf;

}

void Test(void)

{

char *pszBuf = NULL;

pszBuf = GetMemory(BUFFER_SIZE);

if(NULL != pszBuf)

{

strcpy(pszBuf, "Hello World!\r\n");

printf(pszBuf);

free(pszBuf);

}

return;

}

如下描述正确的是:

A、pszBuf指向的内存不能超过255

B、GetMemory函数的异常分支返回了-1,是一个非法地址

C、GetMemory中异常分支没有释放空间;

D、pcBuf为局部指针,指向的内存将在GetMemory被调用后释放

6、#include "stdio.h"

unsigned short *Sum(unsigned char a, unsigned char b)

{

unsigned short s = 0;

s = a + b;

return &s;

}

int main()

{

unsigned short *p = NULL;

unsigned char a = 1, b = 2;

p = Sum(a, b);

printf("%u+%u", a, b);

printf("=%u\n", *p);

return 0;

}

程序执行结果是()

A.1+2=0

B.1+2=3

C.1+2=NULL

D.不可预测

7、设有如下定义:

BOOL gStatusA = FALSE;

BOOL gStatusB = TRUE;

int gVarA = 100;

int gVarB = 100;

则执行main函数后gVarA和gVarB的值分别为( )

BOOL CheckA()

{

if(gStatusA)

{

gVarA++;

}

else

{

gVarA--;

}

return gStatusA;

}

BOOL CheckB()

{

if(gStatusB)

{

gVarB++;

}

else

{

gVarB--;

}

return gStatusB;

}

int main(int argc, char* argv[])

{

if(CheckA() && CheckB() )

{

printf(“Status OK”);

}

return 0;

}

A, 99和100 B, 99和101 C 99和99 D 101和99

8.下面的代码中,函数Test执行完毕后,希望输出无符号长整型的1。void VarInit(unsigned char *pucArg)

{

*pucArg = 1;

return;

}

void Test()

{

unsigned long ulGlobal;

VarInit(&ulGlobal);

printf("%lu", ulGlobal);

return;

}

下面描述正确的是:()

A.给VarInit( )函数传递的参数类型错误

B.printf()输出格式错误

C.传给VarInit( )中参数pucArg的值为空指针

9、

void AddFunc (unsigned int a, unsigned int b, unsigned int * c)

{

*c = a + b;

}

void main(void)

{

unsigned char e = 200;

unsigned char f = 100;

unsigned char g = 0;

AddFunc((unsigned int)e,(unsigned int)f,(unsigned int *)&g);

相关文档
最新文档