当前位置:首页 > 计算机二级考试复习资料答案1
31. 答案:C
【解析】 指针s指向一个字符数组,每进行一次循环,将s中相应的字母的ASCII码对10取余数,并且将余数输出,因为A的ASCII码值是65,所以第一次打印出65=5,第二次打印出66=6,第三次打印出67=7。因此,本题正确答案为C)。
32. 答案:A
【解析】 a为一个指针数组,其中的每个元素都是一个指针。该程序的功能是分别打印4个字符串的首字母。因此本题答案为A)。
33. 答案:C 【解析】 可以将二维数组str看成是一个特殊的一维数组,其元素也是一个数组。那么,str[0]为\,str[1]为\!\。
34. 答案:D
【解析】 定义数组时应指明数组长度,因此选项A)错误;B)项是一个指针,初始化应写为s=\!\;C)项中定义了一个字符数组,初始化应写为s={BOOK!};D)项正确。
35. 答案:A
【解析】语句p=s的作用是把字符数组s的首地址作为初值赋给了指针变量p,并且使p指向了字符数组s的第一个字符s[0]。
36. 答案:A
【解析】函数fun(char *s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={\, \, \, \, \,ss[0],ss[4]的输出结果为xy,aaaacc。所以选项A)为正确答案。
37. 答案:B
【解析】考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志'\0'的地址,因而*(p+3)的值为0。
38. 答案:C
【解析】对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
39. 答案:C
【解析】选项A)char *a;*a=\应改为a=china;,选项B)应该是char str[6];选项D)表述方法有错误。
40. 答案:C
【解析】本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。
41. 答案:D
【解析】C语言中操作一个字符串常量的方法有:① 将字符串常量存放在一个字符数组之中;② 用字符指针指向字符串, 然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时, 根据数组的类型转换规则, 将其转换成字符指针。
42. 答案:B
【解析】存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对字符串\进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。
43. 答案:C
【解析】语句\是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。
44. 答案:A
【解析】指针p1+k相当于指针p1向后移动了k个字符的位置,指针p2同理。
45. 答案:A 【解析】 表达式*b=*a是将a所指的字符赋给b所指的空间,然后,指针a和b依次后移,直到到达指针a所指字符串的结尾。
46. 答案:A
【解析】 fun函数的功能是输出字符串中ASCII码能被2整除的字符,g的ASCII码为103,o的ASCII码为111,d的ASCII码为100,只有d满足。因此,本题答案为D)。
47. 答案:C
【解析】fun函数中使用for循环语句和if条件语句对m进行赋值,主函数的功能是将fun函数中的m返回主调函数并输出。
48. 答案:C
【解析】函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组 a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。所以正确答案为C)。
49. 答案:A
【解析】循环开始前,指针t和s都指向字符串的起始位置,然后通过while循环判断t指向的位置是否为空,同时让t向右移一位。while循环结束时,t自减1,此时t指向的位置是字符串的结束标志′\0′处,故t-s的值是字符串的长度,并不包括结束标志。故本题答案选A)。
50. 答案:A
【解析】在本题的程序中,a和p都是指向字符串的指针数组。调用fun( )函数时,p指向的是数组a的第一个指针元素,此时*p指向的是a的第1个字符串。p自加1之后,*p便指向了数组a的第2个字符串\。故本题答案为A)。
51. 答案:D
【解析】本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符′\\0′)逐个复制到字符串ss的末尾处。故本题答案为D)。
52. 答案:A
【解析】本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用\留下\字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意:在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符'\0'。
53. 答案:A 【解析】本题考查用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。
54. 答案:D
【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应
知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。
55. 答案:B
【解析】调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为\,2,3,4,5\。
56. 答案:B
【解析】尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。另外,应注意表达式*(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。
57. 答案:B 【解析】数组元素可以通过数组首地址和下标的方式来引用,数组元素的下标是从0开始的,也可以将数组首地址赋给一个指针变量,通过指针和下标的方式来引用数组元素。
58. 答案:B
【解析】指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下3和4两个字符了。
59. 答案:B
【解析】本题考查的是指向函数的指针。语句 int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。
60. 答案:C
【解析】在语句\中,由于\的优先级高于\,所以\表示其返回类型为指针的带有两个整型参数的函数。
61. 答案:C
【解析】在本题中,将函数的入口地址赋给指针后就可以用该指针调用函数了。
62. 答案:B
共分享92篇相关文档