C语言编程基础考试

来源:互联网 发布:电子病历源码 编辑:程序博客网 时间:2024/04/29 03:38

注意:以下所有选择题均为不定项选择题,参考答案在最下面,仅供参考。

在该平台上所有基本数据类型的缺省对齐边界等于类型长度。

第01题

以下描述正确的有:
A.1个字节有4比特
B.1个字节有8比特
C.1个字节有16比特
D.1个字节有几比特和字节序有关
E.1个字节有几比特和CPU是32位还是64位有关

第02题

STATIC ULONG g_ulA = ~0UL;STATIC ULONG g_ulB = (ULONG)-1L;STATIC ULONG g_ulC = 0xFUL;STATIC ULONG g_ulD = ~0xFUL;STATIC ULONG g_ulE = ~0UL >> 4;STATIC ULONG g_ulF = ~(~0UL >> 4);
关于以上程序描述正确的有:
A.g_ulA是和CPU字长等长掩码,所有位均为1
B.g_ulB是和CPU字长等长掩码,所有位均为1
C.g_ulC是和CPU字长等长掩码,低4位为1,其余位为0
D.g_ulB是和CPU字长等长掩码,低4位为0,其余位为1
E.g_ulB是和CPU字长等长掩码,高4位为0,其余位为1
F.g_ulB是和CPU字长等长掩码,高4位为1,其余位为0

第03题

typedef UINT * PUINT;int main(VOID){    UINT uiData;    const UINT *puiA;    UINT * const puiB;    const PUINT puiC;    puiA = &uiData;    *puiA = 100U;    puiB = &uiData;    *puiB = 200U;    puiC = &uiData;    *puiC = 300U;    return 0;}
关于以上程序描述正确的有:
A.第011行有编译错误
B.第012行有编译错误
C.第014行有编译错误
D.第015行有编译错误
E.第017行有编译错误
F.第018行有编译错误

第04题

/* 代码I */ INT main(VOID){    ULONG ulA = 0;    while(ulA < 20)    {        if(10 == ulA)        {            continue;        }        else        {            break;        }        ulA++;    }    printf("%lu\r\n", ulA);    return 0;}/* 代码II */INT main(VOID){    ULONG ulA = 0;    while(ulA < 20)    {        if(10 == ulA)        {            break;        }        else        {            continue;        }        ulA++;    }    printf("%lu\r\n", ulA);    return 0;}
关于以上程序描述正确的有:
A.代码I,输出结果为0
B.代码I,输出结果为10
C.代码I,输出结果为20
D.代码II,输出结果为0
E.代码II,输出结果为10
F.代码II,输出结果为20

第05题

INT main(VOID){    const UINT uiData = 0;    UINT *puiData;    puiData = &uiData;    *puiData = 100U;    printf("%u\r\n", uiData);    return 0;}
关于以上程序描述正确的有:
A.程序无法执行,第006行有编译错误
B.程序无法执行,第007行有编译错误
C.程序无法执行,第009行有编译错误
D.程序可以执行,输出结果为0
E.程序可以执行,输出结果为100
F.程序可以执行,输出结果为随机值

第06题
以下描述正确的有:
A.无符号两字节的值域为0~65536
B.有符号两字节类型的值域为-32767~32768
C.有符号一字节类型,2进制11111111表示-1
D.有符号一字节类型,2进制10000000表示-127
E.有符号一字节类型,2进制11110110表示-10

第07题

typedef struct tagMsg{    UINT    uiVar;    USHORT  usData;}MSG_S;/* 修改I */typedef struct tagMsg{    UINT    uiVar;    USHORT  usData;    USHORT  usDataNew;  /* 新增数据 */}MSG_S;/* 修改II */typedef struct tagMsg{    UINT    uiVar;    USHORT  usData;    USHORT  usRes;    USHORT  usDataNew;  /* 新增数据 */}MSG_S;/* 接收方处理步骤 */{    /*1.本地结构初始化*/    /*2.本地结构转字节序*/    /*3.将消息内容拷贝到本地结构,长度取消息结构和本地结构两者长度的较小值*/    /*4.本地结构转字节序*/}
关于通信结构的扩展和兼容,以下描述正确的有:
A.多字节数据要做字节序转换,否则会导致大/小字节序环境不兼容
B.不应该出现ULONG类型数据,否则会导致32/64为环境不兼容
C.不应该出现指针类型数据,因为在不同地址空间共享指针没有意义
D.对以上MSG_S通信结构体新增数据usDataNew,应采用修改I的方式
E.对以上MSG_S通信结构体新增数据usDataNew,应采用修改II的方式
F.采用以上‘接收方处理步骤’,可以实现新老版本间通信结构的扩展和兼容

