(26)c 【解析】 该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组 char *p[2]后,程序中第一个 循环 for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的 p[0]元素(它本身是一个指针)指向了二维数组 ch 的第一行字 符串,并使指针数组的 p[1]元素指向二维数组 ch 的第二行字符串,这样,就使指针数组 p 和二维数组 ch 建立起了一 种对应关系,以后对二维数组 ch 的某个元素的引用就有两种等价的形式:ch[i][j]或 p[i][j]。②对二维数组 ch 的初始 化,使其第一行 ch[0]中存入了字符串"6937",第二行 ch[1]中的内容为字符串"8254"。③程序中第二个循环中的循环 体 s=s*10+p[i][j]-0;的功能是这样的,每执行一次,将 s 中的值乘以 10(也即,将 s 中的数值整体向左移动一位,并在空 出来的个位上添一个 0),再将当前 p[i][j]中的字符量转换为相应的数字,然后把这个数字加到 s 的个位上。 ④注意到 内层循环的循环条件 p[i] [j]> 0 是指 p[i][j]中的字符只要不是字符串结束标志就继续循环,语句 j+=2;是使下 标 j 每次增加 2,也即一个隔一个地从 p[i]所指向的字符串中取出字符。
经过上述解析后,不难看出,该程序首 先从 p[0]所指向的字符串"6937"中一个隔一个地取出字符,分别是6和3,然后从 p[1]所指向的字符串"8254" 中一个隔一个地取出字符,分别是8和5,同时经过转换和相加运算后,结果 s 中的值应该是 6385。 (27)d 【解析】 在格式输入中,要求给出的是变量的地址,而 d)答案中给出的 s[1]是一个值的表达式。 (28)d 【解析】 c 语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项 d)的描述错 误。 (29)b 【解析】 本题中,typedef 声明新的类型名 per 来代替已有的类型名,per 代表上面指定的一个结构体类 型,此时,也可以用 per 来定义变量。 (30)b 【解析】 getchar 函数的作用是从终端读入一个字符。 (31)b 【解析】 选项 a)中,定义的初值个数大于数组的长度;选项 c)中,数组名后少了中括号;选项 d)中,整型数 组不能赋予字符串。 (32)a 【解析】 在给 p 和 q 数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组 p 和 q 都有 3 个字符,所以长度均为 3。
(33)a 【解析】 函数 fun(char *s[],int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主 函数中执行 fun(ss,5)语句后,*ss[]={"xy", "bcc", "bbcc", "aabcc", "aaaacc"},ss[0],ss[4]的输出结果为 xy,aaaacc。 (34)c 【解析】函数 int f(int x)是一个递归函数调用,当 x 的值等于 0 或 1 时,函数值等于 3,其他情况下 y=x2-f(x-2), 所以在主函数中执行语句 z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。 (35)b 【解析】 考查指向字符串的指针变量。在该题中,指针变量 p 指向的应该是该字符串中的首地址,p+3 指 向的是字符串结束标志的地址,因而*(p+3)的值为 0。 (36)d 【解析】 本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它 存放下一结点的地址。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28349-6.html
坚定完毕
把辽宁号航母派过去