当前位置:首页 > 计算机二级考试复习资料答案1
【解析】可以使用函数指针来调用函数。调用形式为:(*指针变量)(实参表列)。
63. 答案:D 【解析】argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。
64. 答案:A
【解析】 函数指针的定义形式是:数据类型标识符(*指针变量名)()。void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。所以正确答案为选项A)。
65. 答案:B
【解析】 子函数fun功能为交换形式参数的值,即交换指针变量a和b的值。但是fun函数并不能够交换实参的值,因此fun(p,q)不能交换p和q的值,所以第一个printf语句的输出为3,5。第二个fun函数对x和y的地址进行了操作,同样不能交换x和y的值,并且不能影响p和q指针指向的数据,因此第二个printf语句的输出为3,5。
66. 答案:A
【解析】 在f(int *p,int *q)函数中,执行p=p+1将p所对应的地址加1,而*q=*q+1是将q所指向的n的地址所对应的值加1,即m的地址所对应的值不变,而n的值为3。
67. 答案:B
【解析】如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,所以正确答案为B)。
68. 答案:C
【解析】指针变量m和z分别指向整型变量y和i,所以这两个指针变量中存储的地址是不同的。变量x接受的是一个关系运算的结果,因为两个地址是不同的,所以\的判断结果为0。
69. 答案:A
【解析】C语言中[ ]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的\结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。
70. 答案:C
【解析】本题考查了scanf函数的用法,该函数的一般形式为\格式控制字符串\,地址表列)\,其中的地址表列应当是存放输入数据变量的地址。在选项C)中,指针p就是变量c的地址。故本题答案为C)。
71. 答案:B
【解析】本题经过定义语句和赋值后,p表示的是变量a的地址,*p表示的是变量a的值。
72. 答案:C
【解析】scanf输入字符串有一点要注意的是格式控制串必须用%s。
73. 答案:A
【解析】数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。
74. 答案:A
【解析】通过地址来引用二维数组,若有以下定义:int a[3][4],i,j;且当0≤i<3,0≤j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。
75. 答案:C
【解析】在C语言中,二维数组的名字表示的是二维数组的地址,表达式*(w+1)表示的是二维数组的第一行的第二个元素。在其前面再加上*(*(w+1))就是错误的表达式。
76. 答案:A 【解析】本题考查了二维数组元素的引用方法。选项A)中a+i指向了数组a的第i+1行,*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a+i)+j)取到的是数组a的a[i][j]元素。
77. 答案:D
【解析】这个题目的功能是实现两个有序字符串,合并成一个新的有序的字符串。
78. 答案:C
【解析】本题考查了一维字符数组的定义和初始化。选项C)中str[10]初始化为空,可以不必进行类似\的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用\分隔而不是\。\,所以选项C)错误。
79. 答案:C
【解析】选项A)和B)定义的数组空间太小,至少应该为6个字符的长度才可以。选项D)中的指针s未赋初值,所以指向一个不确定的地址,因而不能用scanf输入数据到这一指针所指向的地址中。
80. 答案:C
【解析】C)选项中,当复制完s所指字符串的最后一个非'\0'字符后,指针s指向了'\0',循环结束,没有将字符串结束符0复制到t中,因此C)选项是错误的。
81. 答案:C
【解析】子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结果为选项C)。
82. 答案:A 【解析】计算字符串长度是从第一个字符开始到'\0'前的一个字符结束。第一个字符串长度为5,分别为'a'、'b'、'c'、'd'、'!'。第二个字符串的长度也为5,分别为'\n','1','2','3','\\\\',其中'\n'和'\\'均表示一个字符。
83. 答案:C
【解析】本题考查的重点是复制字符串--使用strcpy()函数,该函数的调用方式是:strcpy(字符数组, 字符串),其中\字符串\可以是字符串常量,也可以是字符数组。函数的功能是:将\字符串\完整地复制到\字符数组\中,字符数组中原有的内容被覆盖。
84. 答案:A
【解析】本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1=\如果想把\这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如,strcpy(str1,\或strcpy(str1,str2);,注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
85. 答案:A
【解析】此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,即strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。
86. 答案:C
【解析】本题考查两个知识点:strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的'\0',strcpy函数的功能是把后面的字符串复制到前面字符串所指向的空间。
87. 答案:D
【解析】该程序先判断a[i]< a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。
88. 答案:C 【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n 的值,输出n的值为61。
89. 答案:C 【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个十进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n 的值。输出n的值为61。故本题答案为C)。
90. 答案:A
【解析】本题考查的是函数的递归问题。函数fun的第二个参数是地址,所以通过指针p可以改变其对应实参的值。本题中,主函数调用fun函数时传递给参数n的值为3,fun函数又递归调用了两次自身。f1和f2的值都变为1,通过指针p的引用,变量s的值最终变为2。故本题答案为A)。
91. 答案:B
【解析】n=0或n=1是递归的终止条件,然后利用已知值逐步递推求出未知值。
92. 答案:A
【解析】由函数fun(int *a,int n)中语句if(a[j]> a[k]) k=j;可知当前k是记录数组中较大数据值所在位置的下标变量,所以该函数的作用是对数组a中的下标为偶数位置的数据进行从大到小的排序,即对a[0],a[2],a[4],a[6]中的数据 1,3,5,7进行从大到小的排序,其他位置的数据不变,所以答案为A)。
共分享92篇相关文档