考题GT.docx
- 文档编号:11036383
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:45
- 大小:36.87KB
考题GT.docx
《考题GT.docx》由会员分享,可在线阅读,更多相关《考题GT.docx(45页珍藏版)》请在冰豆网上搜索。
考题GT
单选题
1.可重定位内存分区分配目的为
A解决碎片问题
B便于多作业共享内存
C回收空白区方便
D摆脱用户干预
2.有下列代码片段
inta[]={0,1,2,3,4,5,6,7,8};
int*p,*q;
p=a;
q=&a[2];
则a[q-p]的值为
A2
B3
C7
D8
3.正确的是
Achar*s;s=”Olympic”;
Bchars[7];s=”Olympic”;
Cchar*s;s={”Olympic”};
Dchars[7];s={”Olympic”};
4.32位平台下,
voidf()
{
char*a[2][2][3];
printf(“%d%d%d%d”,sizeof(a),sizeof(*(&a)),sizeof(a[0]),sizeof(*(a[0])))
}
A48242412
B48482412
C48482424
D121263
5.局部变量char*str="ZTE";请问strlen(str)和sizeof(str)分别是多少?
A33
B43
C44
D34
6.intx=2,y=3;
x=x^y;
y=x^y;
x=x^y;
printf(“%d%d\n”,x,y);
A32
B22
C23
D33
7.在OSI七层网络模型中,位于第2层的是
A数据链路层
B物理层
C传输层
D网络层
8.软件复用是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的进程。
为了提高构件(Component)的复用率,通常要求构件具有较好的
A专用性和不变性
B专用性和可变性
C通用性和不变性
D通用性和可变性
9.下面正确的是
Abreak语句只应用于循环体中
Bcontinue语句只应用于循环体中
Cbreak是无条件跳转语句,continue不是
Dbreak和continue的跳转范围不够明确,容易产生问题
10.有C语句(exp)?
a++:
b--;,则下列表达式中完全等价于(exp)的是
A((exp)==0)
B((exp)!
=0)
C((exp)==1)
D((exp)!
=1)
11.在OSI七层网络模型中,第3层是
A数据链路层
B物理层
C传输层
D网络层
12.voidmain()
{
inti,j;
chararray[7]=”a0\0a0\0”;
i=sizeof(array);
}
A22
B78
C72
D82
13.面向对象的程序设计中的虚函数(virtualfunction),正确的是
A虚函数的特征就是普通外界函数无法直接访问该函数
B虚函数具有私有性
C虚函数具有多态性
D虚函数的特征就是普通外界函数可以直接访问该函数
14.32位系统,int类型的变量的内存占几个字节
A2
B4
C8
D1
15.下列memcpy函数的声明,哪一个最合理:
Avoid*memcpy(void*dest,void*src,size_tn);
Bvoid*memcpy(constvoid*dest,void*src,size_tn);
Cvoid*memcpy(constvoid*dest,constvoid*src,size_tn);
Dvoid*memcpy(constvoid*dest,constvoid*src,size_tn);
16.voidmain()
{
inta[5]={10,20,30,40,50};
int*ptr=(int*)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
}
A2010
B2020
C2030
D2050
17.已知某系统架构下,C函数用栈传递参数,参数的入栈顺序为从右到左,且栈由高地址向低地址方向增长。
那么在该系统下,下面的函数f的返回值为
intf(inta,intb)
{
return(&b-&a);
}
A1
B2
C3
D4
18.净室软件工程(Cleanroom)是软件开发的一种形式化方法,可开发较高质量软件。
它发现和排除错误的主要机制是
A正确性验证
B黑白盒测试
C集成测试
D基本路径测试
19.如下代码:
#defineINT_PTRint*
INT_PTRp1,p2;
inta,b;
那么,下面哪一句代码编译时可能产生error或warning:
Ap1=&a;
Bp2=&b;
CA和B均可
DA和B均不可
20.下列代码执行后,变量a的值为多少
inta=128*128*256+7;
a=((~a)+1)&0xf;
A15
B7
C8
D9
21.算法的主要逻辑如下:
inti=1;intj;while(i AO(2n) BO(n+log2n) CO(nlog2n) DO(n2) 22.#include #defineN2 #defineMN+3 #definePM*2 main() { printf("%d",P); } 输出结果是: A10 B8 C6 D12 23.设单链表中结点的结构是(data,link),已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是: As->link=p;p->link=s; Bp->link=s;s->link=p; Cs->link=p->link;p=s; Ds->link=p->link;p->link=s; 24.以下能够实现“判断一个非零整数x是否是2的幂”的表达式是 Ax&(~x) Bx&(! x) Cx&(x-1) Dx&(-x) 25.下列哪一种代码特征导致栈溢出的可能性最小: A局部变量过大 B函数数量过多,函数体代码过长 C函数调用层次过深 D局部变量过多 26.chara[]={'a','b','c','0'};strlen(a)等于多少? A2 B3 C4 D以上都不正确 27.有关系统调用的论述,错误的是 A系统调用实际上是一个中断(异常) B系统调用往往是由指令触发 C系统调用必须在用户态进程中发起 D系统调用可能导致当前进程被切换(抢占) 28.i最后等于多少? inti=1; intj=++i; if((i>j++)&&(i++==j))i+=j; A2 B3 C4 D6 29.设有下面的程序段 chars[]="zte"; char*p=NULL; p=s; 则下述叙述正确的是 As和p完全相同 B数组s中的内容和指针变量p中的内容相等 C数组s的长度和指针p指向的字符串长度相等 D*p与s[0]相等 30.以下代码中,有错误的是: Achar*a="Abcdefg"; Bchara[8];\na="Abcdefg"; Cchar*a;\na="Abcdefg"; Dchara[8]="Abcdefg"; 31.c语言的编译系统对宏的处理是 A在程序运行时进行的 B在程序链接时进行的 C在对源程序中其他成分正式编译之前进行的 D和C程序中的其他语句同时进行编译的 32.定义如下联合体类型和变量 union { unsignedcharc[2]; unsignedinti; }m; m.i=~0xFF; 则在little-endian字节序的机器上m.c[0],m.c[1]分别为 A0,0xFF B0xFF,0 C0,0 D0xFF,0xFF 33.语句int(*p)()的含义是: Ap是一个指向一维数组的指针变量 Bp是指针变量,它指向一个整型数据的指针 Cp是一个指向函数的指针,该函数的返回值为整型 D以上答案都不对 34.有如下程序片断,说法正确的是: char*p="hello"; *(p+1)='w'; A语法错误,编译通不过 B链接通不过 C执行错误 D都不对 35.下列关于动态库的说法错误的是: A利用动态库可以实现软件的在线升级 B多个程序通过共享动态库可以减少对磁盘空间及内存的需求 C动态库的在线升级需要先卸载再重新加载 D动态库中的全局变量与函数的逻辑地址,是在编译阶段确定的 36.对以下C语言类型声明语句的解释正确的是 double*constcptr; Acptr指向的地址以及地址内的内容均可以改变 Bcptr指向的地址不能改变 Ccptr指向的地址内的内容不能改变 Dcptr指向的地址以及地址内的内容均不能改变 37.某函数内有如下代码 staticinta=3; staticintb; intc=4; intd; b=5; d=6; …. 编译时,下面哪一句并不生成相应的赋值的机器指令: Astaticinta=3 Bintc=4 Cb=5 Dd=6 38.以下不能正确进行字符串赋初值的语句是 Acharstr[5]="good! "; Bcharstr[]="good! "; Cchar*str="good! "; Dcharstr[5]={'g','o','o','d'}; 39.下列叙述中错误的是 A局部变量必须赋值之后才能使用 B构成C程序的基本单位是函数,任意函数名都可以由用户命名 C用户申请到的堆内存中存放的数据是不确定的 D分号是C语句之间的分隔符,是语句的一部分 40.char*p=NULL;inta[10]={0};sizeof(p)=? Sizeof(a)=? A1,4 B1,40 C4,4 D4,40 41.#definefunc_1(a,b)a+b #definefunc_2(a,b,c)a*(b+a*c) intfunc_result=func_1(2,3)+func_2(func_1(2,4),5,3); result=? A83 B143 C41 D99 42.c语言中定义数组元素时,数组下标的数据类型允许是: __; 引用数组元素时,下标允许的数据类型是: __。 A常量表达式;常量表达式 B整形常量或表达式;常量表达式 C整形常量;整形常量或表达式 D常量表达式;整形常量或表达式 43.已知如下变量定义inti=0,a[100];下列表达式错误的是: Asizeof(int) Bsizeof(a[100]) Csizeofint Dsizeofi 44.structtest{};sizeof(structtest)=? A0 B1 C2 D4 45.如果存在结构体structstack{int*p,intcnt=0}变量stackTest,在执行一段时间以后,想要清空stackTest,以下正确的代码是? AstackTest.p=NULL; stackTt=0; Bif(stackTest.p)free(stackTest.p); stackTt=0; Cif(stackTest.p)free(stackTest.p); stackTest.p=NULL; stackTt=0; Dfree(stackTest.p); 46.若已定义chars[10];则在下面表达式中不表示s[1]的地址是 As+1 Bs++ C&s[0]+1 D&s[1] 47.有定义语句: inta[]={1,2,3,4,5,6,7},*p=a,*q=&a[5]; 则下列表达式中值不等于5的是 A*q-- B*--q C--*q Dq-p 48.如有下面的代码 WORD32a[]={1,2,3}; WORD32b=0; WORD32c=0; b=&a[2]-&a[0]; c=(BYTE*)(&a[2])-(BYTE*)&a[0]; 则执行之后,b和c各等于 A2,2 B8,8 C2,8 D8,2 49.WORD32*(*ptr)();则以下叙述中正确的是 Aptr是指向一维数组的指针变量 Bptr是指向WORD32型数据的指针变量 Cptr是指向函数的指针,该函数返回一个WORD32型数据 Dptr是指向函数的指针,该函数的返回值是指向WORD32型数据的指针 50.charstr1[]="abc"; charstr2[]="abc"; constcharstr3[]="abc"; constcharstr4[]="abc"; constchar*str5="abc"; constchar*str6="abc"; char*str7="abc"; char*str8="abc"; cout<<(str1==str2)< cout<<(str3==str4)< cout<<(str5==str6)< cout<<(str7==str8)< 输出为: A0101 B0011 C0110 D1001 51.拥有36位地址线的32位处理器进程最大虚拟空间是 A2G B4G C64G D以上都不对 52.以下两段代码执行的结果分别为: 代码一 #include #include Enum { A=10, B, C }x; #defineA20 intmain() { printf("C=%d",C); return0; } 代码二 #include #include #defineA20 enum { A, B, C }x; intmain() { printf("C=%d",C); return0; } AC=22,C=22 BC=12,C=22 CC=12,编译不通过 D编译不通过,编译不通过 53.以下说法中正确的是: A使用全局变量会占用更多的内存。 B使用全局变量能加快程序的运行速度。 C使用全局变量会污染局部变量的名字空间。 D以上都正确。 54.下面哪段代码不能将str中的内容从"zhe"改为"zte" Acharstr[]={'z','h','e',0};\nstr[1]='t'; Bcharstr[4]={'z','h','e',0}\n*(str+1)='t'; Cchar*str="zhe";\nchar*p=0;\np=str;\n*(p+1)='t'; Dcharstr[]="zhe";\nchar*p=0;\np=str;\n*(p+1)='t'; 55.有如下程序片断,说法正确的是: char*p="hello"; *(p+1)='w'; A语法错误,编译通不过 B链接通不过 C执行错误 D都不对 56.有以下程序段 inti=0; while(i=1)i++; while循环执行的次数是 A有语法错,不能执行 B无限次 C执行1次 D一次也不执行 57.mmap将目标文件映射到 A当前进程的虚拟空间 B当前进程的物理空间 C内核的虚拟空间 D内核的物理空间 58.以下不能将s所指字符串正确复制到t所指存储空间的是 Awhile(*t=*s){t++;s++;} Bfor(i=0;t[i]=s[i];i++); Cdo{*t++=*s++;}while(*s); Dfor(i=0,j=0;t[i++]=s[j++];); 59.面向对象程序设计的基本思想是通过建立和客观实际相对应的对象,并通过这些对象的组合来创建具体的应用。 对象是: A数据结构的封装体 B数据以及在其上的操作的封装体 C程序功能模块的封装本 D一组有关事件的封装体 60.下列C程序运行之后,a1、a2、a3的值为: inta1,a2,a3; intb=5,c=7,d=0; a1=! d; a2=(b! =c);b? c++: d++;a3=d; A0,0,0 B0,1,1 C1,0,1 D1,1,0 61.对于printf("%")用法描述错误的是: A%3d表示输出3位整型数,不够3位右对齐 B%9.2f表示输出场宽为11的浮点数,其中小数位为2,整数位为9 C%04d表示在输出一个小于4位的数值时,将在前面补0使其总宽度为4位 D%6.9s表示显示一个长度不小于6且不大于9的字符串。 若大于9,则第9个字符以后的内容将被删除。 62.请选择下列C语句中关于typedef用法错误的一个 AtypedefINTint; Btypedefunsignedcharbyte; Ctypedefcharstr40[41]; Dtypedeflongfloatdouble; 63. 多选题 1.不能把文件内部位置指针移到开始的语句是,FILE*fp,文件总长度为length。 Afseek(fp,0,SEEK_CUR); Bfseek(fp,-1*length,SEEK_END) Cfseek(fp,0,SEEK_END) Dfseek(fp,0,SEEK_SET) 2.在下列存储器的分配算法中,必须对空闲区的大小进行排序的是 A最先适应 B最优适应 C随机适应 D最坏适应 E循环最先适应 3.下列属于TCP/IP协议族的应用层协议 ASMTP BFTP CSNMP DICMP 4.下面正确给字符串变量charstr[8]置空的是 A*str=’\0’; B*str=0; C*str=’0’; D*str=”0”; 5.如果已定义了一个C++类CMyList并有以下语句: CmyListlist(3)正确的是 A该语句会创建一个CMyList类的一个对象 B该语句会创建一个CMyList类的3个对象 C必须为类CMyList定义一个构造函数 D必须为类CMyList定义一个析构函数 E必须定义函数CMyListlist(int) 6.单元测试任务包括 A模块接口和边界条件测试 B模块局部数据结构测试 C模块的各条错误处理通路测试 D模块中所有独立执行通路测试 7.下面属于Linux系统进程间通信机制的有 A管道 B信号量 C信号 D套接字 8.以下叙述中正确的是 A对于double类型数组,不可以直接用数组对数组进行整体输入或输出。 B当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息。 C可以通过赋初值的方式确定数组元素的个数。 D数组名代表的是数组所占存储区的首地址,其值不可改变。 9.已知数组D的定义是intD[4][8];,现在需要把这个数组作为实参传递给一个函数进行处理。 下列说明中可以作为对应的形参变量说明的有 AintD[4][] Bint*s[8] Cint(*s)[8] DintD[][8] 10.以下说法不正确的是 A定义函数时,形参的类型说明可以放在函数体内 Breturn后边的值不能为表达式 C如果函数的类型与返回值表达式的类型不一致,以函数值类型为准 D如果形参与实参的类型不一致,以实参类型为准 11.下列叙述正确的是 Arealloc的功能是改变原有内存区域的大小。 Bcalloc的功能是动态分配内存并进行清零初始化。 Cnew与delete对应使用。 Dmalloc与free对应使用。 12.下列关于C语言中static关键字的描述正确的是 A全局变量前加static表示该变量的作用域限制变量所在的文件中。 B局部变量前加static表示该变量的作用域限制在变量所在的函数中。 Cstatic修饰的局部变量分配在内存的全局数据区。 Dstatic只能用来修饰变量,不能用来修饰函数。 13.关于OSI参考模型层次划分原则的描述中,正确的是 A各节点都有相同的层次。 B不同节点的同等层具有相同的功能。 C高层使用底层提供的服务。 D同一节点内相邻层之间通过对等协议实现通信。 14.下列属于软件单元的是 A一个或多个函数。 B一个或多个类。 C组件。 D功能模块。 15.使用free的注意事项 A调用free()释放内存后,不能再去访问被释放的内存空间。 内存被释放后,很有可能该指针仍然指向该内存单元,但这块内存已经不再属于原来的应用程序,此时的指针为悬挂指针(可以赋值为NULL)。 B不能两次释放相同的指针。 因为释放内存空间后,该空间就交给了内存分配子程序,再次释放内存空间会导致错误。 也不能用free来释放非malloc()、calloc()和realloc()函数创建的指针空间,在编程时,也不要讲指针进行自加操作,使其指向动态分配的内存空间中间的某个位置,然后直接释放,这样也有可能引起错误。 C在进行C语言程序开发中,malloc/free是配套使用的,即不需要的内存空间都需要释放回收。 Dfree()的入参可以为空指针。 16.下列哪些代码特征容易导致堆栈溢出 A局部变量过大 B使用递归算法 C函数嵌套层次过多 Dmalloc申请内存过多 17.现有全局变量gCount及函数voidfun(void)定义如下 intgCount=0; voidfun(void) { gCount++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考题 GT