一、不定项选择:
1、 以下描述正确的是( )
A 1个字节(byte)由8个比特(bit)组成。 B sizeof(θx AABBCCDD)的结果是8。
C signed char类型的取值范围是-128~128。 D unsigned char类型的取值范围是θ~256。
2、 以下代码的结果是( )
#define ADD(x,y) x+y /*加*/ #define SUB(x,y) x-y /*减*/ #define MUL (x,y) x*y /*乘*/
unsigned int uiA;
uiA = MUL(ADD(9,2),SUB(6,3));
A uiA=15 C uiA=33 B uiA=18 D uiA=63
3、 以下代码运行的结果是( ) 代码Ⅰ
unsigned int uiA;
uiA = (θxAA & 0xBB) ^(θxCC | θxDD); 代码Ⅱ
unsigned int uiB;
uiB =(θxAA <<24)| (θxBB <<16) | (θxCC <<8) θxDD;
A 代码Ⅰ,uiA=θx77 C 代码Ⅱ,uiB=θxFFFFFFFF B代码Ⅰ,uiA=θx88 D代码Ⅱ,uiB=θxAABBCCDD
4、 以下语句中能够判断uiNum(unsigned int)可以被16整除的有( ) A if(((uiNum / 16 * 16)== uiNum) B if((uiNum % 16)==θ) C if((uiNum & 0x0F)==θ) D if(((uiNum >> 4)<< 4)==uiNum)
5、关于以下代码,描述正确的是( )
代码Ⅰ: 代码Ⅲ:
const char *pcStr = “abcdefg” typedef unsigned int*pui_t1; #define pui_t2 unsigned int * 代码Ⅱ: pui_t1 pui A,pui B; void string_sizeof(char szStr1[10]) pui_t2 pui C,pui D; {
char szStr2[10] = “12345”; 代码Ⅳ: printf(”%u,”, sizeof(szStr1)); unsigned int uiA =100
printf(”%u\\r\\n”, sizeof(szStr2)); pintf(“%s\\r\\n”. uiA); return;
}
A 代码Ⅰ const修饰符表明pcStr指向的内容不能修改; B 代码Ⅱ 程序的运行结果是”4,10”
C 代码Ⅲ puiA、puiB、puiC和puiD都是unsigned int*类型的变量;
D 代码Ⅳ 打印unsigned int时不应该使用”%s”,会导致程序访问非法地址
6关于结构的大小,以下描述正确的有( )
struct A_S struct C_U { {
unsigned short us1; unsigned short us1;
unsigned short us2; unsigned short us2; unsigned short us3; unsigned short uc3; }; };
union B_S union D_U { {
unsigned char uc1 unsigned char unsigned int ui2; unsigned int unsigned short us3; unsigned short}; };
A. 结构struct A_S的大小是6 B. 结构struct B_S的大小是12 C. 联合union C_U的大小是6 D. 联合union D_U的大小是4
7关于链表操作,以下描述正确的有( ) 单链表: pstNext A pstNext pstNext pstNext B C pstA pstB struct SLL {
struct SLL *pstNest;/*下一节点*/ };
uc1;
ui2; us3; 双链表:
pstNext pstNext pstNext pstPre pstPre pstPre A B C pstA pstB
struct DLL {
struct DLL*pstNext;/* 下一结点*/ struct DLL*pstPrev;/* 前一结点*/ };
A.单链表以下代码可以删除节点B
pstA-> pstNext= pstA->pstNext ->pstNext; free(pstA->pstNext);
B. 单链表以下代码可以删除节点B pstA-> pstNext= pstB->pstNext free(pstB);
C.双链表以下代码可以删除节点B
pstB-> pstpre->pstNext= pstB->pstNext; pstB-> pstNext -> pstpre = pstB-> pstpre; free(pstB);
D. 双链表以下代码可以删除节点B
pstA->pstNext=pstA->pstNext->pstNext; pstA->pstNext->pstNext-> pstpre= pstA; free(pstB);
8. 以下代码的运行结果是( )
代码Ⅰ unsigned int uiCount=θ unsigned int uiCount=while(uiCount<=5) switch{ {
if(uiCount<=5) case continue; uiCount=5 ++Uicount; default} uiCount=1printf(’’uiCount=%u\\r\\n’’,uiCount); }
printfuiCount);
代码Ⅲ
θ (uiCount) θ:
; :
; (’’uiCount=%u\\r\\n’’,代码Ⅱ
unsigned int uiCount=θ 代码Ⅳ
do unsigned int uiCount=θ
{ for(;uiCount<=10;++uiCount)
++uiCount; if(uiCount==5) while (uiCount>=5); break; printf(’’uiCount=%u\\r\\n’’,uiCount); printf(’’uiCount=%u\\r\\n’’,uiCount);
A.代码Ⅰ, uiCount=5 B.代码Ⅱ, uiCount=5 C.代码Ⅲ, uiCount=1 D.代码Ⅳ, uiCount=5
9. 以下代码的运行结果是( )
unsigned char aucData[ ] = {θxθθ,θx11,θx22,θx33,θx44,θx55,θx66,θx77 };unsigned char *pucA = aucData;
unsigned int *puiB = (unsigned int *)aucData;
printf(’’%u\\r\\n’’,sizeof(aucData)); /*代码Ⅰ */ printf(’’0x%x\\r\\n’’, *(pucA+1)); /*代码Ⅱ */ printf(’’0x%x\\r\\n’’, *(puiB+1)) ; /*代码Ⅲ */ printf(’’0x%x\\r\\n’’, *(unsigned char *)(puiB+1)) ; /*代码Ⅳ */
A.代码Ⅰ, 运行结果是7
B.代码Ⅱ, 运行结果是θx22
C.代码Ⅲ, 运行结果不确定,视CPU字节序而定 D.代码Ⅳ, 运行结果是θx44
10. 实现一个swap函数,可以帮助调用者交换两个变量的值,以下描述正确的有(例如:
int iA=100; int iB=200;
printf(’’%d,%d\\r\\n’’,iA,iB); /*使用swap函数进行交换*/ printf(’’%d,%d\\r\\n’’,iA,iB); 转换前后的结果应该是: 100,200 200,100
A. 函数和调用处应该是如下形式 B. 函数和调用处应该是如下形式 void swap(int iA,int iB) void swap(int iA,int iB) { {
int iC; int *piA=&iA; iC = iA; int *piB=&iB;
) iA = iB; int iC;
iB = iC; iC = *piA; return; *piA =* piB; } * piB =iC; return; int iA=100; }
int iB=200; int iA=100; swap(iA,iB); int iB=200; swap(iA,iB);
C.函数和调用处应该是如下形式 D. 函数和调用处应该是如下形式 void swap(int *piA,int *piB) void swap(int *piA,int *piB) { {
int iC; int iC; iC = * piA; iC = * piA; *piA =*p iB; *piA =*p iB; *piB = iC; *piB = iC; return; return; } }
int iA=100; int *piA=NULL; int iB=200; int *P iB=NULL; swap(&iA,&iB); *piA=100; *piB=200; swap(piA,piB);
11. 关于代码缺陷预防,以下描述正确的有( )
A.动态申请的内存资源释放后,建议将之前记录内存地址的指针清空,预防野指针。 B.字符串一定要确保有结束符,否则有访问越界的风险。
C.局部变量的空间来自堆栈,建议初始化在使用,否则有访问随机值的风险。 D.对于动态申请的内存资源,使用完毕后建议主动释放。
12. Ⅰ、Ⅱ、Ⅲ、Ⅳ分别代表四个图形,已知它们的某些组合形式,则以下描述正确的是
( )
Ⅰ和Ⅱ组合: Ⅲ和Ⅳ组合: Ⅱ和Ⅳ组合:
A.Ⅰ是 B.Ⅱ是 C. Ⅲ是 D. Ⅳ是