第08题

VOID SetData(IN const VOID *pData){    UINT uiData;    uiData = *(UINT *)pData;    printf("%#X\r\n", uiData);    return;}INT main(VOID){    ULONG ulData = 0xAABBCCDDUL;    SetData(&ulData);    return 0;}
关于以上程序描述正确的有:
A.32位小字节序环境,输出结果为0XDDCCBBAA
B.32位大字节序环境,输出结果为0XDDCCBBAA
C.64位小字节序环境,输出结果不确定
D.64位大字节序环境,输出结果为0

第09题

/* 代码I */#define MUL(uiX, uiY)   (uiX * uiY)INT main(VOID){    printf("%u\r\n", MUL(2U+3U, 5U+8U));        return 0;}/* 代码II */#define ADD(uiX, uiY)   (uiX) + (uiY)INT main(VOID){    printf("%u\r\n", ADD(2U, 3U) * ADD(5U, 8U));    return 0;}
关于以上程序描述正确的有:
A.代码I,输出结果为25
B.代码I,输出结果为33
C.代码I,输出结果为65
D.代码II,输出结果为25
E.代码II,输出结果为33
F.代码II,输出结果为65

第10题

#define BYTESWAP_8(ucData)      (((UINT)(ucData) & 0xF0U) >> 4 | \                                 ((UINT)(ucData) & 0x0FU) << 4)#define BYTESWAP_16_1(usData)   (((UINT)(usData) & 0xF000U) >> 4 | \                                 ((UINT)(usData) & 0x0F00U) << 4 | \                                 ((UINT)(usData) & 0x00F0U) >> 4 | \                                 ((UINT)(usData) & 0x000FU) << 4)#define BYTESWAP_16_2(usData)   (((UINT)(usData) & 0xF000U) >> 12 | \                                 ((UINT)(usData) & 0x0F00U) >> 4  | \                                 ((UINT)(usData) & 0x00F0U) << 4  | \                                 ((UINT)(usData) & 0x000FU) << 12)#define BYTESWAP_32_1(uiData)   (((UINT)(uiData) & 0xFF000000U) >> 8 | \                                 ((UINT)(uiData) & 0x00FF0000U) << 8 | \                                 ((UINT)(uiData) & 0x0000FF00U) >> 8 | \                                 ((UINT)(uiData) & 0x000000FFU) << 8)#define BYTESWAP_32_2(uiData)   (((UINT)(uiData) & 0xFF000000U) >> 24 | \                                 ((UINT)(uiData) & 0x00FF0000U) >> 16 | \                                 ((UINT)(uiData) & 0x0000FF00U) << 16 | \                                 ((UINT)(uiData) & 0x000000FFU) << 24)
关于以上程序描述正确的有:
A.BYTESWAP_8可以完成8位变量的字节序转换操作
B.BYTESWAP_16_1可以完成16位变量的字节序转换操作
C.BYTESWAP_16_2可以完成16位变量的字节序转换操作
D.BYTESWAP_32_1可以完成32位变量的字节序转换操作
E.BYTESWAP_32_2可以完成32位变量的字节序转换操作
F.以上程序均不是正确的字节序转换操作

第11题

