31[单选题] 若要通过位运算使整型变量a中的各位数字全部清零,以下选项正确的是( )。
A.a=a&0;
B.a=a10;
C.a=a^0;
D.a=!a;
参考答案:A
参考解析:本题考查位运算符和位运算。“I”运算符,l|0=1,0|0=0,所以选项B中a变量的各位数字保持不变,故B错误;“”’运算符,l^0=1,O^0=1,所以选项C中a变量的各位数字中,1保持不变,0变成1,故C错误;“!”运算符,!1=0,! 0=1,所以选项D中a变量的个位数字中,1变成0,0变成1,故D错误;“&”运算符,l&0=0,0&0=0,所以选项A中各位数字全部清零,故答案为A。
32[单选题] 以下关于字符串的叙述中正确的是( )。
A.空串比空格打头的字符串小
B.两个字符串中的字符个数相同时才能进行字符串大小的比较
C.可以用关系运算符对字符串的大小进行比较
D.C语言中有字符串类型的常量和变量
参考答案:A
参考解析:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数strcmp()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于eonst char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。C选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此A选项是正确的。
33[单选题] 程序调试的任务是( ),
A.设计测试用例
B.验证程序的正确性
C.发现程序中的错误
D.诊断和改正程序中的错误
参考答案:D
参考解析:程序调试的任务是诊断和改正程序中的错误。
34[单选题] 有以下计算公式
若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是( )。
A.if(x>=0)y=sqrt(x);if(X<0)y=sqrt(-x);
B.if(x>=0).V=sqrt(x);else y:sqrt(-x);
C.y=sqrt(x);if(x<0)y=sqrt(-x);
D.y=sqrt(x>=0? x:-x);
参考答案:C
参考解析:本题重点考查的知识点是:sqrt()函数。sqrt()函数的作用是计算平方根,要求输出的参数g必须大于等于0。题目公式的要求是无论x大于等于0还是小于0,y的值都为x绝对值的开方。选项c中调用了sqrt(x)函数,而没有判断x的正负,则y=sqrt(x)会出错。
35[单选题] 假定已建立以下链表结构,且指针p和q已指向如图所示的结点:
则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是( )。
A.p->next=q->next;free(q);
B.p=q->next;free(q);
C.p=q;free(q);
D.(*p)•next=(*q).next;free(p);
参考答案:A
参考解析:本题考查删除链表中的结点操作,其方法是将要删除结点的上个结点的下个结点指向要删除结点的下个结点,然后释放该要删除结点,所以选项A正确。
36[单选题] 有以下程序:
程序运行后的输出结果是( )。
A.1
B.11
C.6
D.21
参考答案:D
参考解析:本题考查位运算,以及按位或操作,将a左移一位相当于是将a乘以了4,所以a<<2等于20,二进制表示为00010100,与b按位或得到00010101,即21,所以选项D正确。
37[单选题] 若有以下定义和语句:
则输出结果是( )。
A.10 7
B.10 5
C.5 5
D.5 8
参考答案:C
参考解析:strlen函数返回字符串的长度,求字符串1长度时,遇到结束标志‘\0’为止,但是长度不包括结束标识。1字符数组sl的后5个元素没有赋值,都为‘\0’,即“abcd!”后1为‘\0’。所以strlen(s1)的值为5。字符指针s2所指向的字1符串中,\n为转义字符换行符,表示1个字符,\\也为转义字1符,代表\,也是l个字符,其后为字符串结束标识‘0’;所以strlen(s2)的值也为5。因此C选项正确。
38[单选题] 有以下程序(注:字符a的ASCII码值为97):
程序运行后的输出结果是( )。
A.abc
B.789
C.7890
D.979899
参考答案:B
参考解析:字符指针s指向字符串“abe”,do...whi1e()循环中首先将s指向的字符与10进行求余操作,然后打印出余数,再将指针s向后移动一个位置,指向下一个字符;第一次循环,s指向的字符'a的ASCII码为97,所以与10求余结果为7,输出7,同时s向后移动一位,指向字符‘b’,whi1e()判断条件为true;第二次循环s指向的字‘b’的ASCII码为98,与10求余结果为8,输出8,同时s向后移动一位,指向字符‘c’whi1e()判断条件为true;第三次循环S指向的字符‘c’的ASCII码为99,与10求余结果为9,输出9,同时s向后移动一位,指向空字符‘\0’,空字符的ASCII码为0,所以whi1e()判断条件为fa1se,循环结束,输出结果为789,答案选B。
39[单选题] 有以下程序:
程序运行后的输出结果是( )。
A.3,4
B.4,1
C.2,3
D.1,2
参考答案:C
参考解析:本题考查结构体数组的相关操作,dt为结构体数组,那么指针p指向了结构体数组的一个元素,所以p->x为1,p->y为2,结果为2,3。选项C正确。
40[单选题] 结构化程序的三种基本结构是( )。
A.递归、迭代和回溯
B.过程、函数和子程序
C.顺序、选择和循环
D.调用、返回和选择
参考答案:C
参考解析:仅使用顺序、选择、循环三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。故本题答案为C选项。