因此,正确答案是选项 b),它实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2 和 a=b。 (16)b 【解析】 由于在 main()函数中,变量 i=4,所以就调用 fun(4),则输出"m=4 k=4"。然后变量 k 增 1 等于 5, 变量 i 增 1 等于 5,所以 main()函数的"printf("i=%d k=%d",i,k);"语句输出"i=5 k=5" (17)b 【解析】 在本题中,选项 b)实际是先计算关系表达式"a<=c"的值是 0 还是 1,再比较该值与字符z之间 的大小关系,显然不能实现题目所要求的功能,而选项 a)、c)、d)都可以。 (18)b 【解析】 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终 结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。 本题中,由于前一个表达式的值为"假",所以,后面的表达式不再进行运算,因而 n 的值保持不变,仍为 2。
(19)b 【解析】 两个 if 语句的判断条件都不满足,程序只执行了 c=a 这条语句,所以变量 c 的值等于 3,变量 b 的值没有变化,程序输出的结果为 3,5,3。 (20)c 【解析】 c 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch 后面括 号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、 字符型或枚举型,各常量表达式各不相同。 (21)c 【解析】 本题考察变量的自加"++"和自减"--"问题。当 y 的值为 9、6 或 3 时,if 语句的条件成立,执行 输出语句,输出表达式--y 的值,y 的自减要先于输出语句执行,故输出结果为 8 5 2。 (22)c 【解析】 do while 语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,
但必须用花括号括起来。while 后必须要有分号作为语句的结束,在 do-while 循环中,不可以省略 while。 (23)d 【解析】 在程序中指针变量 p 初始指向 a[3],执行 p 减 1 后,p 指向 a[2],语句 y=*p 的作用是把 a[2]的值 赋给变量 y,所以输出为 y=3。 (24)b 【解析】 二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素 进行初始化;④省略第一维的定义,不省略第二维的定义。选项 b)等号右边分了 3 行,大于等号左边数组的行数 2。 (25)d 【解析】 c 语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数组之中;② 用字符 指针指向字符串, 然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时, 根据数组的类型 转换规则, 将其转换成字符指针。 本题 d)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。 (26)d 【解析】 c 语言中数组下标是从 0 开始的,所以二维数组 a[2][3]的第一维下标取值为 0、1;第二维的下 标取值为 0、1、2,因而选项 a)、b)、c)都是错误的,选项 d)表示数组元素 a[0][0]。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28349-20.html
好听