/* HASH桶个数 */#define HASH_SIZE   1024UL/* HASH算法: 将aucMac[MAC_ADDR_LEN]映射到[0-1023] *//* 代码I */ULONG HashKeyI(IN const UCHAR aucMac[MAC_ADDR_LEN]){    ULONG ulData;    ulData = (UCHAR)(aucMac[0] + aucMac[1] + aucMac[2] + aucMac[3] + aucMac[4] + aucMac[5]);    return ulData / HASH_SIZE;}/* 代码II */ULONG HashKeyII(IN const UCHAR aucMac[MAC_ADDR_LEN]){    ULONG ulData;    ulData = (UCHAR)(aucMac[0] + aucMac[1] + aucMac[2] + aucMac[3] + aucMac[4] + aucMac[5]);    return ulData % HASH_SIZE;}/* 代码III */ULONG HashKeyIII(IN const UCHAR aucMac[MAC_ADDR_LEN]){    ULONG ulData;    ulData = aucMac[0] + aucMac[1] + aucMac[2];    return ulData % HASH_SIZE;}/* 代码IV */ULONG HashKeyIV(IN const UCHAR aucMac[MAC_ADDR_LEN]){    ULONG ulData;    ulData = ((ULONG)aucMac[4] << 8) | aucMac[5];    return ulData % HASH_SIZE;}/* 代码V */ULONG HashKeyV(IN const UCHAR aucMac[MAC_ADDR_LEN]){    ULONG ulData;    ulData = ((ULONG)aucMac[0] << 8) | aucMac[1];    return ulData % HASH_SIZE;}
关于以上5个HASH算法描述正确的有:
A.代码I,HASH算法相对最优
B.代码II,HASH算法相对最优
C.代码III,HASH算法相对最优
D.代码IV,HASH算法相对最优
E.代码V,HASH算法相对最优

第12题

/* 表项 */typedef struct tagEntry{    UINT uiIndex;   /* 索引 */    UINT uiData;    /* 数据 */}ENTRY_S;/* 代码I */ENTRY_S *CodeI_Alloc(IN UINT uiIndex){    ENTRY_S *pstNew;    pstNew = malloc(sizeof(ENTRY_S));    if (NULL != pstNew)    {        memset(pstNew, 0, sizeof(ENTRY_S));        pstNew->uiIndex = uiIndex;    }    return pstNew;}/* 代码II */VOID CodeII_Free(IN ENTRY_S *pstEntry){    DBGASSERT(NULL != pstEntry);    free(pstEntry);    return;}/* 代码III */VOID CodeIII_Print(IN const CHAR *pcModule, IN const CHAR *pcFmt, ...);
关于以上程序需要添加LINT规则,描述正确的有:
A.代码I,应添加规则-sem(CodeI_Alloc, @P==malloc(8))
B.代码II,应添加规则-function(free, CodeII_Free(1))
C.代码III,应添加规则-printf(1, CodeIII_Print)

第13题

typedef struct tagData_1{    #if (__BYTE_ORDER == __LITTLE_ENDIAN)        UCHAR ucA : 1;        UCHAR ucB : 2;        UCHAR ucC : 3;    #else        UCHAR ucC : 3;        UCHAR ucB : 2;        UCHAR ucA : 1;    #endif}DATA_1_S;typedef struct tagData_2{    #if (__BYTE_ORDER == __LITTLE_ENDIAN)        UCHAR ucA : 4;        UCHAR ucB : 4;        UCHAR ucC : 4;        UCHAR ucD : 4;    #else        UCHAR ucD : 4;        UCHAR ucC : 4;        UCHAR ucB : 4;        UCHAR ucA : 4;    #endif}DATA_2_S;
关于位字段,以下描述正确的有:
A.位字段变量在不同字节序的设备上要相反定义
B.要在数据结构未填满的地方加入保留位字段
C.两字节和四字节等多字节位字段变量还有做字节序转
D.以上位字段DATA_1_S定义正确
E.以上位字段DATA_2_S定义正确

第14题

typedef union tagA{    USHORT  us1;    UINT    ui2;    UINT64  ui3;}A_U;INT main(VOID){    A_U unData = {0};    unData.ui2 = 0xAABBCCDDU;    /* 语句I */    printf("%lu\r\n", sizeof(unData));    /* 语句II */    printf("%hX\r\n", unData.us1);    /* 语句III */    printf("%llX\r\n", unData.ui3);    return 0;}
关于以上程序描述正确的有:
A.语句I,输出结果为8
B.语句I,输出结果为14
C.语句II,小字节序环境输出结果为0XCCDD
D.语句II,大字节序环境输出结果为0XAABB
E.语句III,小字节序环境输出结果为0XAABBCCDD
F.语句III,大字节序环境输出结果为0XAABBCCDD00000000

第15题

/* 数组元素 */typedef struct tagElement{    UINT    uiKey;  /* 各元素间唯一 */    UINT    uiData; /* 数据 */}ELEMENT_S;/* 数据组织 */#define DATA_NUM    256ULSTATIC ELEMENT_S g_astData[DATA_NUM];/* 代码I 根据KEY获取数组元素 */ELEMENT_S *GetElementI(IN UINT uiKey){    ULONG ulIdx;    ULONG ulIdxGet = 0;    for (ulIdx = 0; ulIdx < DATA_NUM; ++ulIdx)    {        if (uiKey == g_astData[ulIdx].uiKey)        {            ulIdxGet = ulIdx;        }    }        return &g_astData[ulIdxGet];}/* 代码II 根据KEY获取数组元素 */ELEMENT_S *GetElementII(IN UINT uiKey){    ULONG ulIdx;    ELEMENT_S *pstEach = NULL;    for (ulIdx = 0; ulIdx < DATA_NUM; ++ulIdx)    {        pstEach = &g_astData[ulIdx];        if (uiKey == pstEach->uiKey)        {            break;        }    }    return pstEach;}
关于“根据KEY获取数组元素”功能,描述正确的有:
A.代码I,实现正确,但效率有问题
B.代码I,实现错误
C.代码II,实现正确
D.代码II,实现错误
第16题
/* 代码I */INT main(VOID){    UINT uiData = 0;    if ((0 == uiData) || (1 == (++uiData)))    {        uiData += 10;    }    if ((11 == uiData) && (12 == (uiData++)))    {        uiData += 100;    }    printf("%u\r\n", uiData);    return 0;}/* 代码II */INT main(VOID){    UINT uiData = 0;    UINT uiA, uiB, uiC, uiD;    uiA = ++uiData;    uiB = uiData++;    uiC = uiData--;    uiD = --uiData;    printf("%u, %u, %u, %u\r\n", uiA, uiB, uiC, uiD);    return 0;}
关于以上程序描述正确的有:
A.代码I,输出结果为10
B.代码I,输出结果为11
C.代码I,输出结果为112
D.代码II,输出结果为1, 1, 1, 0
E.代码II,输出结果为1, 1, 2, 0
F.代码II,输出结果为1, 1, 2, 1

第17题

/* 输出500以内的所有质数 *  * 质数又称素数 * 指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数 */INT main(VOID){    ULONG ulA;    ULONG ulB;    for (ulA = 2; ulA < 500; ++ulA)    {        for (ulB = 2; ulB < ulA; ++ulB)        {            /* if (...) */            {                break;            }        }        /* if (...) */        {            printf("%lu\r\n",ulA);      /* 找到质数 */        }    }    return 0;}
分别在代码015行和021行写入一下if判断,能完成函数功能的有:
A.015行 if (0 == (ulA % ulB))
B.015行 if (0 != (ulA % ulB))
C.015行 if (ulA != ((ulA / ulB) * ulB))
D.021行 if (ulB == ulA)
E.021行 if (ulB > ulA)
F.021行 if (ulB < ulA)

第18题

typedef union tagData{    UINT    uiData;    VOID    *pData;}DATA_U;VOID PassData(IN const VOID *pData){    UINT uiData;    uiData = (UINT)(ULONG)pData;    printf("%#X\r\n", uiData);        return;}INT main(VOID){    DATA_U unData = {0};    unData.pData = (VOID *)(ULONG)0xAABBCCDDU;    PassData(unData.pData);    return 0;}
关于以上程序描述正确的有:
A.32位小字节序环境,输出结果为0XAABBCCDD
B.32位大字节序环境,输出结果为0XAABBCCDD
C.64位小字节序环境,输出结果为0XAABBCCDD
D.64位大字节序环境,输出结果为0XAABBCCDD
E.以上答案均不对

第19题

#define DATA_NUM    16UVOID PrintSize(IN UINT auiData[DATA_NUM], IN UINT *puData){    printf("%lu, %lu\r\n", sizeof(auiData), sizeof(puiData));    return;}INT main(VOID){    UINT auiData[DATA_NUM];    UINT *puiData;    puiData = malloc(sizeof(UINT) * DATA_NUM);    if (NULL == puiData)    {        return -1;    }    /* ...  */    free(puiData);    return 0;}
/* 将下述4条语句单独写入代码020行后,程序的运行结果为: */
/* 语句I */
printf("%lu, %lu\r\n", sizeof(auiData), sizeof(puiData));

/* 语句II */
PrintSize(auiData, puiData);

/* 语句III */
puiData = NULL;

/* 语句IV */
auiData = NULL;

A.写入语句I,32位环境输出结果为64,4
B.写入语句I,64位环境输出结果为64,8
C.写入语句II,32位环境输出结果为4,4
D.写入语句II,64位环境输出结果为8,8
E.写入语句III,程序可以运行,但会导致资源puiData遗漏释放
F.写入语句IV,程序不能运行,有编译错误

第20题

ULONG EncapBuf(IN const UCHAR *pucData, /* 数据 */               IN ULONG ulDataLen,      /* 数据长度 */               IN ULONG ulBufLen,       /* 缓冲区长度 */               OUT VOID **ppBuf)        /* 缓冲区 */{    ULONG ulErrCode;    VOID *pEncapBuf;    /* 封装缓冲区(可能需要重新申请)*/    pEncapBuf = *ppBuf;    /* 缓冲区不足 */    if (ulBufLen < ulDataLen)    {        free(pEncapBuf);        pEncapBuf = malloc(ulDataLen);  /* 重新申请 */        ppBuf = pEncapBuf;              /* 出参赋值 */    }    /* 封装 */    if (NULL != pEncapBuf)    {        memcpy(pEncapBuf, pucData, ulDataLen);        ulErrCode = ERROR_SUCCESS;    }    else    {        ulErrCode = ERROR_FAILED;    }    return ulErrCode;}#define BUF_INIT_LEN    4UL     /* 缓冲区初始长度 */INT main(VOID){    VOID *pBuf;    UCHAR aucData[] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88};    /* 申请 */    pBuf = malloc(BUF_INIT_LEN);    if (NULL == pBuf)    {        return -1;    }    /* 数据封装 */    (VOID)EncapBuf(aucData, sizeof(aucData), BUF_INIT_LEN, &pBuf);    /* 释放 */    if (NULL != pBuf)    {        free(pBuf);    }    return 0;}
关于以上程序描述正确的有:
A.代码040行申请的资源可能会遗漏释放
B.代码047行忽略返回值,可能会导致后续访问空指针
C.代码052行可能会重复释放资源
D.代码015行申请的资源可能会遗漏释放
E.代码022行可能会访问非法地址
F.代码022行可能会拷贝越界

第21题

INT main(VOID){    UINT uiI;    ULONG ulII;    UINT64 uiIII;    VOID *pIV;    UCHAR aucV[4] = {0xCC, 0xCC, 0xCC, 0xCC};    /* 语句I */    uiI = 0x80000000U;    printf("%d\r\n", uiI);        /* 语句II */    ulII = ~0UL;    printf("%#X\r\n", ulII);    /* 语句III */    uiIII = ~0ULL;    printf("%#X\r\n", uiIII);    /* 语句IV */    pIV = &uiIII;    printf("%#X\r\n", pIV);    /* 语句V */    (VOID)sscanf("11:22:33:44", "%x", &aucV[0]);    printf("%X:%X:%X:%X\r\n", aucV[0], aucV[1], aucV[2], aucV[3]);    return 0;}
关于以上程序描述正确的有:
A.语句I,输出结果为负数
B.语句II,64位环境输出结果被截断
C.语句III,32/64位环境输出结果被截断
D.语句IV,64位环境输出结果被截断
E.语句V,数组aucV的4个元素都会被改写
F.语句V,如果输出结果为11:0:0:0,说明程序运行在小字节序环境

第22题

/* 代码I */typedef ULONG (* XXX_FUNC)(IN UCHAR *pucBuf, IN ULONG ulLen);/* 代码II */#define XXX_NUM     32ULSTATIC ULONG *g_apulXXX[XXX_NUM];/* 代码III */VOID XXX_Print(VOID){    CHAR *pszXXX = "XXXXXXX";    return;}
关于以上程序的命名规范问题,描述正确的有:
A.代码I,XXX_FUNC命名正确
B.代码I,XXX_FUNC命名错误,应该为XXX_PF
C.代码II,g_apulXXX命名正确
D.代码II,g_apulXXX命名错误,应该为g_paulXXX
E.代码III,pszXXX命名错误,应该为pcXXX
F.代码III,pszXXX命名错误,应该为szXXX
第23题
/* 表项 */typedef struct tagEntry{    UINT uiIndex;   /* 索引 */    UINT uiData;    /* 数据 */}ENTRY_S;/* 代码I */VOID CodeI(IN UINT uiIndex){    ENTRY_S *pstNew;    pstNew = malloc(sizeof(ENTRY_S));    pstNew->uiIndex = uiIndex;    return;}/* 代码II */ENTRY_S *CodeII(IN ENTRY_S *pstEntry){    printf("%u, %u\r\n", pstEntry->uiIndex, pstEntry->uiData);    free(pstEntry);    return pstEntry;}/* 代码III */ENTRY_S *CodeIII(IN UINT uiIndex){    ENTRY_S *pstNew;    pstNew = malloc(sizeof(ENTRY_S));    if (NULL != pstNew)    {        pstNew->uiIndex = uiIndex;        printf("%u, %u\r\n", pstNew->uiIndex, pstNew->uiData);    }    return pstNew;}/* 代码IV */ENTRY_S *CodeIV(IN UINT uiIndex){    ENTRY_S stEntry;    stEntry.uiIndex = uiIndex;    stEntry.uiData = 0U;    return &stEntry;}
关于以上程序描述正确的有:
A.代码I,既可能访问空指针,有可能遗漏释放资源
B.代码II,可能造成调用者在后续流程中,访问释放后的资源
C.代码III,可能访问内存中的随机值
D.代码IV,可能造成调用者在后续流程中,访问内存中的随机值
第24题
/* 代码I */INT main(VOID){    printf("%#X\r\n", (0xAAAAU & 0xBBBBU) ^ (0xCCCCU | 0xDDDDU));    return 0;}/* 代码II */INT main(VOID){    printf("%#X\r\n", (0x11 << 3) | (0x22 << 2) | (0x33 << 1) | 0x44);    return 0;}/* 代码III */INT main(VOID){    printf("%#X\r\n", 0x12345678U / 16U);     return 0;}/* 代码IV */INT main(VOID){    printf("%u\r\n", 0x87654321U % 32U);    return 0;}
关于以上程序描述正确的有:
A.代码I,输出结果为0X7777
B.代码II,输出结果为0X11223344
C.代码III,输出结果为0X1234
D.代码III,输出结果为0x123456
E.代码IV,输出结果为1
F.代码IV,输出结果为33
第25题
以下描述正确的有:
A.10进制数200转换成2进制数为10001100
B.10进制数200转换成8进制数为310
C.10进制数200转换成16进制数为C8
D.16进制数777转换成8进制数为3567
E.8进制数777转换成16进制数为FF1
第26题
typedef struct tagA{    UCHAR ucA1;    UINT64 uiA2;    UCHAR ucA3;}A_S;typedef struct tagB{    UINT uiB1;    A_S stB2;    UINT uiB3;}B_S;INT main(VOID){    B_S stData = {0};    VOID *pData;    A_S *pstA;    /* 语句I */    printf("%lu\r\n", sizeof(stData));    /* 语句II */    pData = &stData;    pstA = (A_S *)((UCHAR *)pData + sizeof(UINT));    pstA->ucA1 = 100;    printf("%hhu\r\n", stData.stB2.ucA1);    return 0;}
关于以上程序描述正确的有:
A.语句I,输出结果为18
B.语句I,输出结果为32
C.语句I,输出结果为40
D.语句II,输出结果为0
E.语句II,输出结果为100
F.语句II,输出结果不确定,并且可能产生非对齐访问
第27题
/*双链表 *             pstA                pstB *               |                   | *               v                   v *           +-------+           +-------+           +-------+ *<-pstPrev--|       |<-pstPrev--|       |<-pstPrev--|       |<-pstPrev-- *           |   A   |           |   B   |           |   C   | *--pstNext->|       |--pstNext->|       |--pstNext->|       |--pstNext-> *           +-------+           +-------+           +-------+ */typedef struct tagDll_Node{    struct tagDll_Node *pstPrev;    /* 前一结点 */    struct tagDll_Node *pstNext;    /* 下一结点 */    ULONG ulData;                   /* 数据 */}DLL_NODE_S;/* 代码I */pstB->pstPrev->pstNext = pstB->pstNext;pstB->pstNext->pstPrev = pstB->pstPrev;free(pstB);/* 代码II */pstA->pstNext = pstA->pstNext->pstNext;pstA->pstNext->pstNext->pstPrev = pstA;free(pstB);/* 代码III */pstA->pstNext = pstB->pstNext;pstB->pstNext->pstPrev = pstA;free(pstB);/* 代码IV */pstA->pstNext = pstA->pstNext->pstNext;pstA->pstNext->pstPrev = pstA;free(pstB);
双链表结构如上所示,已知节点pstA和pstB,下列描述正确的有:
A.代码I,可删除“节点B”
B.代码II,可删除“节点B”
C.代码III,可删除“节点B”
D.代码IV,可删除“节点B”
第28题
/* 单链表 *             pstA                pstB *               |                   | *               v                   v *           +-------+           +-------+           +-------+ *           |       |           |       |           |       | *--pstNext->|   A   |--pstNext->|   B   |--pstNext->|   C   |--pstNext-> *           |       |           |       |           |       | *           +-------+           +-------+           +-------+ */typedef struct tagSll_Node{    struct tagSll_Node *pstNext;    /* 下一节点 */    ULONG ulData;                   /* 数据 */}SLL_NODE_S;/* 代码I */pstA->pstNext = pstX;pstX->pstNext = pstA->pstNext;/* 代码II */pstA->pstNext = pstX;pstX->pstNext = pstB;/* 代码III */pstX->pstNext = pstA->pstNext;pstA->pstNext = pstX;/* 代码IV */pstX->pstNext = pstA;pstB->pstNext = pstX;
单链表结构如上所示,已知节点pstA和pstB,下列描述正确的有:
A.代码I,可在“节点A”后插入“节点X”
B.代码II,可在“节点A”后插入“节点X”
C.代码III,可在“节点A”后插入“节点X”
D.代码IV,可在“节点A”后插入“节点X”
第29题
/* 判断uiData能否被8整除 */BOOL_T Divisible_8(IN UINT uiData){    BOOL_T bDiv;    /*if (...)*/    {        bDiv = BOOL_TRUE;    }    else    {        bDiv = BOOL_FALSE;    }    return bDiv;}
在代码006行写入以下判断 完成函数功能的有:
A.if (uiData == ((uiData /8) * 8))
B.if (uiData == ((uiData /8) * 8) + (uiData % 8))
C.if (0 == (uiData % 8))
D.if (uiData == ((uiData >> 4) << 4))
E.if (uiData == ((uiData << 4) >> 4))
F.if (0 == (uiData & 0x7))
第30题
INT main(VOID){    if (-1L < 0U)    {        printf("TRUE\r\n");    }    else    {        printf("FALSE\r\n");    }    return 0;}
关于以上程序描述正确的有:
A.32位环境输出结果为TRUE,64位环境输出结果为FALSE
B.32位环境输出结果为FALSE,64为环境输出结果为TRUE
C.32/64位环境输出结果均为TRUE
D.32/64位环境输出结果均为FALSE
E.应杜绝表达式的两个操作数出现符号和长度都不一致的情况

参考答案:

第01题(B)

第02题(ABCDEF)

第03题(BCE)

第04题(A)

第05题(E)

第06题(CE)

第07题(ABCEF)

第08题(D)

第09题(AD)

第10题(F)

第11题(D)

第12题(B)

第13题(ABC)

第14题(ACDEF)

第15题(AC)

第16题(AE)

第17题(AD)

第18题(ABC)

第19题(ABCDEF)

第20题(CD)

第21题(ABCDEF)

第22题(BCE)

第23题(ABCD)

第24题(AE)

第25题(BCD)

第26题(CD)

第27题(ACD)

第28题(BC)

第29题(ACF)

第30题(BE)

0 0
原创粉丝点击